sql >> Database >  >> RDS >> Mysql

Een op veel MySQL

MySQL weet niet, en hoeft ook niet te weten of een relatie 1-1 of 1-veel is.
Geen enkele SQL ondersteunt veel-veel-relaties, ze vereisen allemaal een tussenliggende tabel die een veel-veel-relatie in 2 splitst. scheid 1-veel.

Het verschil zit in de logica die de relaties bestuurt, namelijk in de code die u schrijft.
Een 1-1-relatie wordt onderhouden door de tabellen dezelfde primaire sleutel (PK) te laten delen.
Met de secundaire tabel die verklaart dat PK als een externe sleutel verwijst naar de andere tabellen PK.

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

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

De richting van de relatie 1 -> many vs many <- 1 wordt bepaald door de locatie van het linkveld.

Gewoonlijk heeft elke tafel een unieke id en het linkveld heet tablename_id .
De tabel met het linkveld is de many kant van de relatie, de andere tabel staat op de 1 kant.

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

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

Door het linkveld in de location . te plaatsen table, forceer je dingen zodat een locatie maar 1 gebruiker kan hebben. Een gebruiker kan echter veel locaties hebben.



  1. Bulk invoegen en id's terugkrijgen laravel

  2. Sjablonen gebruiken in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 16

  3. Aankondiging van repmgr 2.0RC2

  4. PHP-commando's niet synchroon fout