Ako implementovať vzťah jeden ku jednému v databáze?
sobes.tech AI
Odpoveď od AI
Väzba "jeden ku jednom" v relačnej databáze sa realizuje pomocou jedinečného obmedzenia a cudzieho kľúča. Najbežnejšie spôsoby:
-
Použitie spoločného primárneho kľúča: Dve tabuľky používajú rovnaké pole ako primárny kľúč, ktorý je tiež cudzie kľúč, odkazujúci na primárny kľúč druhej tabuľky.
-
Použitie jedinečného cudzieho kľúča: V jednej z tabuliek sa vytvorí pole, ktoré je cudzie kľúč, odkazujúci na primárny kľúč inej tabuľky, a na toto pole sa aplikuje obmedzenie jedinečnosti.
Príklad s spoločným primárnym kľúčom (v SQL Server):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // Toto je aj primárny kľúč a cudzie kľúč
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Príklad s jedinečným cudzieho kľúčom (v SQL Server):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // Primárny kľúč UserInfo
UserId INT UNIQUE, // Jedinečný cudzie kľúč, odkazujúci na Users
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Výber medzi týmito prístupmi závisí od sémantiky dát a pohodlia prístupu. Prepojenie pomocou spoločného primárneho kľúča sa často používa, keď údaje druhej tabuľky sú voliteľným rozšírením prvej. Jedinečný cudzie kľúč je flexibilnejší, ak primárne kľúče tabuliek zpočiatku neodpovedajú.