数据库设计规范 编码规范.docx
《数据库设计规范 编码规范.docx》由会员分享,可在线阅读,更多相关《数据库设计规范 编码规范.docx(36页珍藏版)》请在冰点文库上搜索。
数据库设计规范编码规范
数据库编码规范
目的1
为了统一公司软件开发的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。
2范围
本规范适用于全体开发人员,作用于软件项目开发的数据库设计、维护阶段。
术语3
数据库对象:
在数据库软件开发中,数据库服务器端涉及的对象包括物理结构和逻?
辑结构的对象。
物理结构对象:
是指设备管理元素,包括数据文件和事务日志文件的名称、大小、?
目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。
一般对数据库服产品的概要设计阶段予以规划。
务器物理设备的管理规程,在整个项目/
逻辑结构对象:
是指数据库对象的管理元素,包括数据库名称、表空间、表、字段?
域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据/库配置有关的设计以及数据库中其他特性处理相关的设计等。
4设计概要
4.1设计环境R2ORACLE11Ga)
数据库ORACLE11GR2
操作系统LINUX6以上版本,显示图形操作界面
b)MSSQLSERVER2005
数据库企业版SQLSERVER2005
以上补丁和安全补丁打sp3
操作系统WINDOWS2008SERVER
4.2设计使用工具做为数据库的设计工具,要求为主要字段做详尽说明。
对于PowerDesignera)使用尽量使用企业管理器对数据库进行设计,并且要求对表,字段编写详细的说SQLServer
明(这些将作为扩展属性存入SQLServer中)
文档,作为数据字典保存,PowerDesignerb)通过定制wordword格式报表,并导出SQLServerPowerDesignerv10格式。
(才具有定制导出word格式报表的功能)。
对于一旦在企业管理器进行数据库设计时加入扩展属性,就可以通过编写简单的工具将数据字典导出。
编写数据库建数据库、建数据库对象、初始化数据脚本文件c)
设计原则4.3
采用多数据文件a)
500MB2GB,windowb)禁止使用过大的数据文件,系统不超过unix系统不大于
数据库中必须将索引建立在索引表空间里。
c)oracle
基本信息表在建立时就分配足够的存储空间,禁止其自动扩展功能d)
blob(或大文本列)和大文本字列、e)blob列要独立出一张表,此表只有id
或saf)为每一个数据库创建独立的管理员用户,使用该用户进行设计,尽量不要使用者系统管理员身份进行数据库设计。
4.4设计的更新
a)在设计阶段,由数据库管理员或指定的项目组其一成员进行维护。
b)运行阶段,由数据库管理员进行维护。
c)如对表结构进行修改,应先在数据字典文档进行修改,最后在数据库中进行修改。
如果修改的是数据库字典表,必须由数据库管理员进行。
直接连代码,如果使用PowerDesigner,禁止由PowerDesignerd)编写更新的SQL数据库进行数据库操作(如果是更改表或者字段的说明性文字可以通过数据库管理器图形界面进行修改)
e)修改数据库要通过SQL,禁止其它方式对数据进行修改
要添加说明后保存备查修改数据库的SQLf)
命名总体原则5
设定的前缀一律用小写字母?
?
标识名称命名全部小写
整个命名的全长不得超过30个字母?
,不能使用中文和其他字符,有特别情况允许使用末尾数‘_'?
全部使用字母和下划线t_Finace1,t_Finace2...字编号。
例如:
?
命名名称来自于业务,全部采用英文单词
英文单词过长可以采用通用的缩写,尽量表达出业务的含义?
如需要两个以上的英文单词做标识名称,单词之间要用下划线‘_'?
连接
?
名称全是由名词组成的,名词由大范围到小范围排序取名
?
完成某功能的名称,如函数和过程,以动宾形式取名
6命名规范(逻辑对象)
数据库结构命名6.1
a)数据库命名
业务系统名称<>。
数据库的命名要求使用与数据库意义相关联的英文字母,即
ccnet;数据库的命名为例如:
chinacare
客户资料数据库的命名为Customer_Info。
b)数据库日志设计命名
为有意义的日志名>格式命名。
其中,日志名>.log<>_<数据库日志的的命名以<数据库名数据库日志名称。
ccnet_logredo.log例如:
c)数据库配置设计命名
数据库配置设计方案是以文件形式保存的,其内容是关于特定数据库的配置项目的具体值。
>_cfg.ini格式命名。
数据库类型简写〉_<应用系统标志数据库配置文件的命名以:
<
表示该文件是数据库配置文其中,数据库类型简写见附件2《数据库类型简写》,cfq件。
ORA_ccnet_cfg.ini例如:
d)数据库复制与存储设计命名
数据库复制与存储设计方案是以文件形式保存的,其内容是关于特定数据库之间的复
制策略的具体细节。
格式命数据库复制与存储设计文件的命名以:
<数据库类型简写>_rep.txt>_<应用系统标志名。
表示该文件是数据库复制与存储其中,数据库类型简写见附件2《数据库类型简写》,rep文件。
e)数据库连接设计命名
数据库连接设计方案是以文件形式保存的,其内容是关于特定分布式数据库之间的连
接设计的具体细节。
格式命名。
数据库类型简写>_<应用系统标志>_dbl.sql数据库连接设计文件的命名以:
<表示该文件是数据库连接设计文2《数据库类型简写》,dbl其中,数据库类型简写见附件件。
主要针对(表空间、数据文件命名Oracle)f)
索引表空间:
表空间命名格式:
ts<系统标识>_i
>_i[n].dbf
系统标识ts<数据库文件命名格式:
临时表空间:
>_t系统标识ts<表空间命名格式:
>_t[n].dbf系统标识数据库文件命名格式:
ts<
回滚表空间:
>_r系统标识ts<表空间命名格式:
>_r[n].dbfts<系统标识数据库文件命名格式:
数据表空间:
>_d表空间命名格式:
ts<系统标识
>_d[n].dbf数据库文件命名格式:
ts<系统标识
注:
表空间名不超过8位,n可取,根据系统数据量确定。
00-99或0-9
6.2数据库对象命名表a)
表标数据表类型标识>_系统标识]_<“t_”表的命名必须以(。
识>
要求与表意义相关联的英文字母,>表示可选项,依据实际情况而增加;<表标识其中,[]。
例如:
t_Customers
数据表大致分为:
业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结算数据表、决策数据表;
基本编码表用base标志
累计数据表用count标志
...info标志系统信息表用
例如:
t_trade_base_trade_code,t_trade_info_help...
b)字段/域
根据业务要求进行命名,不需设定固定的前缀。
.
c)索引
隔“idx_”开头,索引列名间用_针对数据库表中一个或多个字段建立的索引的命名格式应以开,即为idx_ColumnName1_ColumnName2_…
是数据库表中(第一个)索引字段的名称或名称简写;其中,ColumnName1是数据库表中(第二个)索引字段的名称或名称简写;索引名的总长必需ColumnName2符合数据库的规定。
)表示在字段cert_number上创建索引例:
idx_cert_number(
作为索引的命名,但是>>_<表名为了避免重名索引出现,可选命名方式为idx_<递增号要求在数据字典中进行详细说明
d)视图
视图标系统标识]_<缩写视图的命名必须以“v_”(View)开头,格式为:
v_<视图类型>_[。
识>
视图标<其中,视图类型参见“表的分类说明”;_][系统标识是可选项,依据情况而增加;>应与视图意义相关联的英文字母。
识
v_user_detail_info例:
e)存储过程
格式。
存储过程的命名必须符合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(以动宾方式取名)例:
h)自定义数据类型
>数据类型ud_<自定义数据类型标识>_<自定义数据类型的命名格式为:
i)(缺省)Default
;对于非绑定的默认可取系统默认>df_点实例绑定具体字段。
的名字,请参见第8.1
例:
df_begin_date缺省开始日期‘20030101'
ifexists(select*fromsysobjectswheretype='D'andname='df_begin_date')
dropdefaultdbo.df_begin_date
go
createdefaultdf_begin_dateas'20030101'
go
、j)CheckConstraint(约束)
;一些约束可直接放在生成表的语句>表名>_中。
参见第8.1点实例,约束字段flag只能取字符‘0'ck_flag例:
到‘9':
constraintck_flagCHECK(flagbetween'0'and'9').
k)Rule(规则)
可取系统默认的名字,规则的命名格式一般为:
rl_;对于非绑定规则(约束)
参见第10点设计实例绑定具体字段。
例:
的规则)rl_not_zero(定义一个不等于0
ifexists(select*fromsysobjectswheretype='R'andname='rl_not_zero')
dropruledbo.rl_not_zero
go
createrulerl_not_zeroas@i<>0
go
主键l)
。
主键标识>主键的命名格式为pk_<表名>_<
以字段userid例:
pk_user_info_userid创建主键)(表user_info
m)外键
。
>_<>_<主表名外键标识>fk_<外键的命名格式为表名
作为索引的命名,但是要求在数据字典中进行详细>表名>_<递增号可选命名方式为fk_<说明
例:
fk_user_info_department_deptid(在表user_info的字段department_id上创建外键,参照主表department)
ORACLE同义词()n)
>sy_<同义词标识同义词的命名格式为:
的公共同义词)user_info例:
sy_user_info(为所有权属于ben的表
脚本注释7
存储过程或触发器7.1
每一个存储过程或触发器都要在最前面写注释,注释如下a)
/*
:
writer
:
createdate
ver:
:
Depiction
:
remark
*/
另外,过程中声明的重要变量要有注释,例如:
int=0/*0=>Checkout,1=>GetLatest,2=>UndoCheckOut*/@iActionFlag
b)如果只对存储过程或触发器进行部分修改时须添加以下注释:
start1:
date<格式:
YYYY-MM-DD>:
rewriteradd:
/*rewriter():
修改描述:
*/
(修改时)*/原代码内容/*
*/:
/*rewriterdate:
<格式:
YYYY-MM-DD>end1:
*//*rewriter:
格式:
start2:
add(rewriter):
date:
新代码内容
*/YYYY-MM-DD>end2:
:
/*rewriter:
date<格式:
c)如果对存储过程或触发器有较大的修改,可增加修改内容的注释。
>1开始一次增加,/*LogId:
:
rewriter
YYYY-MM-DD>格式:
:
Depiction
*/
自定义函数7.2
每一个自定义函数都要在其前面写注释,注释如下a)
/*
functionname:
xxxx
>Depiction对此函数的描述:
<
(a,b)param
....a功能或描述
功能或描述b
output:
xx=0表示.....x=1表示......
writer:
YYYY-MM-DD>createdate:
<创建日期,格式:
:
ver
:
remark
*/
另外,函数中声明的重要变量要有注释,例如:
int=0/*0=>Checkout,1=>GetLatest,2=>UndoCheckOut*/@iActionFlag
b)如果只对函数进行部分修改时须添加以下注释:
:
:
:
/*rewriteradd(rewriter):
date<格式:
YYYY-MM-DD>start1
修改描述:
*/
*/(修改时)/*原代码内容
*/end1:
:
/*rewriterdate:
<格式:
YYYY-MM-DD>
*/YYYY-MM-DD>:
<格式:
start2:
date(/*rewriter:
addrewriter):
新代码内容
*/YYYY-MM-DD>end2:
<:
/*rewriterdate:
格式:
c)如果对函数有较大的修改,可增加修改内容的注释。
>开始一次增加,从1编号:
/*Logidrewriter:
YYYY-MM-DD><修改日期,格式:
rewritedate:
:
Depiction
*/
8数据库操作原则
建立、删除、修改库表操作8.1
在开发环境中,对于自己的库表可任意进行修改、删除操作;但需保留相应的建表?
语句和说明,与建表人建表时间。
添加、删除、修改表数据8.2
在开发环境中,开发人员所开发模块独自使用的库表,可自由操作表中数据;?
?
对其他模块关联的库表,应取得其他模块的开发人员同意后再执行操作;
系统的信息表、字典表的修改应向数据库的管理员提出操作需求,由数据库的管理?
员执行操作。
)9常用字段命名(参考
9.1系统信息常用字段字段名称字段代码ORACLE
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
varchar2(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)
varchar(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(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)
varchar(80)
办公地点office_addr
varchar2(80)
varchar(80)
证件号码cert_number
varchar2(50)
varchar(50)
证件名称cert_name
varchar2(20)
varchar(20)
职业标识occupation_id
char(4)
char(4)
要填满长度
职业名称occupation
varchar2(50)
varchar(50)
教育程度education
varchar2(20)
varchar(20)
9.3铺助信息常用字段字段名称字段代码ORACLE
SQLSERVER
值
说明
记录状态标识
flag
char
(1)
char
(1)
A/D…
…:
暂停S:
删除;D有效;A:
记录序号id
number
int
9.4业务信息常用字段字段名称字段代码ORACLE
SQLSERVER
值说明
业务发生日期oper_date
date
smalldate
开始日期begin_date
date
smalldate
结束日期end_date
date
smalldate
操作日期
curr_date
date
smalldate
操作员编号user_id
char(4)
char(4)
即为系统信息中的用户标识
发生额
number(7,2)
dec(7,2)
余额balance
number(10,2)
dec(10,2)
描述description
varchar2(50)