2012-03-24 2 views
0

I перевод мой диаграммы 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

Не с ограничением CHECK, я думаю. Из [manual] (http://dev.mysql.com/doc/refman/5.6/en/create-table.html «CREATE TABLE (MySQL)»): * Предложение CHECK анализируется, но игнорируется всеми механизмами хранения данных . * –

ответ

1

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

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

Создание таблицы для хранения всего одного экземпляра (одна запись) является чем-то редким. У вас может быть ограничение между таблицей ORGANIZATIONS и MANAGERS, выражая, что у Организации может быть только один Менеджер. Сделайте это, определив FK из ORGANIZATIONS MANAGERS. Если вы хотите установить ограничение на то, что Организация всегда должна иметь Менеджер, добавьте NOT NULL в определение FK для MANAGERS.

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

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

Смежные вопросы