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.