我从MSDN发现了Naming Guidelines,但它是否适用于Microsoft的MSSQL数据库?Microsoft的数据库命名约定?
回答
SQL Server的AdventureWorks数据库中使用的命名约定展示了许多风格方面的最佳实践。
总结:
- 对象名称容易理解
- 表名称不使用复数 (“用户”表中没有“用户”)
- 缩写毕竟是少数,但允许 (即数量,Amt等)
- PascalCase专用于 例外的某些列名称 (即rowguid)
- 没有下划线
- 某些关键字是允许的(即, 名称)
- 存储过程前缀为 “USP”
- 函数是前缀为 “UFN”
你可以在这里找到更多的细节:
一个警告:数据库命名约定可能会引起很大的争议,而且我遇到的大多数数据库开发人员都对他们的风格有个人利益。我听到关于表是应该命名为“OrderHeader”还是“OrderHeaders”的激烈争论。
我爱你链接到原来的文章,我真的很喜欢你为每个人而烦恼总结。希望我可以两次上瘾。 – 2013-10-18 15:31:19
@ 8kb数据库名称怎么样?多元化的? – 2016-06-07 21:08:45
六年后,仍然获得一个良好的总结和一个良好的布局答案的+1。 – AgapwIesu 2016-09-16 18:17:24
不,没有,但你所提供的链接中的做法很好记住。
对于命名的存储过程 - 做不前缀,他们以“sp_”你可以read more about why in this link:
“不要 以sp_前缀的存储过程,因为该前缀保留 为识别系统存储的 程序“。
我在文章中添加了相关的引用,因为它很短,我们不能指望链接到一个5岁的文章永远持续。 – Gabe 2010-08-29 05:24:11
sp_未保留,只是导致SQL Server在搜索用户定义的过程之前搜索系统过程。 – 2013-11-13 21:11:10
我不知道@ 8kb(撰写本文时)的答案意味着“风格方面的最佳实践”。当然一些列出的项目(“表名不是多元化的”,“没有下划线”等)仅仅是主观风格的选择。我会认为文档团队主管的个人偏好是最重要的因素。
关于SQL中的启发式问题(与T-SQL等专有SQL相反),关于此主题只有一本书:Joe Celko's SQL programming style。SQL Server AdventureWorks数据库的许多选择与Celko指南存在冲突。
Celko的命名约定基于国际标准ISO 11179,指定应该使用分隔字符(例如下划线)来分隔名称中的元素。其他风格选择同样通过研究来备份。仅使用小写字母作为列名,以便人眼帮助扫描。毫无疑问,在那里也有主观的个人喜好,但他们是基于多年在该领域的经验。
从另一方面来说,SQL Server文档近年来有所改进,例如SQL关键字大写,分号分隔语句等。冒险作品对罗斯文和酒吧而言是一个巨大的改进。现在,为什么Management Studio中的脚本功能无法提供出更简单的代码?!
- 1. Microsoft命名约定
- 2. 数据库命名约定
- 3. 数据库表命名约定
- 4. 实体框架类命名约定v老学校数据库命名约定
- 5. 模块化应用程序的数据库表命名约定
- 6. 数据库触发器的命名约定
- 7. 数据库模型和视图模型的命名约定
- 8. 如何使用大型数据库的命名约定?
- 9. 数据库更改脚本的命名约定?
- 10. CakePHP的MySQL数据库命名约定质疑
- 11. 核心数据实体命名约定
- 12. 命名约定
- 13. 命名约定
- 14. Oracle参数命名约定
- 15. 数据库模式列命名约定,小时还是小时?
- 16. 数据库日期字段 - 命名约定
- 17. 多个数据库或表命名约定?
- 18. Laravel - 数据库,表和列命名约定?
- 19. 数据库,表格和列命名约定再次
- 20. 数据库名称约定:DATETIME列
- 21. Microsoft .NET命名空间框架公约
- 22. TSQL命名约定〜这个命名约定叫什么名字?
- 23. Linux库命名约定:大写?
- 24. Visual C++调试库命名约定
- 25. 数字函数的C命名约定?
- 26. Protobuf命名约定
- 27. c#命名约定
- 28. BEM:命名约定
- 29. 表命名约定?
- 30. ç命名约定
下面有非常好的答案,但我会补充以下内容:在组织您的数据库(包括命名)中同意和遵循约定是一样重要的。例如,我们首先尝试保留主键列,然后是所有外键列,以便您可以一目了然地查找关系,然后按字母顺序排列所有其他列,以便在表格中包含大量列时找到所需列。我们具体公约的智慧是值得商榷的,但在团队中进行这种谈话的价值可能不是。 – 2013-10-18 15:34:58