当前正在构建一个系统,以允许站点管理员构建自定义步骤问卷。主要实体是steps
和step_options
。Step
是调查问卷中的实际步骤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_id
或option_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。
有了上面,您可以开始在几个步骤之间共享一组选项。