Juste un exemple, disons qu'un client
pourrait avoir plusieurs commandes
. C'est une relation un-plusieurs.
Lorsque je conçois des tables de base de données comme cet exemple, je finis toujours par me demander si je devrais avoir une table clients
ayant une order_id
clé étrangère ou devrais-je avoir la table orders
ayant une customer_id
clé étrangère . Quelle direction prendre?
Existe-t-il une règle ou une convention dans la conception de la base de données selon laquelle il est préférable de décider quelle table doit contenir une clé étrangère de l'autre table? (J'espère avoir clairement exprimé ma question avec cet exemple.)
Pour clarifier: je sais que je dois déclarer customer_id
dans le tableau orders
de mon exemple, mais je recherche une règle / convention ( s'il y en a) pour m'aider à l'avenir à décider facilement quelle table doit déclarer la colonne de clé étrangère en général.
3 Réponses :
Vous devriez avoir la table des commandes avec un Customer_id.
La raison pourquoi? Vous souhaitez ajouter des commandes à la table des commandes sans avoir à mettre à jour la table des clients. Vous ne souhaitez pas non plus conserver une liste des commandes du client.
Un client peut avoir plusieurs commandes, la clé étrangère est conçue pour autoriser plusieurs instances de la même valeur. J'espère que c'est la réponse dont vous aviez besoin
Oui, je comprends cela. Mais ce n'est que mon exemple, je suis en fait plus intéressé par une réponse qui pourrait dire "comment décider" en général quelle table doit déclarer la clé étrangère. Y a-t-il une règle ou une convention? Quelque chose comme (mon assuption) "déclare toujours la clé étrangère dans la table du côté X de la relation un-plusieurs".
Eh bien en général, dans le cas d'une relation un-plusieurs, le plusieurs devrait toujours avoir la clé étrangère déclarée. L'un est un enregistrement unique qui peut être utilisé plusieurs fois par la relation plusieurs. Par conséquent, le plus grand nombre doit toujours avoir une clé étrangère.
Dans une relation un-à-plusieurs, la clé étrangère (FK) est toujours dans la table "plusieurs", pointant vers la clé primaire (PK) de la table "un".
Si vous avez une relation plusieurs-à-plusieurs, vous devez créer une table de relations contenant les deux PK. Par exemple: un étudiant peut choisir plusieurs cours , un cours a plusieurs étudiants . La table de relations pourrait être appelée «Inscriptions» et contiendra les deux PK.
Regardez ici et ici , ou recherchez" normalisation de base de données relationnelle ".
Je pense que le verbe clé pour décider de ce qui va où est a (en cas de relation un-à-plusieurs). Si l'entité A a certaines entités B , la clé étrangère doit être déclarée sur le côté droit de la relation A strong > a B , c'est-à-dire dans B .