1
votes

Une question simple sur quelle table doit avoir la clé étrangère de l'autre table dans une relation sur plusieurs

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.


0 commentaires

3 Réponses :


0
votes

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


2 commentaires

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.



1
votes

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 ".


0 commentaires

0
votes

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 a B , c'est-à-dire dans B .


0 commentaires