gpt4 book ai didi

sql-server - 主键已经过时了吗?

转载 作者:行者123 更新时间:2023-12-02 07:38:57 25 4
gpt4 key购买 nike

主键提供哪些独特的功能?

虽然我用舌头紧紧地贴着脸颊来命名这个问题,但我的问题是严肃的。在任何火焰开始之前,我并不是说构建一个没有约束或引用完整性的数据库。然而,据我所知,SQL Server 可以取消primary key 关键字。

  • 唯一索引涵盖了唯一性
  • 基于列的不可为空性涵盖了 PK 的不可空性要求
  • PK 不必聚集,所以不是这样的
  • 外键可以而且通常是通过唯一索引而不是 PK 来实现的
  • 甚至 MSDN 也声明创建唯一索引是为了确保 PK 的唯一性

我确实同意逻辑上主键传达了一些关于数据模型的意图,但真的是这样吗? [讽刺]哦,我们确实得到了 SSMS 在设计表格时显示的那个小 key 图标! [/讽刺]

<小时/>

编辑

从评论中可以看出,我显然没有像我想象的那样清楚地提出这个问题。我同意主键从逻辑角度来看很重要。

问:

  • 我应该为我的 PK 选择 int 还是 varchar
  • PK 是否必须聚类,或者我如何确定哪些内容应该聚类
  • 如何唯一标识行

我的目的是问“PK 提供的哪些功能无法使用其他功能合理实现?”我并不是建议在这里疯狂——比如使用触发器来强制唯一性,而不是唯一的约束/索引。合理是这里的一个关键词——使用唯一索引/约束似乎与定义 PK 非常相似。

最佳答案

完全不同的视角:

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

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

(a) 您已实现了标准规定的所有语法(“强制”功能),并且(b) 您已实现的所有语言功能(至少是所有强制功能,还有您“选择加入”的“可选”功能),准确地公开了标准中定义/描述的行为。

“PRIMARY KEY”语法是一个非常古老的功能,并且它不太可能是那些“强制”功能之一。从你的语言中删除这个词意味着你不能再合法地调用你的语言 SQL。大型商业供应商不太可能很快采取这样的举措。

关于sql-server - 主键已经过时了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com