Вы можете иметь два типа родительско-дочерних отношений.
- Идентификационные отношения : Здесь ребенок зависит от родителя, который идентифицирует себя. Например, Проект требует, чтобы Сотрудник существовал. Здесь Project должен иметь часть EmployeeId своего первичного ключа или EmployeeId в качестве первичного ключа. Если EmployeeId является первичным ключом проекта, сотрудник может иметь только один проект.
CREATE TABLE Employee
(
EmployeeId INT,
EmployeeName VARCHAR(255) NOT NULL,
PRIMARY KEY(EmployeeId)
)
GO
CREATE TABLE EmployeeProject
(
EmployeeId INT,
EmployeeName VARCHAR(255) NOT NULL,
PRIMARY KEY(EmployeeId),
FOREIGN KEY (EmployeeId) REFERENCES Employee(EmployeeId),
)
GO
Неидентифицирующая связь : Здесь ребенок не зависит от родителя, чтобы идентифицировать себя. Например, проект может быть определен без сотрудника. Здесь Project может иметь EmployeeId в качестве внешнего ключа. Если EmployeeId - это столбец NOT NULL, то наличие сотрудника обязательно. Если EmployeeId - это столбец NULL, то наличие сотрудника не обязательно.
CREATE TABLE Employee
(
EmployeeId INT,
EmployeeName VARCHAR(255) NOT NULL,
PRIMARY KEY(EmployeeId)
)
GO
CREATE TABLE EmployeeProject
(
EmployeeProjectId INT,
EmployeeName VARCHAR(255) NOT NULL,
EmployeeId INT NOT NULL, -- Can be NULL, if it is not mandatory
PRIMARY KEY(EmployeeProjectId),
FOREIGN KEY (EmployeeId) REFERENCES Employee(EmployeeId),
)
GO