Sobes.tech
Middle

Как да реализираме връзка един към един в база данни?

sobes.tech AI

Отговор от AI

Връзката "един към един" в релационна база данни се реализира чрез уникално ограничение и външен ключ. Най-често срещаните методи:

  1. Използване на общ първичен ключ: Двете таблици използват едно и също поле като първичен ключ, който също е външен ключ, сочещ към първичния ключ на другата таблица.

  2. Използване на уникален външен ключ: В една от таблиците се създава поле, което е външен ключ, сочещ към първичния ключ на друга таблица, и към това поле се налага ограничение за уникалност.

Пример с общ първичен ключ (в SQL Server):

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

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // Това е и първичен ключ, и външен ключ
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Пример с уникален външен ключ (в SQL Server):

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

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Първичен ключ на UserInfo
    UserId INT UNIQUE, // Уникален външен ключ, сочещ към Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

Изборът между тези подходи зависи от семантиката на данните и удобството при достъпа. Свързването чрез общ първичен ключ често се използва, когато данните във втората таблица са опционално разширение на първата. Уникалният външен ключ е по-гъвкав, ако първичните ключове на таблиците първоначално не съвпадат.