【发布时间】:2013-01-06 02:08:54
【问题描述】:
问题
我要为Answer做的foreign keys的设置是否是正确的Idea以及如何编写SQL on Add外键约束处理多个字段?
会话表:
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,它将匹配Session 表中的SessionId。
然后我想我会在链接到Question 表的Answer 表中为QuestionId 提供一个外键。问题在于,如果在一行中单击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 设置外键是否正确?
【问题讨论】:
标签: mysql sql database foreign-keys