Sobes.tech
Middle

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:

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

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