【发布时间】:2017-07-23 03:33:27
【问题描述】:
由于我正处于为我的一个项目设置数据库的最后阶段,我想到了一个需要添加到任务表中的额外约束(见下图),但我不确定如何这可以在 MySQL 中实现。
原始数据库架构(无标记): Click here.
为每个作业 (job) 分配一个 WBS 代码列表 (wbscodelist)。这些列表中的每一个都包含许多适用于该工作的 WBS 代码 (wbscodeitem)。一个例子是:
Job A uses WBS Code List #1
Job B uses WBS Code List #2
Job C uses WBS Code List #1
etc.
WBS Code List #1 has codes: [100, 105, 110, 115, 120]
WBS Code List #2 has codes: [2180, 2190]
etc.
目前,task.fk_wbsCodeItemID 是wbscodeitem.wbsCodeItemID 的外键(标记为橙色)。
我在这里面临的问题是 task 可能使用不适用于 job 的 WBS 代码。
我想进一步限制task.fk_wbsCodeItemID,以便它可以采用的值取决于wbscodeitem.fk_wbsCodeListID 和job.wbscodeitem.fk_wbsCodeListID 在该工作中是否相等(标记为红色)。
如何在 MySQL 中为此数据库架构包含此约束?这个问题可能是由于这个数据库的当前设计(我需要改变它)吗?
我知道这可能需要更多细节,因此我可以在必要时提供更多细节或澄清。
【问题讨论】:
-
我更喜欢将约束逻辑放在app代码中,而不是尝试使用FK的有限能力。
标签: mysql database database-design relational-database