用于处理OR条件的数据库表

时间:2015-08-12 16:31:32

标签: sql sql-server database

我目前有一个系统,根据用户提供的某些答案显示某些部分。目前我把它设计为:

标识--- --- SectionId --- QuestionId回答

例如,如果用户回答问题12的Y,我将启用第21节。如果他们对13和14都回答了Y,那么第22节将被启用。

1 --- 21 --- 12 --- Y
2 --- 22 --- 13 --- Y
2 --- 22 --- 14 --- Y

这工作正常,最近我开始接收基于OR条件的请求。我正在考虑将表格更改为以下设计,但想要反馈,如果有更好的方法来解决这个问题:

Id---SectionId---ConditionalId
1---21---12
2---21---13

ConditionalId---QuestionId---Answer
12---4---Y
12---5---N
13---6---Y
13---7---Y

因此,第21节显示系统的方式必须验证ConditiondalId 12或13,如果有效则显示。

1 个答案:

答案 0 :(得分:0)

您不应该使用用户的答案保存ConditionalId。

UserAnswers表:     UserID - QuestionId - 回答

问题表:     QuestionId - NextLevelId - ChildLevelCondition(0表示任意,1表示所有)

每个问题ID都可以告诉ChildLevelCondition它应该如何检查Y和N下面的级别。 如果在孩子身上你没有问题和ChildLevelCondition = 1那么多,那么就不允许这样做。如果至少有1个Y和ChildLevelCondition = 0,则可以转到此级别 您可以使用分组依据和案例