Question

Je veux créer une table d'amis avec des informations personnelles et connectez-vous sur les détails.

Quoi de mieux pour séparer la table des membres 2 tables, un contiennent peu de détails, deuxième avec d'autres détails.

ou rester dans une table?

j'ai beaucoup de tables qui contiennent la clé étrangère du membre.

Était-ce utile?

La solution

Cela dépend beaucoup de ce que ces détails « autres » sont. Ceci est une question commune et intéressante, et il n'y a pas de réponse « dure et rapide » au premier coup d'œil. Mais si nous pensons à la question plus abstraitement, au sujet de la relation réelle entre les attributs ( « détails ») de quelque chose de particulier que vous voulez représenter, nous pouvons trouver une certaine clarté.

Dans votre question, vous dire que les amis ont « autres » détails « minimum » et. Plutôt que de classer ces détails comme « minimale » ou « autre », nous allons les classer par si oui ou non une personne ( « atomique ») détail peut être entièrement déterminée par tout ce qui rend un ami unique.

Je présume qu'il ya une clé primaire (PK), comme friendID ou l'adresse e-mail ou quelque chose. Compte tenu de cet identifiant unique, demandez-vous: « Si je me donne exactement un friendID (ou e-mail ou tout ce que vous utilisez comme PK) ce que les détails de cet ami, je suis absolument sûr de Eg, étant donné friendID = 2112, je suis absolument? connaître le prénom de cet ami, le nom et la date de naissance, mais je ne pas absolument savoir le numéro de téléphone de cet ami, car il y a plus d'un d'entre eux.

Regrouper dans une table tous les détails que vous connaissez sans ambiguïté donné le PK. Mettez les détails dont vous avez besoin de plus de données (comme la « maison » ou « travail » dans le cas des numéros de téléphone) table « enfant » tables, assortie étrangères retour à « parent » sur le PK. (Note: Il est extrêmement probable que le PK de la table des enfants sera composite, c'est composé de la PK de table parent et le facteur de différenciation (comme « maison » ou « travail » dans cet exemple) clés composites pour les nombreux côté. des relations 1-M sont très bons.)

geeks de base de données appellent cette décomposition en fonction de dépendances fonctionnelles .

Autres conseils

Une table, sauf si vous avez besoin potentiellement d'associer un membre à plusieurs ensembles de détails (c.-à-plusieurs adresses e-mail, des groupes d'utilisateurs, de téléphones jour, de téléphones de nuit, téléphone cellulaire, etc.) .

Pas de doute:. Toujours divisé les tables quand il est logique de sens

Par exemple:   1 ami: Tom Jones vit dans la vallée   Ami 2: Erin Jones vit leur trop car il est son frère

tables:

Friends
Id  Name          Address
1   Tom Jones     1
2   Erin Jones    1

Adresses 
Id Address
1  The valley

Sinon, les choses vont toujours venir comme:

Friends
Id  Name          Address
1   Tom Jones     The Valey
2   Erin Jones    The Valley

Ce qui va conduire à des requêtes erronées.

C'est juste une question, il existe de nombreux. Comme quoi, si oui a 2 adresses e-mail et 3 numéros de téléphone cellulaire? Que faire si un changement de streetName et 5 amis y vivent?

Si vous êtes sûr de votre table sera petite, et vous ne devez pas l'interroger, que vous pouvez utiliser une seule table. Mais que vous pouvez simplement utiliser des Excell comme sw aussi, ou un morceau de papier pour cette matière: -)

Mais si vous voulez avoir une base de données, le traiter comme un.

En savoir plus sur Normalization la question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top