Hogyan valósítható meg egy egy az egyben kapcsolat az adatbázisban?
sobes.tech MI
Válasz az MI-től
Az "egy-hez-egy" kapcsolat egy relációs adatbázisban egyedi korlátozás és idegen kulcs segítségével valósítható meg. A leggyakoribb módszerek:
-
Közös elsődleges kulcs használata: Két tábla ugyanazt a mezőt használja elsődleges kulcsként, amely egyben idegen kulcsként is működik, és hivatkozik a másik tábla elsődleges kulcsára.
-
Egyedi idegen kulcs használata: Az egyik táblában létrehozunk egy olyan mezőt, amely idegen kulcsként hivatkozik egy másik tábla elsődleges kulcsára, és erre a mezőre egyediségi korlátozást alkalmazunk.
Példa közös elsődleges kulccsal (SQL Server):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // Ez egyben elsődleges kulcs és idegen kulcs
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Példa egyedi idegen kulccsal (SQL Server):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // UserInfo elsődleges kulcsa
UserId INT UNIQUE, // Egyedi idegen kulcs, amely a Users-re hivatkozik
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
A választás ezek között az megközelítések között az adatok szemantikájától és az elérhetőség kényelmétől függ. A közös elsődleges kulcs szerinti kapcsolat gyakran akkor használatos, amikor a második tábla adatai opcionális kiterjesztése az elsőnek. Az egyedi idegen kulcs rugalmasabb, ha a táblák elsődleges kulcsai kezdetben nem egyeznek meg.