Details-table是否包含Master-Detail关系中的ID列?

时间:2010-01-06 15:52:31

标签: database-design relationships

在Master-Detail关系中,Detail-tables是否包含ID列?

或者,应该吗?

在Northwind数据库中,OrderDetail没有ID列。

1 个答案:

答案 0 :(得分:1)

您拥有的包含您希望能够检索的内容的任何数据表应始终包含主键 - 这是它的主要工作:唯一标识单行。

仅仅因为细节属于主行并不意味着它们本身不是完整的数据行 - 它们需要以某种方式识别。

是的 - 我建议任何细节表都有某种形式的主键(“ID”)。无论是否以某种方式连接到主ID,都可以根据具体情况决定 - 但是有一种方法可以独立地识别每个细节行。

如果你有一个M:N关系的链接表,通常,你只有两个外键列(表1和表2)。这通常是足够好的,因为这两个FK的组合是独一无二的。

向这样的表添加单独ID的唯一原因是,如果您需要添加描述关系本身的其他信息。但即便如此,只要(key1,key2)组合是唯一的,这通常就足够了。