【发布时间】:2026-02-14 11:20:07
【问题描述】:
问题表:
QuestionId (PK) QuestionNo QuestionContent SessionId
11 1 blah 4
12 2 blah blah 4
13 1 BLAH 5
14 2 BLAH BLAH 5
Image_Question 表:
Image_QuestionId (PK) ImageId (FK) SessionId (FK) QuestionNo
4 6 4 1
会话表:
SessionId SessionName
4 DFOFK
5 FEOWF
上面有三张桌子。现在,如果您查看Image Question 表中的SessionId,它是Session 表的外键,因此如果我单击Image_Question 表中的SessionId 值,它将显示@来自Session 表的 987654329@ 详细信息。
现在我在Image Question 表中有另一列尚未分配外键,即QuestionNo 字段。现在这不是任何表中的主键,但我需要使用此字段才能知道图像属于哪个问题。无论如何,这不是问题。
我的问题是,如果我只是将Image_Question 表中的QuestionNo 设置为FK,那么如果我单击Image_Question 表中的QuestionNo's 值,那么它将显示所有@987654338 @ 在所有会话中都是 1。我不想要这个,我想在问题号所属的SessionId 中查找QuestionNo。
所以我的问题是如何在 SQL 中设置 QuestionNo 外键,以便将 SessionId 和 QuestionNo 字段连接在一起,从而创建唯一的 SessionId/QuestionNo 约束。
【问题讨论】:
-
那么为什么不在 image_question 中使用 questionID 而不是 questionNo?这样就不会有歧义了
-
@WKordos 所说的。
QuestionNo不是候选键。使用QuestionId -
你不应该也不能这样做。除此之外,这就是 questionid 的用途
-
在 Image_Question 中包含 QuestionNo 会使您的架构非规范化。
-
大家好,我不能使用 questionId 的原因是用户创建问题,现在他们在创建问题时上传图像。问题仅在提交后插入数据库,但图像文件的上传发生在提交之前。我在网页中使用问题编号来确定每个图像属于哪些问题,就像我说的我不能使用 questionid 来执行此操作,因为尚未插入问题
标签: mysql sql database foreign-key-relationship