加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 主键是否通过?

发布时间:2020-12-12 16:28:51 所属栏目:MsSql教程 来源:网络整理
导读:主键提供什么独特的功能? 虽然我用舌头紧紧地刻在脸颊上的问题,我的问题是严重的.在任何火焰开始之前,我不是说建立数据库没有约束或引用完整性.但是,到目前为止,我可以告诉SQL Server可以消除主键关键字. 唯一索引涵盖,惟一性 基于列的非可空性涵盖PK的不可
主键提供什么独特的功能?

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

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

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

编辑

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

我不是问:

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

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

解决方法

一个完全不同的观点:

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读