2013-01-17 28 views
1

我想知道在唯一密钥上使用标识列的优点。我一直使用标识列,并且知道它比独特密钥更好。但我想知道身份验证密钥相对于唯一密钥的好处。使用标识列而不是唯一密钥的好处

谢谢

+4

你知道这样更好,但你不知道为什么? –

+0

@MrLister是的...我想向我的客户解释这个 –

+0

他们不是很相似。一个标识列本质上是独一无二的,但它并不强制任何其他列的唯一性,所以如果你想要列是唯一的,你应该使其独特;如果添加标识列,则可以反复在其他列中插入相同的记录,并且在复制剩余信息的同时,它会继续为您提供行的唯一性。可以打开和关闭标识列增量,您可以更改当前标识值以跳过标识。你可以做各种各样的东西。 –

回答

-1

主键可以用作另一个表中的外键,标识列不能。在没有看到您要存储的数据类型的情况下,我会建议使用标识列,并将其设置为主键。

+0

在SQL Server中,任何表都可以引用**主键**或任何**唯一索引**。所以如果你在'IDENTITY'列上有一个唯一的索引 - 它肯定可以**从其他表中引用! –

+1

外键只需要父表中的唯一键。 IDENTITY与UNIQUE声明无关 – gbn

+1

@Brain - 但只有主键具有使用varchar的好处,所以为什么只需要使用更多列的负担。 –

1

您是否试图将标识列与唯一标识符列用作主键?

Uniqueidentifier(Guids)具有在整个环境中唯一的优势,使得在给定表格上下文之外唯一标识一条记录更为容易。他们还提供了一个您可以在您的应用程序中公开的密钥,这些密码不易迭代。

标识列使用较少的存储空间,因此速度更快,效率更高。

他们的使用没有正确的答案。这真的取决于上下文。

+0

阅读Kimberly Tripp出色的[GUIDs PRIMARY KEYs和/或clustering key](http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/)博客在使用'GUID'作为你的集群密钥之前,发布**之前......至少在SQL Server中,对于你的集群密钥,'GUID'是一个非常糟糕的选择。 –

相关问题