我的调查问卷应用程序的某些表格有点麻烦。
这笔交易是有些问题只有一个跟进问题,有些问题有多个跟进问题,其中要求的顺序无关紧要,有些问题< strong> no 跟进问题(主要是每个问题链末尾的问题)。
我的第一个想法:
问题( ID ,问题)
下一步( mainQuestion,nextQuestion )
此处必须跟进问题,因为“nextQuestion”不能为空
我的第二个想法:
这里的问题是,只能有一个跟进问题。
我看到的唯一解决方案是在我的第一个想法中为Next表添加一个ID,以便“nextQuestion”和“mainQuestion”不再是PK的一部分。永远不会使用ID,这就是为什么我在这里。你们有更好的解决方案吗?
提前致谢!
答案 0 :(得分:1)
从你的描述来看,听起来你有一个你没有建模的额外实体,比如“QuestionSet”。问卷由一系列问题集组成。其中大多数都是个别问题。有些是可以按任何顺序询问的集合。考虑到这一点,您应该能够表达问卷。
答案 1 :(得分:1)
我认为不应该为下一个问题设置一个单独的表,你应该有这样的东西
Table_Question
QuestionID text FollowedBy
1 Some Text NULL
2 Some Text 1
3 Some Text 2
4 Some Text 3
5 Some Text 4
6 Some Text 2
7 Some Text 6
依旧......如果你有一个跟进问题,只有一个主要问题,这将会正常工作。
如果跟进问题后跟多个主要问题,那么您需要一个单独的表来跟进问题,如下所示
Table_Question
QuestionID text
1 Some Text
2 Some Text
3 Some Text
4 Some Text
Table_FollowUpQuestion
FolUpQuestionID Text QuestionID
1 Some Text 1
2 Some Text 1
3 Some Text 2
4 Some Text 3
5 Some Text 4
等等......
而且甚至更好,或者我最好选择你将有3张桌子
1主要问题
2 Sub_Question
3 Followed_Question
像这样的东西
Table_Question
QuestionID text
1 Some Text
2 Some Text
3 Some Text
4 Some Text
Table_Sub_Question
FolUpQuestionID Text
1 Some Text
2 Some Text
3 Some Text
4 Some Text
5 Some Text
Table_FollowUpQuestion
FolUpQuestionID QuestionID
1 2
2 3
3 3
4 4
5 5
答案 2 :(得分:0)
问题(身份证,问题)
下一步(mainQuestion,nextQuestion)
仍然是最好的解决方案。
如果我不想要一个问题来提出跟进问题而不是我没有设置&#34; nextQuestion&#34;为NULL,但我只是停止向表中添加行。
答案 3 :(得分:0)
Question
表应该有一个指向前一个问题ID的FK:dbo.Question(QuestionID, Content, PreviousQuestionID)
dbo.AsocQuestions
: dbo.Question(QuestionID, Content)
(PK = QuestionID
)
dbo.AsocQuestions(FromQuestionID, ToQuestionID)
(PK = FromQuestionID
+ ToQuestionID
)