MySQL neví a ani nepotřebuje vědět, jestli je vztah 1-1 nebo 1-many.
Žádné SQL nepodporuje vztahy mnoho-mno, všechny vyžadují přechodnou tabulku, která rozděluje vztah mnoho-mnoho na 2 oddělte 1-mnoho.
Rozdíl je v logice, která řídí vztahy, což je v kódu, který píšete.
Vztah 1-1 je udržován tím, že tabulky sdílejí stejný primární klíč (PK).
S sekundární tabulka deklarující tento PK jako cizí klíč ukazující na ostatní tabulky PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Směr vztahu 1 -> many
vs many <- 1
je určeno umístěním pole odkazu.
Obvykle má každá tabulka jedinečné id
a pole odkazu se nazývá tablename_id
.
Tabulka, která obsahuje pole odkazu, je many
straně vztahu, druhá tabulka je na 1
straně.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Umístěním pole odkazu do location
tabulky, vynutíte věci tak, že umístění může mít pouze 1 uživatele. Uživatel však může mít mnoho umístění.