当前正在构建一个允许站点管理员构建自定义步骤调查表的系统。主要实体是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
的步骤及其所有选项以及属于这些选项的步骤
答案 0 :(得分:0)
模型看起来不错。这是经典的分层模型,例如员工和经理。
替代者将说您有一些“选项”,这些“选项”在几个步骤中是很常见的。在这种情况下,您可以创建一个新对象option_group作为
id PK of option_group
,然后在“ step_options”中将step_id放在option_group_id中。
现在在“步骤”表中,您也可以提及option_group_id。
通过上面的步骤,您可以在几个步骤中开始共享选项集。