2022年数据库设计及使用规范归纳 .pdf
数据库设计及使用规范在本项目中,数据库的设计和使用必须遵循以下原则:1 命名原则1.1 约定:Pascal Casing 命名方式:1.每一个单词的第一个字母大写,例如:BankName。2.常用单词缩写三个字母以下字母都大写,例如:SP、PG3.常用单词缩写三个字母以上第一个字母大写,例如:Xml1.2 表名和字段规则如下:使用英文单词或词组作为表名,不得使用汉语拼音用名词和名词短语作表名不使用复数用 Pascal 命名规则尽量谨慎地使用缩写尽量不要和关键字重合不要用任何名前缀(例如U, B)数据库对象名称不使用下划线正确的命名,例如:UserSPServiceOrder1.3 存储过程规则如下:命名规则为up_xxx_StoredProcedureName,up 表示 User Procedure,用来区分它和系统存储过程,xxx 表示子系统的名称,由三个字母构成, 各个子系统参见下表,StoredProcedureName名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 为存储过程含义StoredProcedureName 规则如下:用动词或动词短语来命名,并带有宾语需要符合用Pascal 命名规则。尽量谨慎地使用缩写尽量不要和关键字重合不要用任何名前缀(例如 U, B)StoredProcedureName 内不使用下划线当操作依赖条件时,一般结尾使用By+条件存储过程正确的命名,例如:Up_Usr_InsertUserUp_Usr_SearchUserByUserIDUp_Usr_DeleteUserByUserID各个子系统的缩写如下:序号模块缩写英文全名模块名称1usrUser Portal用户自服务门户2BapBusinessAdministrationPortal业务管理门户3SppSPPortalSP 自服务门户4ifcInterface接口子系统5BilBilling计费子系统6StmSettlement结算子系统7Sys各个子系统公用的存储过程8AccAccount账务管理1.4 视图规则如下:视图的命名采用vwViewName 的格式,其中vw 前缀表示视图,ViewName 部分表示视图的含义。ViewName 规则如下:用名词和名词短语,不使用复数用 Pascal 命名规则尽量谨慎地使用缩写尽量不要和关键字重合不要用任何名前缀(例如 U, B)ViewName 中使用下划线名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 视图正确的命名,例如:vwUserViewvwUserOrderViewvwTranscationView视图错误的命名,例如:UserViewvw_Transcation_View2 设计规范2.1 规范约定遵守数据的设计规范3NF 规定 表内的每一个值都只能被表达一次。 表内的每一行都应该被唯一的标识(有唯一键)。 表内不应该存储依赖于其他键的非键信息。2.2 字段规范1.一行记录必须表内唯一,表必须有主键。2.金额类型使用Money3.时间使用DateTime4.枚举类型使用Varchar(2)、Varchar(4),且需要说明枚举类型的各个不同取值的含义,例如 00,01,0000,00015.ID 结尾的字段为仅由数字组成,Code 结尾的字段为仅由字母或数字组成3 使用规范3.1 综合1.数据库的结构只有数据库管理员能够修改,任何开发人员不得自己增加数据库对象或者修改数据库对象。若要修改,需要讨论并将修改请求(含改动的内容和原因)提交数据库管理员,修改参见“数据库修改记录表”。2.数据访问层一律使用存储过程访问数据库,不得在.NET 程序使用直接的DML 语句访问数据库。如果有特殊要求,如对速度有特殊要求等,需要提名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 请数据库管理员批准。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.当有主从表时,要先删除从表记录,在删除主表记录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 3.5 修改1.修改记录时,必须有Where 唯一条件4 注意1.如果使用原来系统的表、存储过程等名和实现方式不用修改,即使用原来的方式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -