Kann jemand erklären, wie man Eins-zu-Eins-, Eins-zu-Viele- und Viele-zu-Viele-Beziehungen implementiert, während man Tabellen mit einigen Beispielen entwirft?
sql
oracle
database-design
Arsenal
quelle
quelle
Antworten:
Eins-zu-eins: Verwenden Sie einen Fremdschlüssel für die referenzierte Tabelle:
Sie müssen auch eine eindeutige Einschränkung für die Fremdschlüsselspalte (
addess.student_id
) festlegen, um zu verhindern, dass sich mehrere Zeilen in der untergeordneten Tabelle (address
) auf dieselbe Zeile in der referenzierten Tabelle (student
) beziehen .Eins-zu-viele : Verwenden Sie einen Fremdschlüssel auf der vielen Seite der Beziehung, die mit der "einen" Seite verknüpft ist:
Viele-zu-Viele : Verwenden Sie eine Junction-Tabelle ( Beispiel ):
Beispielabfragen:
quelle
student
bestimmten An vereinfachenaddress
.student_classes
Zeile sollte nur eine Eins-zu-Eins-Beziehung haben. WennstudentA
inclassA
und istclassB
, sollten zwei Zeilen vorhanden seinstudent_classes
, eine für welche Beziehung.Hier sind einige Beispiele aus der Praxis für die Arten von Beziehungen:
Eins zu eins (1: 1)
Eine Beziehung ist genau dann eins zu eins, wenn ein Datensatz aus Tabelle A mit maximal einem Datensatz in Tabelle B verknüpft ist.
Um eine Eins-zu-Eins-Beziehung herzustellen, muss der Primärschlüssel von Tabelle B (ohne verwaisten Datensatz) der Sekundärschlüssel von Tabelle A (mit verwaisten Datensätzen) sein.
Beispielsweise:
Eins zu viele (1: M)
Eine Beziehung ist genau dann eins zu viele, wenn ein Datensatz aus Tabelle A mit einem oder mehreren Datensätzen in Tabelle B verknüpft ist. Ein Datensatz in Tabelle B kann jedoch nicht mit mehr als einem Datensatz in Tabelle A verknüpft werden.
Um eine Eins-zu-Viele-Beziehung herzustellen, muss der Primärschlüssel von Tabelle A (die "Eins" -Tabelle) der Sekundärschlüssel von Tabelle B (die "Viele" -Tabelle) sein.
Beispielsweise:
Viele zu viele (M: M)
Eine Beziehung ist genau dann viele-zu-viele, wenn ein Datensatz aus Tabelle A mit einem oder mehreren Datensätzen in Tabelle B verknüpft ist und umgekehrt.
Um eine Viele-zu-Viele-Beziehung herzustellen, erstellen Sie eine dritte Tabelle mit dem Namen "ClassStudentRelation", die die Primärschlüssel von Tabelle A und Tabelle B enthält.
quelle
Eins zu viele
Die Eins-zu-Viele-Tabellenbeziehung sieht wie folgt aus:
In einem relationalen Datenbanksystem verknüpft eine Eins-zu-Viele-Tabellenbeziehung zwei Tabellen basierend auf einer
Foreign Key
Spalte im untergeordneten Element, diePrimary Key
auf die der übergeordneten Tabellenzeile verweist .Im obigen Tabellendiagramm hat die
post_id
Spalte in derpost_comment
Tabelle eineForeign Key
Beziehung zur Spalte mit derpost
Tabellen-IDPrimary Key
:Eins zu eins
Die Eins-zu-Eins-Tabellenbeziehung sieht wie folgt aus:
In einem relationalen Datenbanksystem verknüpft eine Eins-zu-Eins-Tabellenbeziehung zwei Tabellen basierend auf einer
Primary Key
Spalte im untergeordnetenForeign Key
Element, die auchPrimary Key
auf die übergeordnete Tabellenzeile verweist .Daher können wir sagen, dass die untergeordnete Tabelle die
Primary Key
mit der übergeordneten Tabelle teilt .Im obigen Tabellendiagramm hat die
id
Spalte in derpost_details
Tabelle auch eineForeign Key
Beziehung zurpost
Tabellenspalteid
Primary Key
:Viel zu viel
Die Viele-zu-Viele-Tabellenbeziehung sieht wie folgt aus:
In einem relationalen Datenbanksystem verknüpft eine Viele-zu-Viele-Tabellenbeziehung zwei übergeordnete Tabellen über eine untergeordnete Tabelle, die zwei
Foreign Key
Spalten enthält , die auf diePrimary Key
Spalten der beiden übergeordneten Tabellen verweisen .Im obigen Tabellendiagramm hat die
post_id
Spalte in derpost_tag
Tabelle auch eineForeign Key
Beziehung zurpost
Tabellen-ID-Primary Key
Spalte:Die
tag_id
Spalte in derpost_tag
Tabelle hat eineForeign Key
Beziehung zur Spalte mit dertag
Tabellen-IDPrimary Key
:quelle
Eins-zu-eins-Beziehung (1-1): Dies ist die Beziehung zwischen Primär- und Fremdschlüssel (Primärschlüssel für Fremdschlüssel nur ein Datensatz). Dies ist eine Eins-zu-Eins-Beziehung.
Eins-zu-viele-Beziehung (1-M): Dies ist auch die Beziehung zwischen Primär- und Fremdschlüsselbeziehungen, hier jedoch Primärschlüssel, der sich auf mehrere Datensätze bezieht (dh Tabelle A enthält Buchinformationen und Tabelle B enthält mehrere Herausgeber eines Buches).
Viele zu viele (MM): Viele zu viele enthalten zwei Dimensionen, die im Folgenden anhand eines Beispiels ausführlich erläutert werden.
quelle