2010-08-29 119 views
51

我从MSDN发现了Naming Guidelines,但它是否适用于Microsoft的MSSQL数据库?Microsoft的数据库命名约定?

+2

下面有非常好的答案,但我会补充以下内容:在组织您的数据库(包括命名)中同意和遵循约定是一样重要的。例如,我们首先尝试保留主键列,然后是所有外键列,以便您可以一目了然地查找关系,然后按字母顺序排列所有其他列,以便在表格中包含大量列时找到所需列。我们具体公约的智慧是值得商榷的,但在团队中进行这种谈话的价值可能不是。 – 2013-10-18 15:34:58

回答

99

SQL Server的AdventureWorks数据库中使用的命名约定展示了许多风格方面的最佳实践。

总结:

  • 对象名称容易理解
  • 表名称不使用复数 (“用户”表中没有“用户”)
  • 缩写毕竟是少数,但允许 (即数量,Amt等)
  • PascalCase专用于 例外的某些列名称 (即rowguid)
  • 没有下划线
  • 某些关键字是允许的(即, 名称)
  • 存储过程前缀为 “USP”
  • 函数是前缀为 “UFN”

你可以在这里找到更多的细节:

一个警告:数据库命名约定可能会引起很大的争议,而且我遇到的大多数数据库开发人员都对他们的风格有个人利益。我听到关于表是应该命名为“OrderHeader”还是“OrderHeaders”的激烈争论。

+2

我爱你链接到原来的文章,我真的很喜欢你为每个人而烦恼总结。希望我可以两次上瘾。 – 2013-10-18 15:31:19

+0

@ 8kb数据库名称怎么样?多元化的? – 2016-06-07 21:08:45

+0

六年后,仍然获得一个良好的总结和一个良好的布局答案的+1。 – AgapwIesu 2016-09-16 18:17:24

10

不,没有,但你所提供的链接中的做法很好记住。

对于命名的存储过程 - 做前缀,他们以“sp_”你可以read more about why in this link

“不要 以sp_前缀的存储过程,因为该前缀保留 为识别系统存储的 程序“。

+1

我在文章中添加了相关的引用,因为它很短,我们不能指望链接到一个5岁的文章永远持续。 – Gabe 2010-08-29 05:24:11

+1

sp_未保留,只是导致SQL Server在搜索用户定义的过程之前搜索系统过程。 – 2013-11-13 21:11:10

4

我不知道@ 8kb(撰写本文时)的答案意味着“风格方面的最佳实践”。当然一些列出的项目(“表名不是多元化的”,“没有下划线”等)仅仅是主观风格的选择。我会认为文档团队主管的个人偏好是最重要的因素。

关于SQL中的启发式问题(与T-SQL等专有SQL相反),关于此主题只有一本书:Joe Celko's SQL programming style。SQL Server AdventureWorks数据库的许多选择与Celko指南存在冲突。

Celko的命名约定基于国际标准ISO 11179,指定应该使用分隔字符(例如下划线)来分隔名称中的元素。其他风格选择同样通过研究来备份。仅使用小写字母作为列名,以便人眼帮助扫描。毫无疑问,在那里也有主观的个人喜好,但他们是基于多年在该领域的经验。

从另一方面来说,SQL Server文档近年来有所改进,例如SQL关键字大写,分号分隔语句等。冒险作品对罗斯文和酒吧而言是一个巨大的改进。现在,为什么Management Studio中的脚本功能无法提供出更简单的代码?!