SQL开发规范
版本
更新时间
修改人
备注
V1.0
2016
wp

命名规则    3
Pascal命名    3
表名和字段    3
存储过程    3
视图    3
其他    3
设计规范    4
规范约定    4
字段规范    4
使用规范    4
查询语句    4
数据修改    4
综合使用    4

命名规则
Pascal命名
1. 每一个单词的第一个字母大写,例如:BankName
2. 常用单词缩写三个字母以下字母都大写,例如:SP、PG
3. 常用单词缩写三个字母以上第一个字母大写,例如:Xml
表名和字段
1. 使用英文单词或词组作为表名,不得使用汉语拼音
2. 如有必要,建立一个中英文对照字典
3. 用名词和名词短语作表名
4. 不使用复数,除非与数据库保留字冲突
5. 用Pascal 命名规则
6. 尽量谨慎地使用缩写
7. 尽量不要和关键字重合
8. 必要时,使用下划线分割单词
示例
ProductName
存储过程
命名规则为TableName_action或前缀_ActionName,作业调度使用Job前缀, action或ActionName为存储过程含义用动词或动词短语来命名
sql触发器的使用
1. 使用常见的缩写,尽量不要和关键字重合
2. 适当的使用下划线分割过长的名称
3. 当操作依赖条件时,结尾使用 By+条件
4. 过长的SQL语句需要手工折行
示例:
AdminUser_ins Job_Dowork
视图
视图的命名采用V_ViewName的格式,其中V_前缀表示视图,ViewName部分表示视图的含义。
1. 使用英文单词或词组作为视图名,不得使用汉语拼音
2. 用名词和名词短语作视图名
3. 不使用复数,除非与数据库保留字冲突
4. 用Pascal 命名规则
5. 尽量谨慎地使用缩写
6. 尽量不要和关键字重合
7. 必要时,使用下划线分割单词
视图正确的命名,例如:
V_UserInfo
其他
1. 使用英文单词或词组作为数据库对象名,不得使用汉语拼音
2. 用名词和名词短语作为名称,非必要情况下不添加前缀
3. 不使用复数,除非与数据库保留字冲突
4. 用Pascal 命名规则
5. 尽量谨慎地使用缩写
6. 尽量不要和关键字重合
7. 必要时,使用下划线分割单词
设计规范
规范约定
遵守数据的设计规范3NF 规定
1. 表内的每一个值都只能被表达一次。
2. 表内的每一行都应该被唯一的标识(有唯一键)。
3. 表内不应该存储依赖于其他键的非键信息。
字段规范
1. 一行记录必须表内唯一,业务表必须有主键。
2. 金额类型使用Money,时间使用 DateTime。
3. ID结尾的字段一般由数字组成,Code结尾的字段一般由字母或数字组成。
使用规范
查询语句
1. 在表查询中,不要使用*作为查询的字段列表,需要哪些字段必须显式写明。
2. 在表查询中,必须有Where条件,除非此表为非增长表。
3. 在表查询中,一次最多返回的记录条数不要超过1000条或记录内容不要大于1MB的数据。
4. 在表查询中,作Order By排序时,优先使用主键列,索引列。
5. 多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联的字段需要有索引。
数据修改
1. 当批量增加/修改时,建议解决的原则:
a) 一次性传入数据到存储过程中,然后,拆分再加入表
b) 使用BCP/Bulk Insert的情况
2. 删除记录时,必须有Where唯一条件。
3. 当有主从表时,要先删除从表记录,在删除主表记录。
4. 修改记录时,必须有Where唯一条件。
5. 查询的数据库较大,且此查询功能经常被使用,需单独分页。
综合使用
1. 数据库的结构修改必须报项目负责人知晓,任何开发人员不得擅自增加或者修改数据库对象。需要修改,需要讨论并将提交变更请求跟上级主管或项目负责人。
2. 数据访问层一律使用存储过程访问数据库,不得在.NET程序使用直接的DML语句访问数据库。有特殊要求,需要提请项目负责人批准。
3. 不要将大量业务逻辑都写在一个存储过程里,尽量使一个存储过程完成单一功能,复杂存储过程可以由多个单一功能存储过程组成。
4. 开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的定义(名称、字段列表、顺序、索引类型)以及建立的理由。项目负责人统一维护索引并将提交的请求更改。
5. 数据库各表的初始数据(包含各代码表、配置表)需要提交给项目负责人。
6. 禁止使用触发器。
7. 涉及到数据库数据的批量更改必须使用事务进行控制,必须有事务开始和提交/回滚机制。
8. 避免Union操作的使用,需要使用时,请向项目负责人咨询使用Union操作的影响。