MySQL не знае, нито трябва да знае дали връзката е 1-1 или 1-много.
Нито един SQL не поддържа много-много релации, всички изискват междинна таблица, която разделя релация много-много на 2 отделете 1-много.
Разликата е в логиката, която контролира връзките, която е в кода, който пишете.
Връзката 1-1 се поддържа, като таблиците споделят един и същ първичен ключ (PK).
С вторична таблица, декларираща този PK като външен ключ, сочещ към другите таблици PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Посоката на връзката 1 -> many
срещу many <- 1
се определя от местоположението на полето за връзка.
Обикновено всяка таблица има уникален id
и полето за връзка се нарича tablename_id
.
Таблицата, в която има полето за връзка, е many
страна на връзката, другата таблица е на 1
страна.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Като поставите полето за връзка в location
таблица, вие форсирате нещата, така че местоположението може да има само 1 потребител. Потребителят обаче може да има много местоположения.