在 PHP/MySQL 中表示一组条件查询


Representing a set of conditional questinaires in PHP/MySQL

我正在尝试做一个网络应用程序,它会向最终用户询问一系列问题。基于此,他们将得到另一个系列/一组问题,这些问题分支成一棵树。

举个例子。系统会询问用户 2 个问题:

Q1: 你多大了? a(0 - 18 b(18-35 c(35-55 d( 55+Q2: 你抽烟吗? a( 是 b( 否

如果用户选择 A|A,他们会被问到

一组新问题,如果他们被问到 A|B,他们会被问到另一个问题,依此类推。

我很难想出一种在 MySQL 中表示它的方法。困难主要在于巩固这样一个事实,即对 Q1 的回答"a"+ 对 Q2 的回答"b"进入下一组问题。

我在这里问了一个类似的问题:stackOverFlow。

但我对结果不满意,这可能是我的例子,所以我在这里详细说明了。

这在调查社区中称为"路由"。

我之前在调查引擎中实现它的方式是在调查中有一个完整的问题列表,没有任何规则就可以让用户回答所有问题。

然后,您将属性附加到问题中的每个答案,然后在提交每个问题时,检查所选答案的属性,并查看它是否说明是否禁用调查中的任何未来问题。

完成此操作后,您可以使用一些类似于"GetNextQuestion(("的逻辑,这将检查受访者已制定的所有规则(即哪些问题被禁用(,然后显示下一个可用问题供他们回答。

从技术和管理的角度来看,这是一个复杂的过程。

数据库结构将涉及一个问题表、一个答案表,然后是一个 AnswerDisablesQuestion 表,该表将保存 AnswerID,以及用于 Answer Disdisable 的问题 ID。