MySQL ne sait pas et n'a pas besoin de savoir si une relation est 1-1 ou 1-plusieurs.
Aucun SQL ne prend en charge les relations plusieurs-plusieurs, toutes nécessitent une table intermédiaire qui divise une relation plusieurs-plusieurs en 2 séparer 1-plusieurs.
La différence réside dans la logique qui contrôle les relations, qui se trouve dans le code que vous écrivez.
Une relation 1-1 est maintenue en faisant en sorte que les tables partagent la même clé primaire (PK).
Avec le table secondaire déclarant que PK comme clé étrangère pointant vers les autres tables PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Le sens de la relation 1 -> many
vs many <- 1
est déterminé par l'emplacement du champ de lien.
Habituellement, chaque table a un id
unique et le champ de lien s'appelle tablename_id
.
La table qui contient le champ de lien est le many
côté de la relation, l'autre table est sur le 1
côté.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
En plaçant le champ lien dans le location
table, vous forcez les choses pour qu'un emplacement ne puisse avoir qu'un seul utilisateur. Cependant, un utilisateur peut avoir plusieurs emplacements.