Database
 sql >> Datenbank >  >> RDS >> Database

Was ist eine 1:1-Beziehung in einer Datenbank?

Was ist eine Eins-zu-eins-Beziehung bei der Datenmodellierung? Wie implementieren Sie diese Beziehung in einer Datenbank? Die Beispiele in diesem Artikel beantworten diese Fragen.

Es gibt drei Arten von Beziehungen zwischen Entitäten (Tabellen) in der Datenmodellierung:

  • Eins-zu-viele-Beziehungen (auch als 1:M bezeichnet).
  • Many-to-Many-Beziehungen (M:N).
  • Eins-zu-eins-Beziehungen (1:1).

Der häufigste Beziehungstyp ist eine Eins-zu-Viele-Beziehung, bei der auf einen Datensatz in einer Entität von mehreren Datensätzen in einer anderen Entität verwiesen werden kann. Ein weiterer häufiger Typ ist eine Viele-zu-Viele-Beziehung. Diese Art von Beziehung wird nur in logischen Datenmodellen verwendet. In einer physikalischen Datenbank muss es durch Eins-zu-Viele-Beziehungen und eine Verknüpfungstabelle implementiert werden.

In diesem Artikel besprechen wir die dritte Art von Beziehungen:die Eins-zu-Eins-Beziehung . Dies ist der seltenste Beziehungstyp in einem Datenmodell. Wir geben Beispiele für Eins-zu-Eins-Beziehungen, zeigen die Notation für Eins-zu-Eins-Beziehungen in einem ER-Diagramm und diskutieren Eins-zu-Eins-Beziehungen in der Praxis.

Beispiele für Eins-zu-Eins-Beziehungen

Erstens, was ist eine Eins-zu-Eins-Beziehung? Es ist eine Beziehung, bei der ein Datensatz in einer Entität (Tabelle) mit genau einem Datensatz in einer anderen Entität (Tabelle) verknüpft ist.

Sehen wir uns einige reale Beispiele für Eins-zu-eins-Beziehungen an:

  • Land - Hauptstadt :Jedes Land hat genau eine Hauptstadt. Jede Hauptstadt ist die Hauptstadt genau eines Landes.
  • Person – ihre Fingerabdrücke . Jede Person hat einen einzigartigen Satz von Fingerabdrücken. Jeder Satz Fingerabdrücke identifiziert genau eine Person.
  • E-Mail - Benutzerkonto . Bei vielen Websites ist eine E-Mail-Adresse genau einem Benutzerkonto zugeordnet und jedes Benutzerkonto wird durch seine E-Mail-Adresse identifiziert.
  • Ehepartner - Ehepartner :In einer monogamen Ehe hat jede Person genau einen Ehepartner.
  • Benutzerprofil - Benutzereinstellungen . Ein Benutzer hat einen Satz von Benutzereinstellungen. Ein Satz von Benutzereinstellungen ist genau einem Benutzer zugeordnet.

Zur Verdeutlichung stellen wir diese Beispiele Beziehungen gegenüber, die keine Eins-zu-Eins-Beziehungen sind:

  • Land - Stadt: Jede Stadt liegt in genau einem Land, aber die meisten Länder haben viele Städte.
  • Elternteil - Kind :Jedes Kind hat zwei Eltern, aber jeder Elternteil kann viele Kinder haben.
  • Mitarbeiter - Manager :Jeder Mitarbeiter hat genau einen direkten Vorgesetzten oder Manager, aber jeder Manager beaufsichtigt normalerweise viele Mitarbeiter.

Bezeichnung einer Eins-zu-Eins-Beziehung in einem ER-Diagramm

Eine Eins-zu-eins-Beziehung in einem ER-Diagramm wird wie alle Beziehungen durch eine Linie gekennzeichnet, die die beiden Entitäten verbindet. Die „Eins“-Kardinalität wird mit einer einzelnen geraden Linie bezeichnet. (Die „viele“ Kardinalität wird mit einem Krähenfußsymbol gekennzeichnet.)

Die Eins-zu-eins-Beziehung zwischen Land und Hauptstadt kann wie folgt bezeichnet werden:

Die senkrechten geraden Linien bedeuten „obligatorisch “. Dieses Diagramm zeigt, dass eine Hauptstadt zwingend ein Land haben muss und dass ein Land zwingend eine Hauptstadt haben muss.

Eine andere Möglichkeit besteht darin, dass eine oder beide Seiten der Beziehung optional sind . Eine optionale Seite ist mit einem offenen Kreis gekennzeichnet. Dieses Diagramm besagt, dass es eine Eins-zu-Eins-Beziehung zwischen einer Person und ihren Fingerabdrücken gibt. Eine Person ist obligatorisch (Fingerabdrücke müssen einer Person zugewiesen werden), aber Fingerabdrücke sind optional (einer Person dürfen keine Fingerabdrücke in der Datenbank zugewiesen sein).

Eins-zu-Eins-Beziehungen in einer physischen Datenbank

Es gibt einige Möglichkeiten, eine Eins-zu-Eins-Beziehung in einer physischen Datenbank zu implementieren.

Primärschlüssel als Fremdschlüssel

Eine Möglichkeit, eine Eins-zu-eins-Beziehung in einer Datenbank zu implementieren, besteht darin, in beiden Tabellen denselben Primärschlüssel zu verwenden. Zeilen mit demselben Wert im Primärschlüssel sind verwandt. In diesem Beispiel ist Frankreich ein country mit der id 1 und seine Hauptstadt ist in der Tabelle capital unter id 1.

country

id Name
1 Frankreich
2 Deutschland
3 Spanien

capital

Technisch gesehen muss einer der Primärschlüssel als Fremdschlüssel gekennzeichnet werden, wie in diesem Datenmodell:

Der Primärschlüssel in der Tabelle capital ist auch ein Fremdschlüssel, der auf die ID-Spalte in der Tabelle Land verweist . Seit capital.id ein Primärschlüssel ist, ist jeder Wert in der Spalte eindeutig, sodass die Hauptstadt höchstens auf ein Land verweisen kann. Es muss auch auf ein Land verweisen – es ist ein Primärschlüssel, also kann er nicht leer gelassen werden.

Zusätzlicher Fremdschlüssel mit Unique Constraint

Eine andere Möglichkeit, eine Eins-zu-Eins-Beziehung in einer Datenbank zu implementieren, besteht darin, eine neue Spalte hinzuzufügen und sie zu einem Fremdschlüssel zu machen.

In diesem Beispiel fügen wir die Spalte country_id hinzu in der Tabelle capital . Die Hauptstadt mit id 1, Madrid, ist mit Land 3, Spanien, verbunden.

country

id Name
1 Frankreich
2 Deutschland
3 Spanien

capital

id Name country_id
1 Madrid 3
2 Berlin 2
3 Paris 1

Genau genommen die Spalte country_id sollte ein Fremdschlüssel sein, der auf id verweist Spalte in der Tabelle country . Da jede Hauptstadt genau einem Land zugeordnet werden soll, sollten Sie die Fremdschlüsselspalte country_id machen einzigartig.

Eins-zu-Eins-Beziehungen in der Praxis

Nur wenige Eins-zu-Eins-Beziehungen halten

Eins-zu-Eins-Beziehungen sind die seltenste Beziehungsart. Einer der Gründe dafür ist, dass es im wirklichen Leben nur sehr wenige Eins-zu-eins-Beziehungen gibt. Außerdem sind die meisten Eins-zu-eins-Beziehungen nur für eine gewisse Zeit eins-zu-eins. Wenn Ihr Modell eine Zeitkomponente enthält und den Änderungsverlauf erfasst, wie es sehr oft der Fall ist, haben Sie nur sehr wenige Eins-zu-Eins-Beziehungen.

Eine monogame Beziehung kann auseinanderbrechen oder einer der Partner stirbt. Wenn Sie die Realität monogamer Beziehungen (wie Ehen oder eingetragene Lebenspartnerschaften) im Laufe der Zeit modellieren, müssen Sie wahrscheinlich die Tatsache modellieren, dass sie nur für einen bestimmten Zeitraum bestehen.

Man könnte meinen, dass sich eine Person und ihre Fingerabdrücke nie ändern. Aber was ist, wenn die Person einen Finger verliert oder der Finger stark verbrannt ist? Ihre Fingerabdrücke könnten sich ändern. Es ist kein sehr häufiges Szenario; Bei einigen Modellen müssen Sie dies jedoch möglicherweise berücksichtigen.

Sogar etwas scheinbar so Stabiles wie Länder und ihre Hauptstädte verändern sich im Laufe der Zeit. Beispielsweise war Bonn nach dem Zweiten Weltkrieg die Hauptstadt der Bundesrepublik Deutschland, als Berlin Teil der DDR war. Dies änderte sich nach der deutschen Wiedervereinigung; die Hauptstadt von Deutschland (Bundesrepublik Deutschland) ist jetzt Berlin. Ob Sie dies berücksichtigen sollten oder nicht, hängt von Ihrer Geschäftsrealität und der Anwendung ab, an der Sie arbeiten.

Ein realisierbares 1:1-Szenario:Optionale Teile der Tabelle

Ich kann mir ein machbares Szenario für eine echte Eins-zu-Eins-Beziehung vorstellen:optionale Teile einer Tabelle. Stellen Sie sich vor, Sie haben die Tabelle user mit Benutzerdaten. Die Tabelle enthält allgemeine Benutzerinformationen wie Benutzernamen, E-Mail-Adressen und Anmeldedaten. Es enthält auch Benutzereinstellungen wie das Farbdesign oder die automatische Anmeldung für diese App. Die meisten Benutzer haben jedoch keine Benutzereinstellungen; Sie verwenden die Standardeinstellungen.

user

id Name E-Mail Anmeldedatum Design Autologin
1 Nathanael Talbot [email protected] 2020-12-12 dunkel wahr
2 Talitha Yates [email protected] 2020-12-14
3 Markus Weir [email protected] 2020-12-15 Licht falsch
4 Nathalie Hays [email protected] 2020-12-18
5 Maurice-Kirche [email protected] 2020-12-20
6 Arwa Valdez [email protected] 21.12.2020

Diese Tabelle enthält viele leere Felder. Sie könnten den user Tabelle in zwei Tabellen:user und user_settings , das Informationen zu Benutzereinstellungen für diejenigen enthält, die diese ausgewählt haben.

user

id Name E-Mail Anmeldedatum Design Autologin
1 Nathanael Talbot [email protected] 2020-12-12 dunkel wahr
2 Talitha Yates [email protected] 2020-12-14
3 Markus Weir [email protected] 2020-12-15 Licht falsch
4 Nathalie Hays [email protected] 2020-12-18
5 Maurice-Kirche [email protected] 2020-12-20
6 Arwa Valdez [email protected] 21.12.2020

user_settings

user_id Design Autologin
1 dunkel wahr
3 Licht falsch

Das Aufteilen von Daten in zwei Tabellen macht die Tabellenabfrage komplexer:Sie müssen Daten aus beiden Tabellen verknüpfen. Auf der anderen Seite der Hauptnutzer Tabelle ist einfacher zu verwalten.

Weitere Informationen zu Datenbankbeziehungen

Eine Eins-zu-eins-Beziehung ist eine Beziehung, bei der ein Datensatz in einer Tabelle genau einem Datensatz in einer anderen Tabelle zugeordnet ist. Diese Art von Beziehung ist im wirklichen Leben selten. Wenn Sie Zeit in Ihr Datenmodell aufnehmen, werden viele 1:1-Beziehungen zu 1:n- oder n:n-Beziehungen. Das häufigste Szenario für die Verwendung einer Eins-zu-Eins-Beziehung in einer Datenbank ist die Aufteilung einer Tabelle in zwei:eine mit obligatorischen Spalten, die andere mit optionalen Spalten.

Wenn Ihnen dieser Artikel gefallen hat, sehen Sie sich andere Artikel über Eins-zu-Viele- und Viele-zu-Viele-Beziehungen in unserem Blog an.

Wenn Sie ein Student sind, der Datenbankkurse belegt, erstellen Sie unbedingt ein kostenloses Academic-Konto in Vertabelo, unserem Online-Tool zum Zeichnen von ER-Diagrammen. Mit Vertabelo können Sie logische und physische ER-Diagramme direkt in Ihrem Browser zeichnen. Es unterstützt PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift und andere relationale Datenbanken. Probieren Sie es aus und sehen Sie, wie einfach der Einstieg ist!