2013-02-14 57 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

相关问题