外键约束MySQL与WHERE部分

时间:2012-11-13 10:59:27

标签: mysql database-design

是否可以根据WHERE部分制定外键约束以禁止关系?

这可能听起来不是那么简单,所以我将尝试用一个例子来解释。

我们有2个'正常'表:

  • Person
  • Task

他们之间的N:M关系:

  • Team

一项任务,可以在下方拥有多项任务。所以我们制作一个'树'顺序。如果它是'团队',task内也是布尔值:isTeam;例如:

  • 清洁(isTeam: true
    • 楼下清洁厕所(isTeam: false
    • 楼上清洁厕所(isTeam: false
    • 擦拭一楼(isTeam: false
    • 擦拭二楼(isTeam: false
  • 晚餐(isTeam: true
    • 准备食物(isTeam: false
    • 准备表格(isTeam: false
    • 等。 (isTeam: false

Person is in a Team (Team is one task with subtasks 图片:人员在一个团队中(团队是一个具有(可能的)子任务的任务,并且isTeam = true)

Team表格显示某个task的负责人,其中包含子tasks。 应该应用的限制:Person只能在Task s Task时附加到isTeam=true

这可能吗?

PS(我在想,是否可以使用view只选择Tasks isTeam=true来完成?)

1 个答案:

答案 0 :(得分:0)

在此模型中, closure table 用于表示树。

  • Leaf节点(任务)有JobType = 'P'(需要人)
  • 其他节点有JobType = 'T'(需要团队)
  • 小组是分配到作业的一组人。
  • 团队仅分配给职位 JobType = 'T'
  • 可以将分配给多个团队
  • 只能分配给任务JobType = 'P'
  • 只有当也是任务 - 祖先团队的成员时,才能为分配任务。

enter image description here