O MySQL não sabe, nem precisa saber se um relacionamento é 1-1 ou 1-muitos.
Nenhum SQL suporta relacionamentos muitos-muitos, todos requerem uma tabela intermediária que divide um relacionamento muitos-muitos em 2 separar 1-muitos.
A diferença está na lógica que controla os relacionamentos, que está no código que você escreve.
Um relacionamento 1-1 é mantido fazendo com que as tabelas compartilhem a mesma chave primária (PK).
Com o tabela secundária declarando aquela PK como chave estrangeira apontando para as outras tabelas PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
A direção do relacionamento
1 -> many
vs many <- 1
é determinado pela localização do campo de link. Normalmente, cada tabela tem um
id
exclusivo e o campo de link é chamado tablename_id
.A tabela que contém o campo de link é a
many
lado do relacionamento, a outra tabela está no 1
lateral. Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Colocando o campo de link no
location
table, você força as coisas para que um local possa ter apenas 1 usuário. No entanto, um usuário pode ter muitos locais.