Kako implementirati odnos jedan na jedan u bazi podataka?
sobes.tech АИ
Одговор од АИ
Veza "jedan na jedan" u relacionoj bazi podataka realizuje se pomoću jedinstvenog ograničenja i spoljnog ključa. Najčešći načini:
-
Korišćenje zajedničkog primarnog ključa: Dve tabele koriste isto polje kao primarni ključ, koji je takođe spoljnji ključ koji se odnosi na primarni ključ druge tabele.
-
Korišćenje jedinstvenog spoljnjeg ključa: U jednoj od tabela se kreira polje koje je spoljnji ključ koji se odnosi na primarni ključ druge tabele, i na to polje se primenjuje ograničenje jedinstvenosti.
Primer sa zajedničkim primarnim ključem (u SQL Serveru):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // Ovo je i primarni ključ i spoljnji ključ
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Primer sa jedinstvenim spoljnjim ključem (u SQL Serveru):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // Primarni ključ UserInfo
UserId INT UNIQUE, // Jedinstveni spoljnji ključ koji se odnosi na Users
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Izbor između ovih pristupa zavisi od semantike podataka i pogodnosti pristupa. Povezivanje putem zajedničkog primarnog ključa često se koristi kada su podaci druge tabele opcionalno proširenje prve. Jedinstveni spoljnji ključ je fleksibilniji ako primarni ključevi tabela nisu inicijalno usklađeni.