同一表之间有 2 种不同类型的关系



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

有一个sub-steps的概念,即一个步骤作为另一个步骤的子步骤附加的方式。也可以sub-steps附加到step-option

这让我在选项和步骤之间产生了一些循环依赖关系。

  • 选项has-many步骤
  • 一个步骤可以belong-to一个步骤
  • 一个步骤可以belong-to一个选项

因此,一个步骤既有很多,又可能属于一个选项。目前这是我拥有的表格结构。

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

这是正确的方法吗?我还考虑过可能为步骤添加一个中间表(option_step),而不是属于一个选项。我有些挣扎的一件事是查询所有"根"步骤,没有parent_idoption_id的步骤,以及它们的所有选项和属于选项的步骤。

模型似乎很好。 这是一个经典的分层模型,例如员工和经理。

  • 为什么步骤表中有option_id? 您可以使用(其中 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。

有了上面,您可以开始在几个步骤之间共享一组选项。

最新更新