2012-11-13 41 views
2

是否有可能根据WHERE部分使外键约束禁止关系?外键约束MySQL与WHERE部分

这可能听起来不是很直接,所以我会试着用一个例子来解释。

我们已经有了2 '正常' 表:

  • Person
  • Task

和正:

  • Team
  • :他们槽m之间的关系

一个任务可以在其下面有多个任务。所以我们做一个'树'命令。同样在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 Image:人员处于小组(球队是一个任务与(可能)子任务,并且isTeam = true)

Team表格显示某个task的负责人,其中有tasks。 应该应用的限制:A Person只能附加到TaskTask s isTeam=true

这可能吗?

PS(我在想,能不能做到用一个view只选择TasksisTeam=true?)

回答

0

在这个模型中,closure table用来代表一棵树。

  • 叶节点(任务)具有JobType = 'P'(需要人)
  • 其他节点JobType = 'T'(需要团队)
  • 是一组分配给工作人。
  • 只分配给工作JobType = 'T'
  • 一个可以被分配到多个
  • 可以仅分配给任务JobType = 'P'
  • 一个可分配只有当也是任务的祖先团队成员的任务。

enter image description here