Sobes.tech
Middle

Kā īstenot vienu ar vienu saistītu attiecību datu bāzē?

sobes.tech AI

Atbilde no AI

Relācijas "viens pret vienu" saistība relāciju datu bāzē tiek īstenota ar unikāla ierobežojuma un ārējā atslēgas palīdzību. Visbiežāk sastopamie veidi:

  1. Kopīgas primārās atslēgas izmantošana: Divas tabulas izmanto vienu un to pašu lauku kā primāro atslēgu, kas arī ir ārējā atslēga, kas atsaucas uz citas tabulas primāro atslēgu.

  2. Unikāla ārējā atslēga: Vienā no tabulām tiek izveidots lauks, kas ir ārējā atslēga, atsaucoties uz citas tabulas primāro atslēgu, un šim laukam tiek piemērots unikāla ierobežojuma.

Piemērs ar kopīgu primāro atslēgu (SQL Server):

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

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // Tas ir arī primārā atslēga, un ārējā atslēga
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Piemērs ar unikālu ārējo atslēgu (SQL Server):

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

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // UserInfo primārā atslēga
    UserId INT UNIQUE,         // Unikāla ārējā atslēga, kas atsaucas uz Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

Izvēle starp šīm pieejām ir atkarīga no datu semantikas un piekļuves ērtības. Izmantošana kopīgas primārās atslēgas bieži tiek izmantota, kad otrās tabulas dati ir neobligāts pirmās paplašinājums. Unikāla ārējā atslēga ir elastīgāka, ja sākotnēji tabulu primārās atslēgas nesakrīt.