MySQL ved det ikke, og behøver heller ikke at vide, om en relation er 1-1 eller 1-mange.
Ingen SQL understøtter mange-mange-relationer, alle kræver en mellemtabel, som deler en mange-mange-relation i 2 adskille 1-mange.
Forskellen ligger i logikken, der styrer relationerne, som er i den kode, du skriver.
En 1-1 relation opretholdes ved at tabellerne deler den samme primære nøgle (PK).
Med sekundær tabel, der erklærer, at PK er en fremmednøgle, der peger på de andre tabeller PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Retningen af forholdet 1 -> many
vs many <- 1
bestemmes af placeringen af linkfeltet.
Normalt har hver tabel et unikt id
og linkfeltet hedder tablename_id
.
Tabellen, der har linkfeltet i sig, er many
siden af forholdet, er den anden tabel på 1
side.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Ved at placere linkfeltet i location
tabel, tvinger du ting, så en lokation kun kan have 1 bruger. En bruger kan dog have mange placeringer.