相关疑难解决方法(0)

主键是否已过时?

主键提供哪些独特功能?

虽然我用舌头牢牢地把脸埋在脸颊上,我的问题很严肃.在任何火焰开始之前,我不是说在没有约束或参照完整性的情况下构建数据库.但是,据我所知,SQL Server可以取消primary key关键字.

  • 独特的索引涵盖了唯一性
  • 基于列的非可空性涵盖了PK的非可空性要求
  • PK不必聚集,所以不是这样
  • 外键可以并且通常使用唯一索引而不是PK来实现
  • 甚至MSDN也声明创建了一个唯一索引来强制执行PK的唯一性

我确实同意逻辑上一个主键关于数据模型的一些意图,但它是什么?[讽刺]哦,我们确实得到了SSMS在设计桌子时显示的那个小钥匙图标![/讽刺]


编辑

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

问:

  • 我应该为我的PK选择一个int或一个varchar
  • PK必须集群化,或者我如何识别应该集群的内容
  • 我如何唯一地识别行

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

sql-server database-design primary-key

13
推荐指数
3
解决办法
957
查看次数

标签 统计

database-design ×1

primary-key ×1

sql-server ×1