Mysql
 sql >> Datenbank >  >> RDS >> Mysql

One-to-Many-MySQL

MySQL weiß nicht und muss es auch nicht wissen, ob eine Beziehung 1-1 oder 1-viele ist.
Kein SQL unterstützt viele-viele-Beziehungen, alle benötigen eine Zwischentabelle, die eine viele-viele-Beziehung in 2 aufteilt separate 1-viele.

Der Unterschied liegt in der Logik, die die Beziehungen steuert, also im Code, den Sie schreiben.
Eine 1-1-Beziehung wird aufrechterhalten, indem die Tabellen denselben Primärschlüssel (PK) teilen.
Mit dem sekundäre Tabelle, die diese PK als Fremdschlüssel deklariert, der auf die anderen Tabellen PK zeigt.

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

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

Die Richtung der Beziehung 1 -> many vs many <- 1 wird durch die Position des Linkfeldes bestimmt.

Normalerweise hat jede Tabelle eine eindeutige id und das Linkfeld heißt tablename_id .
Die Tabelle, die das Link-Feld enthält, ist many Seite der Beziehung befindet sich die andere Tabelle auf der 1 Seite.

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

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

Indem Sie das Linkfeld an der location platzieren Tabelle, erzwingen Sie Dinge, sodass ein Standort nur 1 Benutzer haben kann. Ein Benutzer kann jedoch viele Standorte haben.