Как да реализираме връзка един към един в база данни?
sobes.tech AI
Отговор от AI
Връзката "един към един" в релационна база данни се реализира чрез уникално ограничение и външен ключ. Най-често срещаните методи:
-
Използване на общ първичен ключ: Двете таблици използват едно и също поле като първичен ключ, който също е външен ключ, сочещ към първичния ключ на другата таблица.
-
Използване на уникален външен ключ: В една от таблиците се създава поле, което е външен ключ, сочещ към първичния ключ на друга таблица, и към това поле се налага ограничение за уникалност.
Пример с общ първичен ключ (в 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)
);
Изборът между тези подходи зависи от семантиката на данните и удобството при достъпа. Свързването чрез общ първичен ключ често се използва, когато данните във втората таблица са опционално разширение на първата. Уникалният външен ключ е по-гъвкав, ако първичните ключове на таблиците първоначално не съвпадат.