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

Conception de la base de données :table des membres séparée ou tout dans une seule table ?

Cela dépend beaucoup de ce que sont ces "autres" détails. C'est une question courante et intéressante, et il n'y a pas de réponse « dure et rapide » à première vue. Mais si nous pensons au problème de manière plus abstraite, à propos de la relation réelle entre les attributs ("détails") de toute chose particulière que vous souhaitez représenter, nous pouvons trouver une certaine clarté.

Dans votre question, vous indiquez que les amis ont des détails "minimaux" et "autres". Plutôt que de classer ces détails comme «minimaux» ou «autres», classons-les selon qu'un détail individuel («atomique») peut ou non être entièrement déterminé par ce qui rend un ami unique.

Je suppose qu'il y a une clé primaire (PK), comme FriendID ou une adresse e-mail ou quelque chose. En tenant compte de cet identifiant unique, demandez-vous :"Si on me donne exactement un FriendID (ou un e-mail ou tout ce que vous utilisez comme PK), de quels détails de cet ami suis-je absolument sûr ? Par exemple, étant donné FriendID=2112, je suis absolument connaître le prénom, le nom et la date de naissance de cet ami, mais je ne le sais pas connaissez absolument le numéro de téléphone de cet ami, car il y en a plusieurs.

Regroupez dans un tableau tous les détails que vous connaissez sans ambiguïté compte tenu de la PK. Mettez les détails pour lesquels vous avez besoin de plus de données (comme "domicile" ou "travail" dans le cas des numéros de téléphone) dans des tables "enfants", avec une clé étrangère vers la table "parent" sur le PK. (Remarque :il est extrêmement probable que la clé PK de la table enfant soit composite ; c'est-à-dire composée de la clé PK de la table parent et du facteur de différenciation (comme "maison" ou "travail" dans cet exemple). Clés composites pour le côté multiple des relations 1-M sont très bonnes.)

Les geeks des bases de données appellent cette décomposition basée sur les dépendances fonctionnelles .