问题
foreign keys
我想为表做的设置Answer
是正确的想法吗?如何在处理多个字段的添加外键约束上编写 SQL?
会话表:
SessionId (PK) SessionName
1 AAA
2 AAB
问题表:
QuestionId(PK) SessionId(PK) QuestionContent
1 1 What is 2+2?
2 1 What is 3+3?
1 2 What is 4+4?
2 2 What is 5+5?
答案表:
AnswerId(auto, PK) QuestionId(fk) SessionId(fk) Answer
1 1 1 A
2 1 1 D
3 2 1 C
4 2 1 A
5 1 2 True
6 2 2 A
7 2 2 B
现在我遇到的问题是Answer
表的外键,我想知道哪个外键是正确的。
我所做的是向 中添加了一个外键,SessionId
这意味着如果我单击一行SessionId
,它与表SessionId
中的匹配Session
。
然后我想我会QuestionId
在Answer
表中提供一个外键链接到Question
表。问题在于,如果在一行中单击 a QuestionId
,那么它将显示QuestionId
其中包含相同的所有行QuestionId
。因此,如果我想查找此内容Answer
:
AnswerId(auto, PK) QuestionId(fk) SessionId(fk) Answer
1 1 1 A
当我点击上面的QuestionId
外键时,它会在下面输出:
QuestionId(PK) SessionId(PK) QuestionContent
1 1 What is 2+2?
1 2 What is 4+4?
答案不属于这两个问题,它只属于一个问题,但因为两者QuestionId
相同,所以它显示两个问题。
所以我在想的是我想要一个外键约束,如果用户QuestionId
连续点击,它会查找两者QuestionId
,SessionId
以便它知道答案所属的问题和会话(考试),以便它在下面输出:
QuestionId(PK) SessionId(PK) QuestionContent
1 1 What is 2+2?
我的问题是我不知道如何编写处理两个字段的外键约束?外键的设置是否正确SessionId
并SessionId and QuestionId
一起正确?