sql >> Databasteknik >  >> RDS >> Mysql

En till många MySQL

MySQL vet inte och behöver inte heller veta om en relation är 1-1 eller 1-många.
Ingen SQL stöder många-många-relationer, alla kräver en mellantabell som delar upp en många-många-relation i 2 separera 1-många.

Skillnaden ligger i logiken som styr relationerna, vilket finns i koden som du skriver.
En 1-1 relation upprätthålls genom att tabellerna delar samma primärnyckel (PK).
Med sekundär tabell som förklarar att PK är en främmande nyckel som pekar på de andra tabellerna PK.

Table chinese_mother (
id integer primary key,
name....
   

Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id

Riktningen för relationen 1 -> many kontra many <- 1 bestäms av platsen för länkfältet.

Vanligtvis har varje tabell ett unikt id och länkfältet heter tablename_id .
Tabellen som har länkfältet i sig är many sidan av relationen är den andra tabellen på 1 sida.

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

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

Genom att placera länkfältet i location tabell, tvingar du saker så att en plats bara kan ha 1 användare. En användare kan dock ha många platser.



  1. Väljer alla poster från ett år sedan till nu

  2. SQL-satsen ignorerar where-parametern

  3. Oracle String Functions (fullständig lista)

  4. Optimeringströsklar – gruppering och aggregering av data, del 3