Вопрос

Учитывая схему:

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

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

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

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

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

Это было полезно?

Решение

Вы можете изменить таблицу плана, чтобы в ней не было 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 }

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top