gpt4 book ai didi

sql - 相同表之间的 2 种不同类型的关系

转载 作者:行者123 更新时间:2023-11-29 13:40:58 26 4
gpt4 key购买 nike

目前正在构建一个系统,允许站点管理员构建自定义步骤问卷。主要实体是 stepsstep_optionsStep 是问卷中的实际步骤 step_options 是可以在该步骤中选择的选项。

sub-steps 的概念是一个步骤如何作为另一个步骤的子步骤附加。 sub-steps 也可以附加到 step-option

这让我在选项和步骤之间存在一些循环依赖。

  • 一个步骤有很多选项
  • 一个步骤可以属于一个步骤
  • 一个步骤可以属于一个选项

所以一个步骤既有很多,也可能属于一个选项。目前这是我的表结构。

steps:
- id
- title
- parent_id (step_id)
- option_id
...

step_options:
- id
- step_id
- name
...

这是解决此问题的正确方法吗?我还考虑过为属于选项的步骤添加一个中间表 (option_step)。我有点费劲的一件事是查询所有“根”步骤,这些步骤没有 parent_idoption_id,以及它们的所有选项和属于选项的步骤。

最佳答案

模型看起来不错。这是一个经典的层次模型,例如员工和经理。

  • 为什么在步骤表中有 option_id?您可以使用 (where step_id = step.id) 查询 option_step 表以获取多个选项。我假设每个 step_option 都是唯一的。并且 step_option 不能属于多个步骤。

替代方法是说您有一些对几个步骤通用的“选项”。如果是这种情况,您可以创建一个新对象 option_group 作为

id    PK of option_group

然后在“step_options”中而不是 step_id 中放置 option_group_id。

现在在“步骤”表中,您也可以提及 option_group_id。

通过以上内容,您可以开始在几个步骤中共享选项集合。

关于sql - 相同表之间的 2 种不同类型的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483995/

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