Поддержание ссылочной целостности - PullRequest
2 голосов
/ 11 декабря 2008

С учетом схемы:

MACHINE_TYPE { machine_type }
MACHINE { machine, machine_type }
SORT_PLAN { sort_plan, machine_type }
SCHEDULE { day_of_week, machine, sort_plan }

и бизнес-правило:

План сортировки может быть назначен любому машина того же типа.

Как обеспечить, чтобы в SCHEDULE кортежи, на которые ссылаются machine и sort_plan , имели одинаковый machine_type ?

При необходимости схема может быть изменена.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2008

Я бы использовал триггер вставки в таблицу SCHEDULE.

1 голос
/ 11 декабря 2008

Вы можете изменить таблицу плана, чтобы она не имела MachineType, и добавить новую таблицу с именем machinePlan, в которой есть строка для каждой машины, которая может использовать этот план, с MachineId и PlanId. Затем выведите MachineType для плана из таблицы родительских компьютеров этой новой таблицы, а не из самой таблицы планов.

Наконец, измените таблицу расписания так, чтобы она вернулась к этой новой таблице MachinePlan, а не как у вас сейчас

MACHINE_TYPE { machine_type }
MACHINE { machine, machine_type }
SORT_PLAN { sort_plan}
MACHINE_SORTPLAN {machine, sort_plan }
SCHEDULE { day_of_week, machine_Sortplan }

Это также имеет дополнительное преимущество в том, что вы НЕ вводите безвозвратно правила для плана, к которому они относятся. Вы сохраняете эту связь отдельно и при необходимости можете принять решение использовать один и тот же набор правил (тот же план для машин более чем одного типа машин ...

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