1、数据库设计规范编码规范数据库编码规范1 目的为了统一公司软件开发的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。2 范围本规范适用于全体开发人员,作用于软件项目开发的数据库设计、维护阶段。3 术语 数据库对象:在数据库软件开发中,数据库服务器端涉及的对象包括物理结构和逻辑结构的对象。 物理结构对象:是指设备管理元素,包括数据文件和事务日志文件的名称、大小、目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。一般对数据库服务器物理设备的管理规程,在整个项目/产品的概要设计阶段予以规划。 逻辑结构对象:是指数据库对象的管理元素,包括数据库名称
2、、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关的设计等。4 设计概要4.1 设计环境a) ORACLE 11G R2数据库 ORACLE 11G R2操作系统LINUX 6以上版本,显示图形操作界面b) MS SQL SERVER 2005数据库 SQL SERVER 2005 企业版打sp3以上补丁和安全补丁操作系统 WINDOWS 2008 SERVER 4.2 设计使用工具a)使用PowerDesigner 做为数据库的设计工具,要求为主要字段做详尽说明。对于SQL Server 尽量使用企业
3、管理器对数据库进行设计,并且要求对表,字段编写详细的说明(这些将作为扩展属性存入SQL Server中)b)通过PowerDesigner 定制word格式报表,并导出word文档,作为数据字典保存,格式。(PowerDesigner v10 才具有定制导出word格式报表的功能)。对于SQL Server 一旦在企业管理器进行数据库设计时加入扩展属性,就可以通过编写简单的工具将数据字典导出。c) 编写数据库建数据库、建数据库对象、初始化数据脚本文件4.3 设计原则a) 采用多数据文件b) 禁止使用过大的数据文件,unix系统不大于2GB,window系统不超过500MBc) oracle数据
4、库中必须将索引建立在索引表空间里。d) 基本信息表在建立时就分配足够的存储空间,禁止其自动扩展功能e) 大文本字列、blob列要独立出一张表,此表只有id和blob(或大文本)列f) 为每一个数据库创建独立的管理员用户,使用该用户进行设计,尽量不要使用sa或者系统管理员身份进行数据库设计。4.4 设计的更新a) 在设计阶段,由数据库管理员或指定的项目组其一成员进行维护。b) 运行阶段,由数据库管理员进行维护。c) 如对表结构进行修改,应先在数据字典文档进行修改,最后在数据库中进行修改。如果修改的是数据库字典表,必须由数据库管理员进行。d) 编写更新的SQL代码,如果使用PowerDesigne
5、r,禁止由PowerDesigner直接连数据库进行数据库操作(如果是更改表或者字段的说明性文字可以通过数据库管理器图形界面进行修改)e) 修改数据库要通过SQL,禁止其它方式对数据进行修改f) 修改数据库的SQL要添加说明后保存备查5 命名总体原则 设定的前缀一律用小写字母 标识名称命名全部小写 整个命名的全长不得超过30个字母 全部使用字母和下划线_,不能使用中文和其他字符,有特别情况允许使用末尾数字编号。例如:t_Finace1, t_Finace2. 命名名称来自于业务,全部采用英文单词 英文单词过长可以采用通用的缩写,尽量表达出业务的含义 如需要两个以上的英文单词做标识名称,单词之间
6、要用下划线_连接 名称全是由名词组成的,名词由大范围到小范围排序取名 完成某功能的名称,如函数和过程,以动宾形式取名6 命名规范(逻辑对象)6.1 数据库结构命名a) 数据库命名数据库的命名要求使用与数据库意义相关联的英文字母,即。例如:china care 数据库的命名为ccnet;客户资料数据库的命名为Customer_Info。b) 数据库日志设计命名数据库日志的的命名以_.log格式命名。其中,为有意义的数据库日志名称。例如: ccnet_logredo.logc) 数据库配置设计命名数据库配置设计方案是以文件形式保存的,其内容是关于特定数据库的配置项目的具体值。数据库配置文件的命名以
7、:数据库类型简写_cfg.ini格式命名。其中,数据库类型简写见附件2数据库类型简写,cfq表示该文件是数据库配置文件。例如:ORA_ ccnet_cfg.inid) 数据库复制与存储设计命名 数据库复制与存储设计方案是以文件形式保存的,其内容是关于特定数据库之间的复制策略的具体细节。数据库复制与存储设计文件的命名以:_rep.txt格式命名。其中,数据库类型简写见附件2数据库类型简写,rep表示该文件是数据库复制与存储文件。e) 数据库连接设计命名 数据库连接设计方案是以文件形式保存的,其内容是关于特定分布式数据库之间的连接设计的具体细节。数据库连接设计文件的命名以:_dbl. sql格式命
8、名。其中,数据库类型简写见附件2数据库类型简写,dbl表示该文件是数据库连接设计文件。f) 表空间、数据文件命名(主要针对Oracle)索引表空间:表空间命名格式:ts_i数据库文件命名格式:ts_in.dbf临时表空间:表空间命名格式:ts_t数据库文件命名格式:ts_tn.dbf回滚表空间:表空间命名格式:ts_r数据库文件命名格式:ts_rn.dbf数据表空间:表空间命名格式:ts_d数据库文件命名格式:ts_dn.dbf注:表空间名不超过8位,n 可取00-99或0-9,根据系统数据量确定。6.2 数据库对象命名a) 表表的命名必须以“t_”(Table缩写)开头,格式为:t_系统标识
9、_。其中, 表示可选项,依据实际情况而增加; 要求与表意义相关联的英文字母,例如:t_Customers。数据表大致分为:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结算数据表、决策数据表;基本编码表用base标志累计数据表用count标志系统信息表用info标志 .例如:t_trade_base_trade_code,t_trade_info_help .b) 字段/域根据业务要求进行命名,不需设定固定的前缀。c) 索引针对数据库表中一个或多个字段建立的索引的命名格式应以“idx_”开头,索引列名间用_隔开,即为idx_ColumnName1_ColumnName2_其中,C
10、olumnName1是数据库表中(第一个)索引字段的名称或名称简写;ColumnName2是数据库表中(第二个)索引字段的名称或名称简写;索引名的总长必需符合数据库的规定。例:idx_cert_number (表示在字段cert_number上创建索引)为了避免重名索引出现,可选命名方式为 idx_ 作为索引的命名,但是要求在数据字典中进行详细说明d) 视图视图的命名必须以“v_”(View 缩写)开头,格式为: v_系统标识 _。其中,视图类型参见“表的分类说明”;系统标识_是可选项,依据情况而增加; 应与视图意义相关联的英文字母。例:v_user_detail_infoe) 存储过程存储过
11、程的命名必须符合sp_系统标识_格式。其中,sp表示是存储过程;系统标识为可选项,依据情况而增加;是与存储过程意义相关联的英文字母,例如:USP_Query_Write_to_Disk。 例:sp_check_user_auth(以动宾方式取名)f) 触发器触发器的的命名必须符合tr_ 格式。其中,tr表示是触发器;是与触发器意义相关联的英文字母。例:tr_user_info_iu (表示对user_info表进行插入、更新的触发器)g) 函数函数的命名必须符合fn_系统标识_格式。其中,fn表示是函数,系统标识为可选项,依情况而定;是与函数意义相关联的英文字母。例:fn_create_id(
12、以动宾方式取名)h) 自定义数据类型自定义数据类型的命名格式为:ud_i) Default(缺省)Default(缺省)的命名格式一般为:df_;对于非绑定的默认可取系统默认的名字,请参见第8.1点实例绑定具体字段。例:df_begin_date 缺省开始日期 if exists (select * from sysobjects where type = D and name = df_begin_date)drop default dbo.df_begin_dategocreate default df_begin_date as goj) Check、Constraint(约束)约束的命
13、名格式一般为:ck_ ;一些约束可直接放在生成表的语句中。例:ck_flag 参见第8.1点实例,约束字段flag只能取字符0到9:constraint ck_flag CHECK (flag between 0 and 9 )k) Rule(规则)规则的命名格式一般为:rl_;对于非绑定规则(约束) 可取系统默认的名字,参见第10点设计实例绑定具体字段。例:rl_not_zero (定义一个不等于0的规则)if exists (select * from sysobjects where type = R and name = rl_not_zero)drop rule dbo.rl_not
14、_zerogocreate rule rl_not_zero as i 0gol) 主键主键的命名格式为pk_。例:pk_user_info_userid (表user_info以字段userid创建主键)m) 外键外键的命名格式为fk_。可选命名方式为 fk_ 作为索引的命名,但是要求在数据字典中进行详细说明例:fk_user_info_department_deptid (在表user_info的字段department_id上创建外键,参照主表department)n) 同义词(ORACLE)同义词的命名格式为:sy_例:sy_user_info (为所有权属于ben的表user_inf
15、o的公共同义词)7 脚本注释7.1 存储过程或触发器a) 每一个存储过程或触发器都要在最前面写注释,注释如下/*writer:create date:ver:Depiction:remark:*/另外,过程中声明的重要变量要有注释,例如: iActionFlag int = 0 /* 0 = Checkout, 1 = GetLatest, 2 = UndoCheckOut */b) 如果只对存储过程或触发器进行部分修改时须添加以下注释:/*rewriter: add(rewriter): date: start1:修改描述:*/* 原代码内容*/(修改时)/*rewriter: date:
16、end1: */*rewriter: add(rewriter): date: start2: */新代码内容/*rewriter: date: end2: */c) 如果对存储过程或触发器有较大的修改,可增加修改内容的注释。 /*Log Id: rewriter: rewrite date:Depiction: */7.2 自定义函数a) 每一个自定义函数都要在其前面写注释,注释如下/*function name:xxxx Depiction:param(a,b) a 功能或描述. b 功能或描述output: x x=0表示. x=1 表示. writer: create date:ver
17、: remark:* /另外,函数中声明的重要变量要有注释,例如: iActionFlag int = 0 /* 0 = Checkout, 1 = GetLatest, 2 = UndoCheckOut */b) 如果只对函数进行部分修改时须添加以下注释:/*rewriter: add(rewriter): date: start1:修改描述:*/* 原代码内容*/(修改时)/*rewriter: date: end1:*/*rewriter: add(rewriter): date: start2: */新代码内容/*rewriter: date: end2: */c) 如果对函数有较大的
18、修改,可增加修改内容的注释。 /*Log id: rewriter: rewrite date:Depiction: */8 数据库操作原则8.1 建立、删除、修改库表操作 在开发环境中,对于自己的库表可任意进行修改、删除操作;但需保留相应的建表语句和说明,与建表人建表时间。8.2 添加、删除、修改表数据 在开发环境中,开发人员所开发模块独自使用的库表,可自由操作表中数据; 对其他模块关联的库表,应取得其他模块的开发人员同意后再执行操作; 系统的信息表、字典表的修改应向数据库的管理员提出操作需求,由数据库的管理员执行操作。9 常用字段命名(参考)9.1 系统信息常用字段字段名称 字段代码 OR
19、ACLE SQLSERVER 值 说明用户标识 user_id char(8) char(8) 用于登录应用系统的标识, 填写数字。一般做主键,要填满长度。用户名称 user_name varchar2(20) varchar(20) 用户标识对应的名称组标识 grp_id char(4) char(4) 用户所属的组标识,填写数字。一般做主键,要填满长度。组名称 grp_name varchar2(50) varchar (50) 组标识对应名称组权限标识 grp_auth_id char(2) char(2) 由低到高,从00到99。要填满长度组权限名称 grp_auth_name var
20、char2(50) varchar (50) 组权限标识对应名称密码 password varchar2(30) varchar(30)9.2 客户个人信息常用字段字段名称 字段代码 ORACLE SQLSERVER 值 说明客户标识 customer_id char(?) char(?) 业务系统使用的客户标识,一般做主键,不用可变长类型。要填满长度。客户姓名 customer_name varchar2(50) varchar(50)部门标识 dept_id char(?) char(?) 一般做主键,不用可变长类型。要填满长度。部门名称 dept_name varchar2(50) va
21、rchar(50)性别 sex char(1) char(1) F/M 以下没有标识的,直接在字段中填写具体值婚姻状况 marriagestatus varchar2(50) varchar(50)出生日期 birthday date smalldatetime身高 hight number(5,2) dec(5,2) 单位为厘米体重 weight number(5,2) dec(5,2) 单位为公斤民族 nationality varchar2(20) varchar(20)联系电话 phone varchar2(50) varchar(50)家庭电话 home_phone varchar2
22、(50) varchar(50)办公电话1 office_phone1 varchar2(50) varchar(50)办公电话2 office_phone2 varchar2(50) varchar(50)区号 zone varchar2(20) varchar(20)传真号码 office_fax varchar2(50) varchar(50)移动电话 mobil_phone varchar2(50) varchar(50)电子信箱 email varchar2(50) varchar(50)邮政编码 post_code varchar2(20) varchar(20)国籍 country varchar2(50) varchar(50)居住省 province varchar2(20) varchar(20)居住市 city varchar2(20) varchar(20)家庭住址 home_addr varchar2(80)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1