文档内容
数据库设计及使用规范
在本项目中, 数据库的设计和使用必须遵循以下原则:
1 命名原则
1.1 约定:
Pascal Casing命名方式:
1. 每一个单词的第一个字母大写,例如:BankName。
2. 常用单词缩写三个字母以下字母都大写,例如:SP、PG
3. 常用单词缩写三个字母以上第一个字母大写,例如:Xml
1.2 表名和字段
规则如下:
使用英文单词或词组作为表名,不得使用汉语拼音
用名词和名词短语作表名
不使用复数
用Pascal 命名规则
尽量谨慎地使用缩写
尽量不要和关键字重合
不要用任何名前缀 (例如 U,B)
数据库对象名称不使用下划线
正确的命名,例如:
User
SPService
Order1.3 存储过程
规则如下:
命名规则为up_xxx_StoredProcedureName,up表示User Procedure,用来区分它和系统存储
过程,xxx表示子系统的名称,由三个字母构成,各个子系统参见下表,StoredProcedureName
为存储过程含义
StoredProcedureName规则如下:
用动词或动词短语来命名,并带有宾语
需要符合用Pascal 命名规则。
尽量谨慎地使用缩写
尽量不要和关键字重合
不要用任何名前缀 (例如 U,B)
StoredProcedureName内不使用下划线
当操作依赖条件时,一般结尾使用 By+条件
存储过程正确的命名,例如:
Up_Usr_InsertUser
Up_Usr_SearchUserByUserID
Up_Usr_DeleteUserByUserID
各个子系统的缩写如下:
序号 模块缩写 英文全名 模块名称
1 usr User Portal 用户自服务门户
2 Bap Business Administration 业务管理门户
Portal
3 Spp SP Portal SP自服务门户
4 ifc Interface 接口子系统
5 Bil Billing 计费子系统
6 Stm Settlement 结算子系统
7 Sys 各个子系统公用的存储
过程
8 Acc Account 账务管理
1.4 视图
规则如下:
视图的命名采用vwViewName的格式,其中vw前缀表示视图,ViewName部分表示视图
的含义。
ViewName规则如下:
用名词和名词短语,
不使用复数 用Pascal 命名规则
尽量谨慎地使用缩写
尽量不要和关键字重合
不要用任何名前缀 (例如 U,B)
ViewName中使用下划线
视图正确的命名,例如:
vwUserView
vwUserOrderView
vwTranscationView
视图错误的命名,例如:
UserView
vw_Transcation_View
2 设计规范
2.1 规范约定
遵守数据的设计规范3NF 规定
· 表内的每一个值都只能被表达一次。
· 表内的每一行都应该被唯一的标识(有唯一键)。
· 表内不应该存储依赖于其他键的非键信息。
2.2 字段规范
1. 一行记录必须表内唯一,表必须有主键。
2. 金额类型使用Money
3. 时间使用 DateTime
4. 枚举类型使用 Varchar(2)、Varchar(4),且需要说明枚举类型的各个不同取值的含义,例
如 00,01,0000,0001
5. ID结尾的字段为仅由数字组成,Code结尾的字段为仅由字母或数字组成3 使用规范
3.1 综合
1. 数据库的结构只有数据库管理员能够修改,任何开发人员不得自己增加数
据库对象或者修改数据库对象。若要修改,需要讨论并将修改请求(含改动
的内容和原因)提交数据库管理员,修改参见“数据库修改记录表”。
2. 数据访问层一律使用存储过程访问数据库,不得在.NET程序使用直接的
DML语句访问数据库。如果有特殊要求,如对速度有特殊要求等,需要提请
数据库管理员批准。
3. 尽量使一个存储过程完成单一功能,复杂存储过程可以由多个单一功能存
储过程组成,例如,一个存储过程要增加一个表的记录并删除另一个表的记
录,这个存储过程可以有两个子存储过程组成。
4. 在编写存储过程和.NET数据访问程序的时候,需要通过Query Analyzer分
析,确保对数据库的操作使用了有效的索引。不得有对全表的扫描操作。
5. 如果开发过程中需要建立索引,需要提交书面的更改请求,说明所需索引的
定义(名称、字段列表、顺序、索引类型)以及建立的理由。数据库管理员统一
维护索引并将提交的请求更改。
6. 数据库各表的初始数据(包含各代码表、配置表)需要提交给数据库管理员。
7. 不得使用触发器。
8. 涉及到数据库数据的更改(Insert/Delete/Update)必须使用事务进行控制,并
且必须有完整事务开始和提交/回滚机制。
9. 尽量避免Union操作的使用,需要使用时,请向数据库管理员咨询使用
Union操作的影响。
3.2 查询
1. 在表查询中,一律不要使用* 作为查询的字段列表,需要哪些字段必须显式
写明
2. 在表查询中,必须有Where条件,除非此表为非增长表
3. 在表查询中,一次最多返回的记录条数不要超过1000条或记录内容不要大
于1MB的数据。
4. 在表查询中,作Order By排序时,优先使用主键列,索引列
5. 多表关联查询时,优先使用Where条件,再作表关联,并且需要保证被关联
的字段需要有索引。3.3 增加
1. 当批量增加时,建议解决的原则:
一次性传入数据到存储过程中,然后,拆分再加入表;
使用table变量
有否使用BCP/Bulk Insert的情况
3.4 删除
1. 删除记录时,必须有Where唯一条件
2. 当有主从表时,要先删除从表记录,在删除主表记录
3.5 修改
1. 修改记录时,必须有Where唯一条件
4 注意
1. 如果使用原来系统的表、存储过程等名和实现方式不用修改,即使用原来的方式。