sql >> Base de Datos >  >> RDS >> Mysql

Uno a muchos MySQL

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.