Sobes.tech
Middle

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:

  1. 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.

  2. 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.