несколько ключей ограничения
-
21-09-2019 - |
Вопрос
если у меня есть таблица:
- Ресурс (идентификатор (PK), имя)
- Менеджер (id (PK), resource_id (FK), manager_resource_ID(FK))
Должны ли resource_id и manager_id оба быть внешними ключами в Ресурс таблица.
я, очевидно, не хочу вводить какие-либо значения в каждый из этих столбцов, которые не являются надлежащими ресурсами
когда я добавляю первое отношение (resource_id <-> id) это работает нормально, но
когда я добавляю второй (manager_resource_id <-> id) он завершается с ошибкой:
Не удается создать отношения [ ...] Оператор ALTER TABLE конфликтовал с ограничением ВНЕШНЕГО КЛЮЧА [...].Конфликт произошел в табличном ресурсе, идентификатор столбца
или мне нужно разбить это на 3 таблицы?
Ресурс (идентификатор, первый, последний)
Resource_manager (идентификатор, resource_id, manager_ID менеджера)
Менеджер (id)
Решение
Просто намек:
Обновить:
Если в вашей модели сотрудник-менеджер относится ко многим (немного необычно), то вы могли бы сделать:
CREATE TABLE Employee
(
EmployeeID int NOT NULL
,[Name] varchar(50)
)
go
ALTER TABLE Employee ADD
CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmployeeID ASC)
go
CREATE TABLE Manager
(
EmployeeID int NOT NULL
,ManagerID int NOT NULL
)
go
ALTER TABLE Manager ADD
CONSTRAINT PK_Manager PRIMARY KEY CLUSTERED (EmployeeID ASC, ManagerID ASC)
,CONSTRAINT FK1_Manager FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
,CONSTRAINT FK2_Manager FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID)
,CONSTRAINT chk_Manager CHECK (EmployeeID <> ManagerID)
go
Другие советы
Вы должны создать внешние ключи в таблице Manager.