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

En til mange MySQL

MySQL ved det ikke, og behøver heller ikke at vide, om en relation er 1-1 eller 1-mange.
Ingen SQL understøtter mange-mange-relationer, alle kræver en mellemtabel, som deler en mange-mange-relation i 2 adskille 1-mange.

Forskellen ligger i logikken, der styrer relationerne, som er i den kode, du skriver.
En 1-1 relation opretholdes ved at tabellerne deler den samme primære nøgle (PK).
Med sekundær tabel, der erklærer, at PK er en fremmednøgle, der peger på de andre tabeller PK.

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

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

Retningen af ​​forholdet 1 -> many vs many <- 1 bestemmes af placeringen af ​​linkfeltet.

Normalt har hver tabel et unikt id og linkfeltet hedder tablename_id .
Tabellen, der har linkfeltet i sig, er many siden af ​​forholdet, er den anden tabel på 1 side.

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

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

Ved at placere linkfeltet i location tabel, tvinger du ting, så en lokation kun kan have 1 bruger. En bruger kan dog have mange placeringer.



  1. Øg værdien i MySQL-opdateringsforespørgsel

  2. MySQL Deltag, hvor det ikke findes

  3. Hvordan ville jeg oprette denne matrixstruktur i en HTML-form?

  4. PHP/mySQL - hvordan man henter indlejrede rækker i multidimensinal array