Microsoft的数据库命名约定?

Che*_*ung 71 sql t-sql sql-server

我从MSDN 找到了命名指南,但它是否适用于Microsoft的MSSQL数据库?

8kb*_*8kb 151

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

总结一下:

  • 对象名称很容易理解
  • 表名不是复数("用户"表不是"用户")
  • 缩写很少,但允许(即数量,Amt等)
  • PascalCase专门用于某些列名称(即rowguid)的例外
  • 没有下划线
  • 允许某些关键字(即名称)
  • 存储过程以"usp"开头
  • 函数以"ufn"开头

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

一个警告:数据库命名约定可能非常有争议,我见过的大多数数据库开发人员都有自己的风格.关于表是否应该命名为"OrderHeader"或"OrderHeaders",我听到了激烈的争论.

  • 我喜欢你链接到原始文章,我真的很喜欢你为每个人总结一下.希望我能两次投票. (7认同)
  • 在存储过程和函数前面加上“usp”和“ufn”有什么好处?存储过程通常以动词开头,函数通常由其功能指定名称。 (2认同)

OMG*_*ies 16

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

关于命名存储过程 - 不要它们前面添加"sp_"您可以在此链接中阅读有关原因的更多信息:

"不要使用sp_作为存储过程的前缀,因为此前缀保留用于标识系统存储过程."

  • 我添加了文章中的相关引用,因为它很短,我们不能指望一个5年之久的帖子的链接永远持续. (2认同)

one*_*hen 6

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

至于SQL中的启发式方法(与T-SQL等专有SQL相对),只有一本关于这个主题的书:Joe Celko的SQL编程风格 .SQL Server的AdventureWorks数据库的许多选择与Celko的指南冲突.

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

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


myi*_*lab 5

如果您要构建 SQL Server 命名约定指南,我建议您从GitHub 上的 Konstantin 文档开始