Отношения против проверки ограничений - PullRequest
1 голос
/ 22 июня 2011

В моей базе данных есть таблица с именами и описаниями состояний (называемая Status).У меня есть две другие таблицы, VacancyRequest и ActionRequest, каждая из которых представляет разные типы сущностей, но каждая из которых имеет свой собственный статус.Возможные статусы одного объекта не обязательно совпадают с возможными статусами другого объекта.

Для обеспечения целостности, какой подход лучше?

  1. Создайте две дополнительные таблицы, VacancyRequestStatus и ActionRequestStatus, каждая с одним столбцом - StatusID.Эти две таблицы будут содержать только идентификаторы StatusID, применимые к их соответствующему типу объекта.Затем создайте отношение внешнего ключа между таблицами вакансий и действий и соответствующими таблицами состояния.Каждая таблица состояния будет иметь FK обратно к основной таблице состояния.

  2. Добавьте столбец в таблицу состояния, чтобы указать объект, к которому он относится (V для вакансии, A для действия).Используйте проверочные ограничения для таблиц вакансий и действий, чтобы убедиться, что любой StatusID, примененный к записи, подходит для этого типа объекта.

1 Ответ

2 голосов
/ 22 июня 2011

Поскольку статус действия и статус вакансии не связаны между собой, первый способ более прост.

...