调查数据库设计 - 基于其他问题答案的条件问题

时间:2013-08-07 14:56:04

标签: database-design survey conditional

我正在考虑建立一种调查的好方法。一个要求是根据其他问题的值弹出问题,例如,如果用户回答问题A的值为“是”,那么在未来的路上他们会被问到questionX。然后,这个答案必须是强制性的(虽然questionA本身可能不是强制性的。)

现在我正在尝试决定是否在数据库层上实现这些条件,或者像limesurvey那样做:向运行时评估的问题添加简单表达式,因此questionX该字段将是questionA.value == "YES",但它可能会变得像questionA.value == "YES" || (questionZ.value == "NO && questionF.value > 30)那样复杂。

除了在运行时手动解析这些表达式时出现的明显复杂情况,还有其他问题我可能会忘记吗?

1 个答案:

答案 0 :(得分:0)

我敢肯定,如果你问10个人,你会得到10个不同的答案,但我会将调查逻辑放在应用程序层而不是数据库中。

从个人经验来看,性能很可能不是您最大的挑战。围绕业务规则维护代码将是最困难的事情。

我的建议是将规则/逻辑放在应用程序层中,以便您可以很好地维护应用程序。将这种逻辑放在数据库中会非常复杂。

在运行时评估if语句和布尔表达式是否会对性能产生影响。只是确保你没有过多地循环数据集,我相信你会没事的。