1

我看到了这条评论:

[应用程序] 与数据相关的问题最多的是使用自然键的应用程序。

资料来源:代理与自然/业务键

我想要更多的支持证据,因为评论留下了很多想象。

它表明使用自然键的做法会产生与数据相关的问题,但没有具体说明哪里出了问题……数据会损坏吗?不同步?变得错误、丢失、损坏?难查询?

当数据库设计为使用自然键而不是使用代理键时会发生什么数据问题?使用代理键时如何防止这些类型的问题?

4

1 回答 1

1

自然键的主要问题是它如何影响相关表。如果更改键的值,则必须更正每个表中引用原始值的每一行。

例如,假设您有一个 Zip Code 或 Postal Code 表。很多时候,这些都是在邮政编码也用作自然键的地方设计的。现在假设邮局更改了特定的邮政编码(92680 变为 92780)。当您更改 Postal Code 表中的键时,您必须转到引用该 Postal Code 的每个表,并在那里更新它。因此,邮政编码中包含 92680 的客户地址、供应商地址等中的每一行都必须更改为 92780。

显然,如果相关表不修复,就会开始出现大问题。假设您根据邮政编码收取保险费。想象一下,如果保费表中没有解决这些问题,您可能会遇到什么问题。

使用代理键完全消除了这个问题。您只需更改邮政编码表中的邮政编码。代理键没有改变。由于相关表存储代理键,因此您无需更改任何其他内容。

于 2017-04-26T18:45:40.703 回答