代码之家  ›  专栏  ›  技术社区  ›  Chris Smith

理解奇怪的数据库密钥设计

  •  1
  • Chris Smith  · 技术社区  · 16 年前

    • organization_internal_id
    • 订单表PK (organization_internal_id, order_internal_id)
    • (order_internal_id, organization_internal_id)

    internal_id

    为什么不将内部ID设置为主键,而是为每个ID设置一个单独的唯一聚集索引(就像现在一样)?

    我能想到的一件事是,设计人员不知道主键和聚集索引之间的区别,所以他们使用奇怪的PK来获得他们想要的聚集索引。公平地说,订单行通常是参照订单访问的,在行级别以下没有详细信息可以参考 order_line_internal_id .

    查询效率

    3 回复  |  直到 16 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

        2
  •  2
  •   CMB    16 年前

    我认为你的“一种可能性”很有可能。显然,在过去的数据库设计时代,主键是唯一可用的唯一索引;引用的材料 this question about one-to-many relationship implementation 例如,它似乎来自这样一个时代。似乎有理由认为,在那个时代受过训练的一些人往往会保留它的习惯。

        3
  •  1
  •   Cruachan    16 年前

    逻辑应该是这样的:“我们知道我们通常只需要从这个表中获取组织内部id和订单内部id,所以如果我们使用它作为PK,数据将被直接检索,而不是强制访问我们通过任意内部id访问的实际行数据”