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

时间:2015-01-22 05:15:09

标签: php mysql cakephp join

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

考虑以下架构:

问题 - > hasMany - > LogicGroup - > hasMany - > LogicCondition

LogicGroup是一组条件(LogicCondition)。每种情况都可能是这样的:

Question 1 answered 'A'
Question 2 answered 'D'

基于这两个方面的实现,将向用户显示用户正在接近的问题。否则,它将被隐藏。

基本上,这个问题将包含一个或多个“逻辑组”,其中每个逻辑组包含一个或多个“逻辑组合”'。

我正在努力解决的问题

这些LogicGroup和LogicCondition中的每一个都可以是AND / OR /或两者的组合。我不确定如何编写/构建逻辑,允许数据库通过' AND'来定义两个组是否相关。或者'或者'。

这样做的最佳方式是什么?

编辑:这是一个图像,可以直观地展示这种关系。

detail visual

1 个答案:

答案 0 :(得分:0)

关于,当集团同时拥有两个运营商时,您如何优先考虑运营顺序?从上到下?

以下是我将用作“自上而下”操作顺序的数据库模式:

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

  • ID
  • 描述

logicrulesgroups (一行代表图片中的第1组或第2组)

  • ID
  • logicrules_id(FK to logicrules)
  • 描述
  • sort_value(为第一个组分配1,为相同logicrules_id的每个后续组增加)
  • 运算符(值:AND,OR,null(sort_value = 1时使用null))

条件(一行代表一个组的单个问题)

  • ID
  • logicrulesgroups_id(FK to logicrulesgroups)
  • sort_value(第一个问题分配为1,对于相同的logicrulesgroups_id的每个后续问题,sort_value都会递增)
  • question_id
  • 运算符(值:AND,OR,null(sort_value = 1时使用null))

<强>问题

  • ID
  • 描述
  • 无论你的其他领域是

Cakephp术语:

  • LogicRule
    • hasMany LogicRulesGroup
  • LogicRulesGroup
    • belongsTo LogicRule
    • hasMany Condition
  • 条件
    • belongsTo LogicRulesGroup
    • belongsTo Question
  • 问题
    • hasMany Condition