gpt4 book ai didi

database-design - 什么时候不应该使用代理主键?

转载 作者:行者123 更新时间:2023-12-02 00:04:51 24 4
gpt4 key购买 nike

我有几个数据库表,它们只包含一列和很少的行,通常只是另一个系统中定义的某些内容的 ID。然后使用其他表中的外键引用这些表。例如,一张表包含国家/地区代码(SE、DK、US 等)。所有值始终是唯一的自然键,并且它们在其他(旧)系统中用作主键。

似乎确实没有必要为这些表引入新的代理键,或者?

一般来说,在哪些特殊情况下不应使用代理键?

最佳答案

我想说必须满足以下标准:

  • 您的自然 key 必须是绝对的、肯定的、不允许异常(exception)的、唯一的(诸如姓名、社会安全号码等通常看起来是独特 - 但实际上不是)

  • 您的自然 key 应与 INT 一样小,例如大小不明显超过 4 个字节(不要将 VARCHAR(50) 用于您的 PK,尤其不要用于 SQL Server 中的集群键!)

  • 您的自然键应该稳定,例如永远不会改变(好吧,对于 ISO 国家/地区代码,这几乎是一个给定的 - 除非像南斯拉夫或苏联这样的国家崩溃,或者像两个德国这样的其他国家联合起来 - 但这是罕见的)

如果满足这些条件,您可以考虑将自然键作为您的 PK - 但这应该是所有表中 2% 的异常(exception) - 而不是常态。

关于database-design - 什么时候不应该使用代理主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1714148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com