我正在考虑更改一些表以使用 nvarchar(50) 作为主键而不是 int 主键。使用 int ID 作为键实际上是不相关的数据,它是我感兴趣的字符串。会发生什么样的性能影响,或者你在哪里研究这个?除了剪切和尝试之外。
您已经遇到了数据库设计的主要“圣战”之一。您所指的争论是“代理与自然键”争论,自从 RDBMS 出现以来(据我所知),这种争论就一直在激烈进行。
争论本质上归结为是否应该使用代表性键(代理,例如 IDENTITY 列)与使用唯一描述记录的实际数据(自然键)。
我会说没有“正确”的答案。性能指标是平台的产物,应该通过实验来评估,但性能不太可能成为主要问题。
我认为代理键的主要论点是主键的不变性。如果您选择使用自然密钥,则您放弃了在建立密钥后更改该密钥的选择。您还放弃了它在未来某个时刻可能变得非唯一的可能性。出于这些原因,我通常(并非总是)对大多数表使用代理键。
然而,正如我所提到的,有一个长期存在的争论,其中充满了关于索引策略和规范形式遵守的讨论,如果您愿意的话,可以阅读。
我会谷歌“代理与自然键”。以下是一些可帮助您入门的链接:
系统工程和关系型数据库管理系统 http://decipherinfosys.wordpress.com/2007/02/01/surrogate-keys-vs-natural-keys-for-primary-key/
科技共和国 https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1045050.html
托尼·罗杰森的博客 http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/05/11/427.aspx
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)