MySQL nie wie ani nie musi wiedzieć, czy relacja wynosi 1-1 czy 1 wiele.
Żaden SQL nie obsługuje relacji wiele-wiele, wszystkie wymagają tabeli pośredniej, która dzieli relację wiele-wiele na 2 oddziel 1 wiele.
Różnica polega na logice sterującej relacjami, która znajduje się w napisanym przez Ciebie kodzie.
Relacja 1-1 jest utrzymywana dzięki temu, że tabele mają wspólny klucz podstawowy (PK).
W przypadku tabela dodatkowa deklarująca ten PK jako klucz obcy wskazujący na inne tabele PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Kierunek relacji 1 -> many
vs many <- 1
zależy od lokalizacji pola linku.
Zwykle każda tabela ma unikalny id
a pole linku nazywa się tablename_id
.
Tabela zawierająca pole link to many
po stronie relacji, druga tabela znajduje się po stronie 1
z boku.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Umieszczając pole linku w location
tabeli, wymuszasz, aby lokalizacja mogła mieć tylko 1 użytkownika. Jednak użytkownik może mieć wiele lokalizacji.