Microsoft 的数据库命名约定?

问题描述 投票:0回答:4

我从 MSDN 找到了命名指南,但是 Microsoft 是否有针对 MSSQL 数据库的指南?

sql sql-server t-sql
4个回答
243
投票

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

总结一下:

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

您可以在这里找到更多详细信息:

需要注意的是:数据库命名约定可能非常有争议,我遇到的大多数数据库开发人员都对其风格有个人兴趣。我听到过关于表应该命名为“OrderHeader”还是“OrderHeaders”的激烈争论。


18
投票

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

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

“不要在存储过程前加上前缀 sp_,因为这个前缀是保留的 用于识别系统存储的 程序。”


9
投票

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


8
投票

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

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

Celko 的命名约定基于国际标准 ISO 11179 例如:指定应使用分隔字符(例如下划线)来分隔名称中的元素。其他风格的选择也同样得到了研究的支持,例如列名称仅使用小写字母以帮助人眼扫描。毫无疑问,其中也存在主观的个人偏好,但它们是基于多年的现场经验。

从好的方面来说,近年来 SQL Server 文档中的情况有所改善,例如SQL 关键字大写,用分号分隔语句等。Adventure Works 是对 Northwind 和 pubs 的巨大改进。现在为什么 Management Studio 中的脚本功能不能输出看起来更容易一些的代码?!

© www.soinside.com 2019 - 2024. All rights reserved.