Microsoft的数据库命名约定?

时间:2010-08-29 05:00:47

标签: sql sql-server tsql

我从MSDN找到了Naming Guidelines,但它是否是微软MSSQL数据库的指南?

4 个答案:

答案 0 :(得分:137)

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

总结:

  • 对象名称易于理解
  • 表名不是复数 (“用户”表不是“用户”)
  • 缩写很少,但允许 (即数量,金额等)
  • PascalCase专门用于 某些列名称的例外情况 (即rowguid)
  • 没有下划线
  • 允许使用某些关键字(即 名)
  • 存储过程以...开头 “USP”
  • 功能以“ufn”
  • 开头

您可以在此处找到更多详细信息:

有一点需要注意:数据库命名约定可能会引起很大争议,我遇到的大多数数据库开发人员都有自己的风格。关于表是否应该命名为“OrderHeader”或“OrderHeaders”,我听到了激烈的争论。

答案 1 :(得分:15)

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

关于命名存储过程 - 在其前面添加“sp_”您可以read more about why in this link

  

“不要为存储过程添加前缀   sp_,因为此前缀是保留的   用于识别系统存储的   程序“。

答案 2 :(得分:6)

@ 8kb(在撰写本文时)的答案中,我不知道“风格方面的最佳做法”是什么意思。当然,一些列出的项目(“表名不是多元化”,“没有下划线”等)仅仅是风格选择,显然是主观的。我原本认为文档团队负责人的个人偏好是最重要的因素。

关于SQL中的启发式(与专有SQL相比,如T-SQL),只有一本关于这个主题的书:Joe Celko's SQL programming style。许多SQL Server的AdventureWorks数据库的选择与Celko的冲突准则。

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

从好的方面来看,近年来SQL Server文档中的情况有所改善,例如SQL关键字大写,分号分隔语句等。冒险工作是Northwind和pubs的巨大改进。现在为什么管理工作室中的脚本功能不能吐出更容易看到的代码?!

答案 3 :(得分:0)

如果要构建SQL Server命名约定指南,建议从Konstantin's document on GitHub开始。