2013-02-14 60 views
0

使用foriegn鍵時,我不確定是否假設我在兩個包含相同字段的表中使用foriegn鍵。例如:我是否需要前導鍵來互相引用表格

選項表:

OptionId (PK auto) OptionType 
1     A-C 
2     A-D 
3     A-E 

問表:

QuestionId (PK auto) Question OptionId (FK Option) 
1      2+2  2 
2      3+3  1 

我做的問題表OptionId一個外鍵,但我是想使OptionId在選項表一個外鍵以及引用問題表?

回答

1

編號

外鍵是一個約束:它旨在確保數據庫的完整性。您不希望某人能夠刪除問題所加入的選項,因爲該問題不再有效。然而,即使它加入的選項仍然存在,刪除一個問題將非常合理 - 該選項可能適用於其他現有或未來的問題。

+0

非常感謝你的答案:)所以永遠不要在父表中的字段中使用foriegn鍵來匹配子表中的同一個字段。謝謝 – Manixman 2013-02-14 23:46:21

+0

好吧,從來沒有一個強大的詞。有時候,如果關係是一對一的,那麼依賴關係可能會變成雙向的,但是那樣你就不會有父母和孩子了。你可以想象在另一個方向想要約束 - 例如如果沒有至少一個invoice_row,您就無法獲得發票 - 但您不會使用外鍵來執行該操作。 – 2013-02-14 23:50:08

相關問題