Sobes.tech
Middle

Wie implementiert man eine Eins-zu-eins-Beziehung in einer Datenbank?

sobes.tech KI

Antwort von AI

Die "Eins-zu-eins"-Beziehung in einer relationalen Datenbank wird durch eine eindeutige Einschränkung und einen Fremdschlüssel realisiert. Die gebräuchlichsten Methoden:

  1. Verwendung eines gemeinsamen Primärschlüssels: Zwei Tabellen verwenden dasselbe Feld als Primärschlüssel, der auch ein Fremdschlüssel ist, der auf den Primärschlüssel der anderen Tabelle verweist.

  2. Verwendung eines eindeutigen Fremdschlüssels: In einer der Tabellen wird ein Feld erstellt, das ein Fremdschlüssel ist, der auf den Primärschlüssel einer anderen Tabelle verweist, und auf dieses Feld wird eine Eindeutigkeitsbeschränkung angewendet.

Beispiel mit gemeinsamem Primärschlüssel (in SQL Server):

CREATE TABLE UserProfiles (
    UserId INT PRIMARY KEY,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50)
);

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // Das ist auch der Primärschlüssel und der Fremdschlüssel
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Beispiel mit eindeutiger Fremdschlüssel (in SQL Server):

CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    Username NVARCHAR(50) UNIQUE
);

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Primärschlüssel von UserInfo
    UserId INT UNIQUE,         // Eindeutiger Fremdschlüssel, der auf Users verweist
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

Die Wahl zwischen diesen Ansätzen hängt von der Semantik der Daten und der Zugänglichkeit ab. Die Verbindung über einen gemeinsamen Primärschlüssel wird häufig verwendet, wenn die Daten der zweiten Tabelle eine optionale Erweiterung der ersten sind. Der eindeutige Fremdschlüssel ist flexibler, wenn die Primärschlüssel der Tabellen zunächst nicht übereinstimmen.