Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :plusieurs tables ou une table avec plusieurs colonnes ?

Chaque fois que les informations sont individuelles (chaque utilisateur a un nom et un mot de passe), il est probablement préférable de les avoir dans une seule table, car cela réduit le nombre de jointures que la base de données devra effectuer pour récupérer les résultats. Je pense que certaines bases de données ont une limite sur le nombre de colonnes par table, mais je ne m'en soucierais pas dans des cas normaux, et vous pouvez toujours le diviser plus tard si vous en avez besoin.

Si les données sont un-à-plusieurs (chaque utilisateur a des milliers de lignes d'informations d'utilisation), elles doivent être divisées en tables séparées pour réduire les données en double (les données en double gaspillent de l'espace de stockage, de l'espace de cache et rendent la base de données plus difficile à maintenir ).

Vous trouverez peut-être l'article de Wikipedia sur la normalisation de la base de données intéressant, car il en explique les raisons en profondeur :

La normalisation de la base de données est le processus d'organisation des champs et des tables d'une base de données relationnelle afin de minimiser la redondance et la dépendance. La normalisation implique généralement de diviser de grandes tables en tables plus petites (et moins redondantes) et de définir des relations entre elles. L'objectif est d'isoler les données afin que les ajouts, les suppressions et les modifications d'un champ puissent être effectués dans une seule table, puis propagés dans le reste de la base de données via les relations définies.

Dénormalisation est également quelque chose dont il faut être conscient, car il y a des cas où la répétition des données est meilleure (puisque cela réduit la quantité de travail que la base de données doit faire lors de la lecture des données). Je vous recommande vivement de normaliser vos données autant que possible pour commencer, et de ne les dénormaliser que si vous avez connaissance de problèmes de performances dans des requêtes spécifiques.