sql-server – 主键是否通过?

前端之家收集整理的这篇文章主要介绍了sql-server – 主键是否通过?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
主键提供什么独特的功能

虽然我用舌头紧紧地刻在脸颊上的问题,我的问题是严重的.在任何火焰开始之前,我不是说建立数据库没有约束或引用完整性.但是,到目前为止,我可以告诉sql Server可以消除主键关键字.

>唯一索引涵盖,惟一性
>基于列的非可空性涵盖PK的不可空性要求
> PK不需要集群,所以不是这样
>外键可以而且经常使用独特的索引实现,而不是PK
>甚至MSDN声明创建唯一的索引来强制PK的唯一性

我同意在逻辑上一个主键对数据模型有一点意图,但是呢? [讽刺]哦,我们确实得到那个小图标SSMS在设计桌子时显示! [/讽刺]

编辑

从这些评论来看,似乎很清楚,我没有像我想象的那样明确地提出这个问题.我同意主键从逻辑的角度是重要的.

我不是问:

>我应该选择一个int或varchar为我的PK
做PK必须集群,或者我如何识别应该集群的东西
>我如何唯一标识行

我的意图是问“PK提供哪些功能,使用其他功能无法合理实施?”我不是建议在这里疯狂 – 比如使用触发器强制执行唯一性而不是唯一的约束/索引.合理是这里的一个关键词 – 使用唯一的索引/约束似乎非常类似于定义一个PK.

解决方法@H_404_26@
一个完全不同的观点:

sql是由ISO标准定义的语言.该标准具有“强制”功能和“可选一致性”功能.

如果您使用某些数据操作语言构建DBMS,那么只有在以下情况下才有权使用您的语言“sql”:

(a)您已经实现了标准规定的所有语法(“强制”功能),以及
(b)您已实施的所有语言功能(所有必需的语言功能,至少为所有语言功能),还包括您选择使用的“可选”语言功能),完全符合标准中定义/描述的行为.

“PRIMARY KEY”语法是一个非常古老的功能,它不是不可能的,这是“强制性”之一.从您的语言中删除这个词意味着您不能再合法地将您的语言称为sql语言.大型商业供应商不太可能很快就会出现这样的举动.

猜你在找的MsSQL相关文章