Mysql
 sql >> Database >  >> RDS >> Mysql

Uno a molti MySQL

MySQL non sa, né ha bisogno di sapere se una relazione è 1-1 o 1-molti.
Nessun SQL supporta relazioni molti-molti, tutti richiedono una tabella intermedia che divida una relazione molti-molti in 2 separare 1-molti.

La differenza sta nella logica che controlla le relazioni, che è nel codice che scrivi.
Una relazione 1-1 viene mantenuta facendo in modo che le tabelle condividano la stessa chiave primaria (PK).
Con il tabella secondaria che dichiara quella PK come chiave esterna che punta alle altre tabelle 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 direzione della relazione 1 -> many vs many <- 1 è determinato dalla posizione del campo del collegamento.

Di solito ogni tabella ha un id univoco e il campo del collegamento si chiama tablename_id .
La tabella che contiene il campo del collegamento è many lato della relazione, l'altra tabella si trova su 1 lato.

Table user
id: primary key
name......
.....

Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......

Inserendo il campo del collegamento nella location tabella, forzi le cose in modo che una posizione possa avere solo 1 utente. Tuttavia, un utente può avere molte posizioni.