Kuidas rakendada andmebaasis üks-ühele seost?
sobes.tech AI
Vastus AI-lt
Seose "üks ühe" relatsioon andmebaasis realiseeritakse unikaalse piirangu ja välise võtme abil. Kõige levinumad viisid:
-
Ühise primaarvõtme kasutamine: Kaks tabelit kasutavad sama välja primaarvõtmena, mis on samaaegselt välisvõti, viidates teise tabeli primaarvõtmele.
-
Unikaalne välisvõti: Ühes tabelis luuakse väli, mis on välisvõti, viidates teise tabeli primaarvõtmele, ning sellele kehtestatakse unikaalsuspiirang.
Näide ühise primaarvõtmega (SQL Server):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // See on ka primaarvõti ja välisvõti
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Näide unikaalse välisvõtmega (SQL Server):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // UserInfo primaarvõti
UserId INT UNIQUE, // Unikaalne välisvõti, viidates Users tabelile
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Valik nende meetodite vahel sõltub andmete semantikast ja ligipääsetavusest. Ühise primaarvõtme kasutamine on sageli sobiv, kui teise tabeli andmed on valikulise laiendusena esimesele. Unikaalne välisvõti on paindlikum, kui tabelite primaarvõtmed ei kattu algselt.