.Net下SqlServer命名规范

 

  规范一直是团队开发中一个很重要的接口,而命名规范在规范中确实极为重要的一个部分,后续会继续介绍编码规范,UI层的控件命名规范及其他规范。这里简单整理一下关于.Net下SqlServer的命名规范,当然大部分也适用与其他平台下及其他类型的数据库。

  对于数据库的命名规范,目前考察的主要有两种方式:一.前缀式,二.非前缀式。

  之前一直使用前缀的方式,如表名前一般会使用三个字母代表的表模块缩写作为表前缀,如系统模块下的用户表:sys_user;字段名前一般使用三个字母代表的表前缀缩写作为字段的前缀,参考数据库命名规范。使用这种前缀式的命名规则,主要是考虑模块之间的清晰性,以及表与表之间外键的前缀关系更加明朗,网上也有不少这类的标准。但是,个人感觉这种方式下,使用一般的代码生成器(非自己写的)生成数据访问层类时,不能很好的处理前缀,导致生成的类显得不够规范。如果使用自己开发的代码生成器来生成代码类的话,前缀的方式是非常不错的,它可以很好的区分各个模块的代码,通过表前缀的方式,然而,限于自己能力有限不能开发出如MySoft.Data,NBear,Subsonic这样优秀的数据库访问层,所以目前暂时放弃了这种命名方式。另一种命名方式,就是不采用表前缀的方式,网络上也有这类的规范,感觉非常符合自己的总结,参看C#下的SQL Server命名规范.下面主要解析这种方式下的命名规则。

     

 

一.通用规则
1.各种命名必须严格按照Pascal方式命名,考虑到不是所有的生成工具都能够识别分隔符以生成Pascal方式命名的类与字段,所以取消了连接符的使用。但是表名仍采用以系统模块作为前缀的方式,便于表名是智能引用。

2.所有的SQL关键字全部采用大写
3.所有的表及字段尽可能的使用完整的单词货词组来表示,如果超过允许的长度例外。

4.如果有意义的缩写一律使用全大写,如主键使用ID,存储过程命名:SP_表名_方法 

 

二.数据库命名

1. 用一个或三个以下英文单词组成,以Pascal方式,如:DepartmentManage

 

三.表命名
1. 每个表必须有一个表所属的模块前缀,该前缀在模块设计是定义好,模块前缀与表名之间使用下划线连接(之所以使用表前缀及使用下划线,主要是考虑编码时IDE的智能引用比较方便方便),比如System_Role,表示系统模块的角色表。

2. 表名以单数形式表示。

3.一个表如果需要使用多个单词表达,各个单词之间遵守Pascal命名规则,如:System_LogConfig
4. 关联表的命名使用被关联的表名组合命名,如:System_RoleModuleAction表示系统模块下的角色模块操作表
5. 每张表都有约定的4个字段(CreatedOn,CreatedBy,ModifiedOn,ModifiedBy),如果使用逻辑删除,使用IsDeleted字段,一般包含是否启用(IsEnabled)与排序字段(Sno)

 

四.字段命名
1. 如果字段为bool型,则使用"IsShow","IsValid","HasPassed","HasExamined","IgnoreCase"这种形式表示。常见的bool类型关键字有:Is,Has等
2. 日期类型的字段必须包含Date关键字,时间类型的字段必须包含Time
3. 用户类型的外键字段必须包含UserID,该字段有和用户表管理。如果是varchar类型不遵守该约定

 

五.其他对象命名
4. 存储过程命名:SP_表名_方法,如:SP_News_Add,SP_News_Update;

5. 视图命名:VI_表名,如:VI_News;

6. 表、存储过程、视图等对象的所有都为dbo,不要使用数据库用户名,这样会影响数据库用户的更改。

 

在开发过程中继续修改补充。。。

 

 

posted on 2010-07-17 20:05  一麦  阅读(863)  评论(0编辑  收藏  举报