2013-01-17 102 views
2

問表:如何外鍵約束字段合併

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表中的Session詳細信息。

現在我在Image Question表中還有一列尚未分配外鍵,那就是QuestionNo字段。現在,這不是任何表格中的主鍵,但我需要使用此字段來了解圖像屬於哪個問題。無論如何,這不是問題。

我的問題是這樣的,如果我只是在Image_Question表中設置QuestionNoFK,那麼如果我在Image_Question表點擊QuestionNo's值,那麼它會顯示所有QuestionNo這是在所有會話1。我不想要這個,我想查詢問號所屬的SessionId內的QuestionNo

所以我的問題是如何在SQL做我設置QuestionNo外鍵,以便它使兩SessionIdQuestionNo領域在一起,使得它創建了一個獨特的SessionId/QuestionNo約束。

+1

那麼爲什麼你不使用questionID而不是image_question中的questionNo?這樣就不會有歧義 – WKordos

+0

@WKordos說了些什麼。 'QuestionNo'不是候選關鍵字。使用'QuestionId' – Kermit

+0

你不應該也不可以那樣做。此外,這是什麼問題是 –

回答

1

有了圖像,您就知道SessionId和QuestionId,因此您可以先輸入一個NULL問題並獲取QuestionId,然後在圖像表中使用它。當你得到問題信息時,你可以更新問題表。

然而,這不是好的做法。

在提交問題之前,您不應該將圖像提交給問題,這些問題應該保留在業務層中,直到您獲得完整的信息 - 然後提交它們以解決螞蟻存儲問題。