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.