1、命名规范
1、总体命名规范
名称的长度不超过32个字符。
名称采用英文单词、英文单词缩写和数字,单词首字母大写。
数据库对象名称首字母必须大写。
不得采用"_"作为名称的起始字母和终止字母。
名称必须望文知意。
名称不得与数据库管理系统保留字冲突。
不要在对象名的字符之间留空格。
2、 数据库名
数据库名定义为系统名+模块名,或直接采用系统名。
数据库名单词首字母大写。
3.表
    表命名要遵循以下原则:
采用"表义名"格式构成。
整个表名的长度不要超过30个字符。
表义名均以其英文单词命名,且字符间不加分割符;单词的首字符大写,其它字符小写,多个单词间也不加任何分割符,单词全部采用单数形式。
表别名命名规则:取模块名+下划线+表意名。
关联表命名为Re表A表B,Re 是Relative的缩写,表A 和表B均采用其表义名或缩写形式。
以用户数据库部门表为例,该数据库模块名为User,部门表的表义明为Department,那么根据表的命名规范,该表的名称就应为UserDepartment
5.属性(列或字段)
      属性命名遵循以下原则:
字符串长度规则采用有意义的列名,为实际含义的英文单词,且字符间不加任何分割符。
属性名前不要加表名等作为前缀,以用户数据库UserDepartment表部门状态为例,根据属性的命名规则,该名称为State,而非DepartmentState。
属性后不加任何类型标识作为后缀。以用户数据库UserDepartment表部门状态为例,根据属性的命名规则,该名称为State,而非State_Department。
不要使用"ID"等与系统保留关键字冲突的单词作为列名,以用户数据库UserDepartment表部门ID为例,根据属性的命名规则,该名称为DepartmentID。
文本类型的字段变长时用VARCHAR,定长用CHAR。
尽可能采用小数据类型,如时间类型字段:只需日期的使用date,只需时间的使用time,只须精确到分可以使用smalldatetime。
6.主键
任何表都必须定义主键。
表主键命名为:"PK+ _ + 表名(或缩写)+ _ +主键标识"。
以Department表属性DepartmentID为主键,根据主键命名规则,该主键名称为PK_Department_DepartmentID
以Department表属性DepartmentID、DeptCode为联合主键,根据主键命名规则,该主键名称为PK_Department_DepartmentID_DeptCode
7.外键
表外键命名为:"FK+ _ + 表名(或缩写)+ _ + 主表名(或缩写_)_+ _ + 主键标识"。
以UserClient表外键DepartmentID为例,其命名规则为FK_UserClient_Department_DepartmentID
8.索引
索引的命名为:"IDX+ _ + 表名(或缩写)+ _ + 列名"。
其中多单词组成的属性列列名取前几个单词首字符,加末单词组成。
以Department表DepartmentID列创建索引为例,其命名规则为IDX_Department_DepartmentID
9.视图
视图命名以"v+ 模块名",其他命名规则和表的命名类似。
以UserClient表与Department表关联视图为例,其命名规则为vUserClientInfo
10.存储过程
存储过程命名由"p+ 存储过程标识(缩写)"组成。
存储过程标识,单词首字母大写。
存储过程标识要以实际含义的英文单词构成,规则与属性规则相同,如pGetParentDept。
11.函数
函数命名由"f+ 函数标识"组成。
存储过程标识要以实际含义的英文单词构成,规则与属性规则相同,如:fGetParentDeptID。
16.  变量名
变量名与属性名规则相同,如:@ParentDeptID。
2、表使用规范
        1、创建表时,字段数不能超过40个,所有字段数据长度的总和应控制在8K以内。因为页为sql server数据库基本存储单位,其大小为8K。
              :字段数据长度的总和可以通过以下语句查询判断 select SUM(max_length) from sys.all_columns where [object_id]=object_id('表名')
        2、数据量较大、访问频繁的表,常用查询字段和非常用查询字段不要建在同一表中。
        3、文本类型的字段变长时用VARCHAR,定长用CHAR。
        4、尽可能采用小数据类型,如时间类型字段:只需日期的使用date,只需时间的使用time,  无须精确到分以后可以使用smalldatetime。
        5、横向分表原则:数据中需存储大对象时,必须横向分表;字段数超过40个时,必须横向分表。
        6、纵向分表原则:表记录数每天增量超过2W条时,必须纵向分发表;表数据量每天增量超过50M时;必须纵向分表。分表原则为:表名+时间。
              :表数据量每天增量只能通过业务分析,计算公式: 表每天增量=每天的数据条数*表字段总长度
        7、采用逻辑上的外键,即不在数据库表中设计外键。
        8、关于状态及类型等字段设计,使用tinyint。
        9、禁止字段允许为null。
        10、字段个数超过40个或数据记录数超过100W或表字段总长度超过8K的数据表,禁止再进行字段增加。
        11、字段长度,必须由业务方确认。
        12、字符串包含中文字符的,建议使用NVARCHAR;无中文字符,建议使用VARCHAR。
       
3、存储过程使用规范
      1、业务操作禁止使用存储过程完成。
      2、存储过程中事务操作尽可能短小。
      3、存储过程中对数据查询使用未提交读。
      4、将Nocount设置为On避免额外的网络开销
4、视图使用规范
      1、禁止创建超过4张表关联的视图
      2、视图中的表采用脏读(with(nolock))
      3、视图中禁止使用Group by
5、触发器使用规范
      禁止使用一切触发器
6、函数使用规范
        禁止业务操作使用函数完成
7、SQL语句使用规范
       单条SQL语句的CPU 消耗不能超过1000毫秒,读写消耗总和不能超过50000
      : 目前只能通过真实环境的数据库进行测试来检查。这个规则的目的,是为了既可以保证数据的性能,又可以不拘束开发人员的创造力。
所以每次提交语句审核时,需要附带提供可执行脚本,进行测试。
      1、禁止使用游标
      2、业务处理SQL语句,建议不使用GROUP BY
      3、禁止在没有使用TOP 关键字的语句中,使用ORDER BY
      4、禁止使用select *
      5、禁止使用DELETE
      6、需要判断数据是否存在后进行相关INSERT、UPDATE操作时,使用MERGE关键字。
      7、业务处理建议不使用临时表
    8、提交的审核的SQL语句必须注释清楚,注释内容包括:
            1、字段注释
            2、表注释
            3、使用的数据库
            4、应用场景
            5、输出记录条数或影响记录条数
            6、如使用in关键字,并且条件为参数时;必须说明参数的个数。例如:select A1 from Orderinfo where a1 in('110101001010101','1101010010101010')
7、数据库作业使用
    1、数据库不再创建业务作业。
8、版本数据兼容问题
    1、禁止通过修改数据库数据来进行版本兼容
9、数据库连接使用
    1、禁止使用配置文件的未加密数据库连接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。