Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Um para muitos MySQL


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.