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:
-
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.
-
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í.