Я хочу добавить это ограничение на мою схему - PullRequest
0 голосов
/ 25 марта 2012

Я перевожу свою диаграмму ER в схему, однако я пришел к этой таблице, где у меня есть только 1 главный менеджер или 1 запись в ней

CREATE TABLE Managers
(
SIN int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK ?????
)

так, кто-нибудь знает, как вставить это ограничение в схему?

1 Ответ

1 голос
/ 25 марта 2012

Вы должны будете добавить TRIGGER, чтобы проверить это ограничение.

Прежде чем вы начнете программировать этот триггер, я думаю, что ваша модель данных может быть дополнительно оптимизирована.МЕНЕДЖЕРЫ должны иметь FK для таблицы СОТРУДНИКОВ.Таблица EMPLOYEES (и CUSTOMERS) должна иметь FK для таблицы PEOPLE.

Создание таблицы для хранения только одного экземпляра (одной записи) является чем-то редким.Между таблицами ORGANIZATIONS и MANAGERS может существовать ограничение, означающее, что в организации может быть только один менеджер.Сделайте это путем определения FK от ОРГАНИЗАЦИЙ до МЕНЕДЖЕРОВ.Если вы хотите применить ограничение, согласно которому у Организации всегда должен быть менеджер, добавьте NOT NULL в определение FK для MANAGERS.

CREATE TABLE ORGANISATIONS (
   Id          INTEGER     NOT NULL,
   ...
   ManagerId   INTEGER     NOT NULL,
   ...
 )

Когда вы делаете это таким образом, вам не нуженспусковой крючок.Триггеры могут быть хитрыми.Когда вы можете избежать их использования, не используйте их.Это «темная материя» в базе данных.В вашей базе данных вы можете найти вещи, которые никто не вводил.Высоки шансы, что это работа какого-то неясного триггера.Иногда, когда вы изменяете таблицу, определенные на ней триггеры могут становиться неактивными.Внезапно ваша база данных перестает функционировать так, как должна ... Темная материя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...