gpt4 book ai didi

mysql - 带 WHERE 部分的外键约束 MySQL

转载 作者:行者123 更新时间:2023-11-29 03:41:27 25 4
gpt4 key购买 nike

是否可以根据WHERE部分做一个外键约束来禁止关系?

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

我们有 2 个“普通”表:

  • 任务

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

  • 团队

一个任务,可以在其“下方”有多个任务。所以我们做了一个“树”顺序。如果是“团队”,task 中还有一个 bool 值: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。应适用的限制:当 TaskisTeam=true 时,Person 只能附加到 Task >.

这可能吗?

PS(我在想,是否可以使用 view 仅选择具有 isTeam=trueTasks 来完成?)

最佳答案

在此模型中, closure table 用来表示一棵树。

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

enter image description here

关于mysql - 带 WHERE 部分的外键约束 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com