保持参照完整性

时间:2008-12-11 14:07:07

标签: ddl referential-integrity

鉴于架构:

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 个答案:

答案 0 :(得分:2)

我在SCHEDULE表上使用插入触发器。

答案 1 :(得分: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 }

这也带来了好处,因为您并不是不可饶恕地为他们适用的机器类型的计划键入规则。您将单独保留此关联,并且如有必要,可以决定使用相同的规则集(对于多个计算机类型的计算机,同一计划...