2008-12-11 3 views
2

Учитывая схему:Поддержание ссылочной целостности

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

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

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

Как обеспечить соблюдение, что в ГРАФИК кортежи ссылается машины и sort_plan имеют один и тот же machine_type?

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

ответ

1

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

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

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

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

2

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

+0

Это была моя первая мысль, но мне кажется, – Dave 2008-12-11 14:17:18

+0

Просто убедитесь, что триггер может обрабатывать несколько вводов записей. – HLGEM 2008-12-11 14:29:06

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

  • Нет связанных вопросов^_^