php - 如何定义表记录组之间的关系?

标签 php mysql cakephp join

我正在开发一个应用程序,该应用程序通过网络界面对用户的问题进行调查。这些问题是独立的,但可能会根据之前问题的答案显示或隐藏问题。

考虑以下架构:

问题 -> 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”相关的逻辑。

最好的方法是什么?

编辑:这是一张在视觉上松散地显示关系的图像。

detail visual

最佳答案

关于OrAnd,当一个组拥有两个运算符时,您将如何确定运算顺序的优先级?只是从上到下吗?

这是我将用作基于“从上到下”操作顺序的数据库模式:

逻辑规则(一行代表您问题的图像)

  • 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/

相关文章:

unit-testing - 我如何在 CakePHP 2.0 中测试 Add 函数

php - 使用此内部连接获取数据时遇到问题 (MYSQL/PHP)

php - Nginx 将新文件 www-data 设置为所有者而不是我的用户

mysql - 如何使用另一行中的值填充所有行中的空列

php - 使用 PHP 比较数据库中的值

cakephp - 如何获取以 UTF-8 编码的 cakePHP i18n .pot 文件?

php - INSERT 语句不起作用 Concrete5

php - 在一个 SQL 查询中更新多个表

mysql - 只获取表中存在的行?

CakePHP:使用自定义数组提供 paginate()