Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Поддержание ссылочной целостности

Автор вопроса: DaveОтветов: 2

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

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?

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

ddlreferential-integrity

Ответы

Ответ 1 · рейтинг 1 · Charles Bretana

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

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

Ответ 2 · рейтинг 2 · Community

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы