MySQL no sabe, ni necesita saber si una relación es 1-1 o 1-muchos.
Ningún SQL admite relaciones muchos-muchos, todos requieren una tabla intermedia que divide una relación muchos-muchos en 2 separar 1-muchos.
La diferencia está en la lógica que controla las relaciones, que está en el código que escribe.
Se mantiene una relación 1-1 al hacer que las tablas compartan la misma clave principal (PK).
Con el tabla secundaria que declara que PK es una clave externa que apunta a las otras tablas PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
La dirección de la relación 1 -> many
vs many <- 1
está determinado por la ubicación del campo de enlace.
Por lo general, cada tabla tiene un id
único y el campo de enlace se llama tablename_id
.
La tabla que tiene el campo de enlace es la many
lado de la relación, la otra tabla está en el 1
lado.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Al colocar el campo de enlace en la location
table, fuerza las cosas para que una ubicación solo pueda tener 1 usuario. Sin embargo, un usuario puede tener muchas ubicaciones.