Hoe implementeer je een een-op-een relatie in een database?
sobes.tech AI
Antwoord van AI
De "één-op-één" relatie in een relationele database wordt geïmplementeerd met behulp van een unieke beperking en een buitenlandse sleutel. De meest voorkomende methoden:
-
Gebruik van een gemeenschappelijke primaire sleutel: Twee tabellen gebruiken hetzelfde veld als primaire sleutel, dat ook een buitenlandse sleutel is die verwijst naar de primaire sleutel van de andere tabel.
-
Gebruik van een unieke buitenlandse sleutel: In een van de tabellen wordt een veld aangemaakt dat een buitenlandse sleutel is die verwijst naar de primaire sleutel van een andere tabel, en op dit veld wordt een uniekheidsbeperking toegepast.
Voorbeeld met een gemeenschappelijke primaire sleutel (in SQL Server):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // Dit is ook de primaire sleutel en de buitenlandse sleutel
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Voorbeeld met een unieke buitenlandse sleutel (in SQL Server):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // Primaire sleutel van UserInfo
UserId INT UNIQUE, // Unieke buitenlandse sleutel die verwijst naar Users
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
De keuze tussen deze benaderingen hangt af van de semantiek van de gegevens en het gemak van toegang. Verbinding via een gemeenschappelijke primaire sleutel wordt vaak gebruikt wanneer de gegevens van de tweede tabel een optionele uitbreiding van de eerste zijn. Een unieke buitenlandse sleutel is flexibeler als de primaire sleutels van de tabellen niet aanvankelijk overeenkomen.