数据库开发规范
2013-04-15 17:44
239 查看
1. 目的
本文档旨在为数据库设计提供一种公共标准,基于这种标准的数据库设计,能够在保证性能的基础上,兼顾管理与维护的成本,同时,标准化的设计也有益于代码交流,降低因为不同人员的设计网络导致的的代码兼容风险。
2. 范围
本规范适用于所有与数据库交互的开发人员。
3. 命名
3.1. 命名规则
所有对象遵循“长名”(除非常通用的简写外,尽量避免使用简写)和“表意”(通过名称大致知道该对象所表达的内容)两个原则,命名中的多个单词通过大小写或者下划线(_)区隔。常用对象的命名说明如下
3.1.1. 表命名
遵循通用原则,使用小写字符,能够清楚表明表中数据内容,使用表明表中数据内容的名词短语。建议格式:[模块名_]+主体,如:user_profile,employee
3.1.2. 字段命名
使用小写字符,表明栏位内容,使用表明栏位内容的名词短语,可在适当时使用下划线。建议格式:[模块名_]+主体,如id,customer_name
3.1.3. 视图命名
参考表命名方式,一般以前缀v_以示区隔。建议格式:v_[模块名_]+主体,如v_author
3.1.4. 存储过程命名
使用小写字符,命名要表明存储过程的功能,可以使用下划线区隔单词,存储过程不得以sp_开头。建议格式:usp_[模块名_]+主体,如usp_purge_history_data
3.1.5. 函数命名
使用小写字符,命名要表明函数的功能,可以使用下划线区隔单词。函数不得以fn_开头。建议格式:udf_[模块名_]+主体,如udf_get_user_name
3.1.6. 触发器命名
使用小写字符,使用trg_%table_name%_%action_type%_%function_name%的形式,i/u/d分别表示insert,update,delete动作。建议格式:trg_<table_name>+<i/u/d>+[_主体],如:trg_user_profile_i,trg_user_profile_iud
3.1.7. 主键命名
使用小写字符,使用pk_%table_name%的形式,其中%table_name%表示表名,建议格式:pk_<table_name>,如pk_author
3.1.8. 唯一键命名
使用小写字符,使用uq_%table_name%的形式,其中%table_name%表示表名,建议格式:uq_<table_name>,如uq_author
3.1.9. 外键命名
使用小写字符,使用fk_%foreign_key_table_name%_%foreign_key_column_name%
的形式,%foreign_key_table_name%表示约束该键的表名,%foreign_key_column_name%表示约束该键的栏位名,当约束的栏位有多个时,按次序依次呈现。建议格式:
fk_<foreign_key_table_name>_<foreign_key_column_name>,如fk_employee_id
3.1.10. 非聚集索引命名
使用小写字符,使用idx_%table_name%_%column_name%的形式,%table_name%表示非聚集索引的表名,%column_name%表示非聚集索引的栏位名。建议格式:
Idx_< table_name >_< column_name> ,如:idx_author_date
3.1.11. 聚集索引命名
使用小写字符,使用cidx_%table_name%_%column_name%的形式,%table_name%表示非聚集索引的表名,%column_name%表示非聚集索引的栏位名。建议格式:
cIdx_< table_name >_< column_name> ,如:cidx_author_id
3.1.12. 缺省值命名
使用小写字符,使用df_%table_name%_%column_name%形式,%table_name%表示缺省值作用的表名,%column_name%表示缺省值的栏位名。建议格式:
df_< table_name >_< column_name >,如:df_author_id
3.1.13. 约束命名
使用小写字符,使用ck_%table_name%_%column_name%形式,%table_name%表示约束作用的表名,%column_name%表示约束的栏位名。建议格式:
ck_< table_name >_< column_name >,如:ck_author_id
3.2. 缩写规则
为了避免混淆和保证跨语言交互操作,建议遵循下面有关缩写的规则
3.2.1. 词典中出现的缩写,如:UI(User Interface) ,ID(identification,identity)
3.2.2. 项目名称缩写及项目开始时候约定的缩写,如:PMS(Project Mangement System)
3.2.3. 计算机领域普遍认可的缩写,如:HTML,ADO,MSN,QQ,VBA
4. 代码书写格式
4.1. 书写规则
4.1.1. 大写或者小写所有T-SQL关键字,包括系统函数。
4.1.2. 数据库对象保持与定义时一致
书写代码时,数据库对象(如:表名,字段名等)保持与定义时候一致。
4.1.3. 不要在代码里书写select * 而应该采用select column1形式,其中以下情况不受约束
4.1.3.1. 聚合
4.1.3.2. 子查询
4.1.4. insert语句中需要指定字段名。
以下格式供参考:
4.1.5. 当一个SQL中涉及多个表时,始终使用表名或者表的别名来限定字段名,以免不同表之间存在相同的字段名的冲突,使阅读更加清晰。
4.2. 排版规则
4.2.1. 缩进
4.2.1.1. 代码块内部的代码相对于begin ……end关键字要缩进。
以下格式供参考:
4.2.1.2. 函数和存储过程参数列表要采用缩进风格,且每个参数独占一行。
以下格式供参考:
4.2.2. 断行
4.2.2.1. 每条语句建议至少独占一行。
以下格式供参考
4.2.2.2. 当一条SQL语句超过约120个字符(1028*768),建议换行,建议参考以下原则
4.2.2.3. 用空行分割代码逻辑块
以下格式供参考
5. 注释规则
5.1. 头注释
代码文件头部要进行注释。所有函数,过程,触发器,都必须要有注释。
注释位置:文件的顶部
注释内容:版权说明,作者,生成日期,功能描述,修改日志等等
以下格式供参考
5.2. 注释规则
5.2.1. 注释内容放在被注释代码的上方或者右方
以下格式供参考
5.2.2. 注释必须能明确表达被注释代码的功能,内容等,不能简单的复制代码片段。
以下格式供参考:
本文档旨在为数据库设计提供一种公共标准,基于这种标准的数据库设计,能够在保证性能的基础上,兼顾管理与维护的成本,同时,标准化的设计也有益于代码交流,降低因为不同人员的设计网络导致的的代码兼容风险。
2. 范围
本规范适用于所有与数据库交互的开发人员。
3. 命名
3.1. 命名规则
所有对象遵循“长名”(除非常通用的简写外,尽量避免使用简写)和“表意”(通过名称大致知道该对象所表达的内容)两个原则,命名中的多个单词通过大小写或者下划线(_)区隔。常用对象的命名说明如下
3.1.1. 表命名
遵循通用原则,使用小写字符,能够清楚表明表中数据内容,使用表明表中数据内容的名词短语。建议格式:[模块名_]+主体,如:user_profile,employee
3.1.2. 字段命名
使用小写字符,表明栏位内容,使用表明栏位内容的名词短语,可在适当时使用下划线。建议格式:[模块名_]+主体,如id,customer_name
3.1.3. 视图命名
参考表命名方式,一般以前缀v_以示区隔。建议格式:v_[模块名_]+主体,如v_author
3.1.4. 存储过程命名
使用小写字符,命名要表明存储过程的功能,可以使用下划线区隔单词,存储过程不得以sp_开头。建议格式:usp_[模块名_]+主体,如usp_purge_history_data
3.1.5. 函数命名
使用小写字符,命名要表明函数的功能,可以使用下划线区隔单词。函数不得以fn_开头。建议格式:udf_[模块名_]+主体,如udf_get_user_name
3.1.6. 触发器命名
使用小写字符,使用trg_%table_name%_%action_type%_%function_name%的形式,i/u/d分别表示insert,update,delete动作。建议格式:trg_<table_name>+<i/u/d>+[_主体],如:trg_user_profile_i,trg_user_profile_iud
3.1.7. 主键命名
使用小写字符,使用pk_%table_name%的形式,其中%table_name%表示表名,建议格式:pk_<table_name>,如pk_author
3.1.8. 唯一键命名
使用小写字符,使用uq_%table_name%的形式,其中%table_name%表示表名,建议格式:uq_<table_name>,如uq_author
3.1.9. 外键命名
使用小写字符,使用fk_%foreign_key_table_name%_%foreign_key_column_name%
的形式,%foreign_key_table_name%表示约束该键的表名,%foreign_key_column_name%表示约束该键的栏位名,当约束的栏位有多个时,按次序依次呈现。建议格式:
fk_<foreign_key_table_name>_<foreign_key_column_name>,如fk_employee_id
3.1.10. 非聚集索引命名
使用小写字符,使用idx_%table_name%_%column_name%的形式,%table_name%表示非聚集索引的表名,%column_name%表示非聚集索引的栏位名。建议格式:
Idx_< table_name >_< column_name> ,如:idx_author_date
3.1.11. 聚集索引命名
使用小写字符,使用cidx_%table_name%_%column_name%的形式,%table_name%表示非聚集索引的表名,%column_name%表示非聚集索引的栏位名。建议格式:
cIdx_< table_name >_< column_name> ,如:cidx_author_id
3.1.12. 缺省值命名
使用小写字符,使用df_%table_name%_%column_name%形式,%table_name%表示缺省值作用的表名,%column_name%表示缺省值的栏位名。建议格式:
df_< table_name >_< column_name >,如:df_author_id
3.1.13. 约束命名
使用小写字符,使用ck_%table_name%_%column_name%形式,%table_name%表示约束作用的表名,%column_name%表示约束的栏位名。建议格式:
ck_< table_name >_< column_name >,如:ck_author_id
3.2. 缩写规则
为了避免混淆和保证跨语言交互操作,建议遵循下面有关缩写的规则
3.2.1. 词典中出现的缩写,如:UI(User Interface) ,ID(identification,identity)
3.2.2. 项目名称缩写及项目开始时候约定的缩写,如:PMS(Project Mangement System)
3.2.3. 计算机领域普遍认可的缩写,如:HTML,ADO,MSN,QQ,VBA
4. 代码书写格式
4.1. 书写规则
4.1.1. 大写或者小写所有T-SQL关键字,包括系统函数。
4.1.2. 数据库对象保持与定义时一致
书写代码时,数据库对象(如:表名,字段名等)保持与定义时候一致。
4.1.3. 不要在代码里书写select * 而应该采用select column1形式,其中以下情况不受约束
4.1.3.1. 聚合
select count(*) from table_name |
select a.column1 from ta a where exists ( select * from tb b where a.id=t.id ) |
以下格式供参考:
insert into table_name (colmun1, column2) Values ( 'column_value1', 'column_value1') |
select a.column1, b.column2 from ta a inner join tb b on a.id=b.id |
4.2.1. 缩进
4.2.1.1. 代码块内部的代码相对于begin ……end关键字要缩进。
以下格式供参考:
begin select a.column1, b.column2 from ta a inner join tb b on a.id=b.id end |
以下格式供参考:
create procedure dbo.usp_procedure_name @param1 int , @param2 int output as |
4.2.2.1. 每条语句建议至少独占一行。
以下格式供参考
declare @param1 int declare @param2 int set @param1=1 set @param2=100 |
T-SQL语句 | 同一行互斥的SQL关键字列表 |
所有的DML语句并列的where条件 | where、and、or (column between value1 and value2中的and不受此条约束) |
insert 语句 | insert、values、select |
select语句 | select、into、from、where、group by、having、 order by、union、join |
update语句 | update、set、where、from |
delete语句 | delete、where |
子查询 | 子查询内部的SQL需要遵守上述规定 |
以下格式供参考
Begin --如:入库操作 exec dbo.usp_procedure_name1 end ---------------------------------------此处为空行 begin --如:出库操作 exec dbo.usp_procedure_name2 end |
5.1. 头注释
代码文件头部要进行注释。所有函数,过程,触发器,都必须要有注释。
注释位置:文件的顶部
注释内容:版权说明,作者,生成日期,功能描述,修改日志等等
以下格式供参考
/*=================================================================== Function: Author: CeateDate: Version: Description: =================================================================== ** change history ** Date: ModifyBy: Description: ===================================================================*/ |
5.2.1. 注释内容放在被注释代码的上方或者右方
以下格式供参考
--get total record count select count(*) from table_name --get the maximum record select max(price) from table_name |
以下格式供参考:
alter procedure [sys].[sp_defaultdb] @loginname sysname,--login name @defdb sysname --default db as --setup runtime option/declare variables set nocount on declare @exec_stmt nvarchar(4000) declare @ret int --return value of sp call --disallow user transaction set implicit_transactions off |
相关文章推荐
- Oracle数据库开发和设计规范
- 为公司开发定的数据库规范
- 数据库开发文档编写规范
- jsp+javabean开发模式下,数据库sql语句的编写规范
- 阿里巴巴 JAVA开发手册 内含大量规范,应用范例.涉及数据库,高并发,集合,索引等等大量干货
- 数据库SQL开发规范
- 蛙蛙推荐:一个公司的数据库开发规范.doc
- Oracle数据库开发和设计规范
- 【数据库管理】数据库开发规范(oracle)1
- 数据库开发规范(主要针对ms sql,其它也类推)
- PostgreSQL数据库开发规范
- 阿里巴巴 JAVA开发手册 内含大量规范,应用范例.涉及数据库,高并发,集合,索引等等大量干货
- 数据库开发规范
- 数据库开发中的一些设计以及命名规范
- MS SQL数据库开发规范
- 数据库开发规范
- Mysql 数据库开发规范
- MySQL实战(六)数据库开发规范
- 数据库开发规范
- MySQL 数据库开发规范