Sobes.tech
Middle

Jak implementovat vztah jeden k jednomu v databázi?

sobes.tech AI

Odpověď od AI

Vazba "jeden k jednomu" v relační databázi se realizuje pomocí unikátního omezení a cizího klíče. Nejčastější způsoby:

  1. Použití společného primárního klíče: Dvě tabulky používají stejné pole jako primární klíč, které je také cizím klíčem odkazujícím na primární klíč jiné tabulky.

  2. Použití unikátního cizího klíče: V jedné z tabulek je vytvořeno pole, které je cizím klíčem odkazujícím na primární klíč jiné tabulky, a na toto pole je uplatněno omezení unikátnosti.

Příklad se společným primárním klíčem (v SQL Server):

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

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // To je také primární klíč a cizí klíč
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Příklad s unikátním cizím klíčem (v SQL Server):

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

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Primární klíč UserInfo
    UserId INT UNIQUE, // Unikátní cizí klíč odkazující na Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

Volba mezi těmito přístupy závisí na sémantice dat a na pohodlí přístupu. Připojení přes společný primární klíč se často používá, když data druhé tabulky jsou volitelným rozšířením první. Unikátní cizí klíč je flexibilnější, pokud primární klíče tabulek zpočátku neodpovídají.