代码之家  ›  专栏  ›  技术社区  ›  user366312

明细表在主-明细关系中是否包含ID列?

  •  0
  • user366312  · 技术社区  · 15 年前

    在主-细节关系中,细节表是否包含ID列?

    或者,是吗?

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   marc_s    15 年前

    您所拥有的任何包含要检索到的内容的数据表都应该始终包含一个主键——这就是它的主要任务:唯一地标识一行。

    仅仅因为细节属于主行并不意味着它们本身不是完整的数据行——它们需要在某种程度上是可识别的。

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

    如果您有一个m:n关系的链接表,通常情况下,您只有两个外键列(用于表1和表2)。这通常已经足够好了,因为这两个fk的组合是独一无二的。

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