主键提供什么独特的功能?
虽然我用舌头紧紧地刻在脸颊上的问题,我的问题是严重的.在任何火焰开始之前,我不是说建立数据库没有约束或引用完整性.但是,到目前为止,我可以告诉sql Server可以消除主键关键字.
>唯一索引涵盖,惟一性
>基于列的非可空性涵盖PK的不可空性要求
> PK不需要集群,所以不是这样
>外键可以而且经常使用独特的索引实现,而不是PK
>甚至MSDN声明创建唯一的索引来强制PK的唯一性
我同意在逻辑上一个主键对数据模型有一点意图,但是呢? [讽刺]哦,我们确实得到那个小图标SSMS在设计桌子时显示! [/讽刺]
编辑
从这些评论来看,似乎很清楚,我没有像我想象的那样明确地提出这个问题.我同意主键从逻辑的角度是重要的.
我不是问:
>我应该选择一个int或varchar为我的PK
做PK必须集群,或者我如何识别应该集群的东西
>我如何唯一标识行
我的意图是问“PK提供哪些功能,使用其他功能无法合理实施?”我不是建议在这里疯狂 – 比如使用触发器强制执行唯一性而不是唯一的约束/索引.合理是这里的一个关键词 – 使用唯一的索引/约束似乎非常类似于定义一个PK.