我正在开发一个应用程序,该应用程序通过网络界面对用户的问题进行调查。这些问题是独立的,但可能会根据之前问题的答案显示或隐藏问题。
考虑以下架构:
问题 -> hasMany -> LogicGroup -> hasMany -> LogicCondition
LogicGroup 是一组条件 (LogicCondition)。每个条件可能类似于:
Question 1 answered 'A'
Question 2 answered 'D'
基于这两项都得到满足,用户正在解决的问题将向他们显示。否则,它将被隐藏。
所以本质上,问题将有 1 个或多个“LogicGroup”,每个“LogicGroup”包含 1 个或多个“LogicCondition”。
我主要遇到的问题
这些 LogicGroup 和 LogicCondition 中的每一个都可以是 AND/OR/或两者的组合。我不确定如何编码/构建允许数据库定义两个组是否通过“AND”或“OR”相关的逻辑。
最好的方法是什么?
编辑:这是一张在视觉上松散地显示关系的图像。
最佳答案
关于Or与And,当一个组拥有两个运算符时,您将如何确定运算顺序的优先级?只是从上到下吗?
这是我将用作基于“从上到下”操作顺序的数据库模式:
逻辑规则(一行代表您问题的图像)
- ID
- 描述
logicrulesgroups(一行代表图像中的组 1 或组 2)
- ID
- logicrules_id(FK 到逻辑规则)
- 描述
- sort_value(为第一个组分配 1,为同一逻辑规则 ID 的每个后续组递增)
- 运算符(值:AND、OR、null(当 sort_value = 1 时使用 null))
条件(一行代表一组的单个问题)
- ID
- logicrulesgroups_id(外键到logicrulesgroups)
- sort_value(第一个问题分配为 1,对于同一逻辑规则组 ID 的每个后续问题,sort_value 都会递增)
- question_id
- 运算符(值:AND、OR、null(当 sort_value = 1 时使用 null))
问题
- ID
- 描述
- 无论您的其余字段是什么
Cakephp 术语:
- 逻辑规则
- 有许多逻辑规则组
- 逻辑规则组
- 属于逻辑规则
- 有很多条件
- 条件
- 属于 LogicRulesGroup
- 属于问题
- 问题
- 有很多条件
关于php - 如何定义表记录组之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28081680/