2

是否可以根据WHERE零件制作外键约束来禁止关系?

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

我们有 2 个“正常”表:

  • Person
  • Task

以及它们之间的 N:M 关系:

  • Team

一项任务,可以在其自身“下方”有多个任务。所以我们做了一个“树”顺序。如果它是一个“团队”,那么 inside也是task一个布尔值:isTeam; 例如:

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

人在一个团队中(团队是一个包含子任务的任务 图片:人员在一个团队中(团队是一个具有(可能)子任务的任务,并且 isTeam=true)

Team表显示了某个 的负责人task,其中有 sub tasks。应该应用的限制: APerson只能附加到 aTaskTasks isTeam=true

这可能吗?

PS(我在想,可以使用view仅选择Tasks哪些来完成isTeam=true吗?)

4

1 回答 1

0

在这个模型中,闭包表用于表示一棵树。

  • 叶节点(Task)有JobType = 'P'(需要人)
  • 其他节点有JobType = 'T'(需要团队)
  • Team是分配给Job的一组人。
  • 团队仅分配具有JobType = 'T'
  • 一个可能被分配到多个团队
  • 人员只能分配给任务JobType = 'P'
  • 只有当该也是任务祖先团队的成员时,才能为该人分配任务

在此处输入图像描述

于 2012-11-13T16:51:33.403 回答