您何时选择不使用身份/自动编号字段作为主键?

Mik*_*fer 2 database-design identity-column

我不相信Silver Bullet,但我真的喜欢使用序列或自动编号标识列作为数据库表的主键列.它们是唯一的,它们索引很好,我不必担心空值.

另一方面,在某些情况下,当表中的其他唯一列可以用于相同目的时,它们似乎是多余的.比如说,您正在构建一个将9位邮政编码映射到城市区域的表格.邮政编码字段也可以正常工作(前提是您可以保证数据格式且不重复值).

要点:我和我们任何人的经历都是有限的.还有哪些真实的例子让人们选择使用自动编号列作为表的主键,为什么?

这对我来说是一种"开阔视野"的东西,我希望从那些曾经使用过多数据库并有令人信服的理由选择其他人的人那里学到一点.

Iai*_*ult 5

恕我直言,使用标识列至关重要,因为即使最简单的表格在未来也会变得更加重要.

我不会使用的唯一一次是我使用GUID的地方,因为可能是在断开连接的客户端上创建记录然后需要与中央系统同步的情况.


Jav*_*ier 5

我的经验法则是:“如果要按常规用法添加记录,请使用自动增量PK;如果它是静态表,请使用更“自然”的标识符”

IOW:用户,历史记录,资产;所有人都会获得自动递增的PK。邮编/城市,类型/说明,机器ID,通常会获得一个“自然”密钥。