-1

我正在想一个好方法来建立某种调查。一个要求是问题会根据其他问题的值弹出,例如,如果用户回答 questionA 时的值为“YES”,那么接下来会询问他们questionX。然后这个答案需要是强制性的(虽然questionA它本身可能不是强制性的)。

现在我正在尝试决定是在数据库层上实现这些条件还是像limesurvey那样做:将简单的表达式添加到在运行时评估的问题中,所以对于questionX那个字段来说questionA.value == "YES",它可能会变得很复杂作为questionA.value == "YES" || (questionZ.value == "NO && questionF.value > 30).

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

4

1 回答 1

0

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

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

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

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

于 2013-08-07T16:27:22.797 回答