数据库设计规范详细说明.docx
《数据库设计规范详细说明.docx》由会员分享,可在线阅读,更多相关《数据库设计规范详细说明.docx(9页珍藏版)》请在冰豆网上搜索。
![数据库设计规范详细说明.docx](https://file1.bdocx.com/fileroot1/2023-4/19/278f913c-c12c-4a2a-8893-4f051c78dd7c/278f913c-c12c-4a2a-8893-4f051c78dd7c1.gif)
数据库设计规范详细说明
数据库设计规范
文件状态:
[]草稿
[]正式发布
文件编号:
SAYE
项目编号:
责任部门:
开发部
版本修订历史
版本
日期
章节号
CADM
修订说明
作者/参与者
审核者
V0.9
2007-12-01
全文
C
建立全文
陈成庄
注意:
1.修订记录按修订时间序排列;
2.对本规格的所有增加、修改或者删除都必须填写修订记录,详细记载其修订内容,使其具备强可追溯性。
3.修订类型:
C-CREATED创建A-ADDED增加M-MODIFIED修改D-DELETE删除;
4.对章节进行修订的务必给出修订章节的超链接;
5.版本修改说明:
V0.00取三位数字,0.01表示作者或参与者进行修改未经审核,0.1表示审核者已审核完成,1表示里程碑点或通过正式评审通过(包括需求变更评审通过),增长方式以一个单位递增。
6.在正式发布之前必须通过审核或审批。
目录
1目的1
2适用范围1
3数据库应用结构1
3.1数据表和程序模块的分类1
3.1.1数据表分类说明1
3.1.2程序模块分类说明2
3.2数据表间的关系2
3.2.1基本编码表2
3.2.2辅助编码表3
4命名规范3
4.1基本原则3
4.2表名命名约定3
4.3字段名命名约定4
4.4SQL语句命名约定4
4.5视图命名约定4
4.6存储过程命名约定5
4.7触发器命名规范5
4.8索引命名规范5
4.9包名5
4.10函数5
4.11序列5
4.12Job6
5编码规范6
5.1代码缩进约定6
5.2函数头头注释6
5.3函数体内编写规范7
1目的
为了使软件开发过程有章可循,保证软件质量,加强开发管理。
本规范为一套编写高效可靠的数据库设计命名规范。
它以安全可靠的软件工程原则为基础,使代码易于理解、维护和增强,提高生产效率。
同时,将带来更大的一致性,使软件开发团队的效率明显提高。
2适用范围
本适用于数据库模型的设计和ER图的创建过程,以及SQL语句,存储过程,触发器等。
3数据库应用结构
根据对一般业务系统的分析,将数据库和程序系统统一进行整体描述,展示数据库的表之间以及与程序模块间的关系。
3.1数据表和程序模块的分类
根据“处理特点”,将数据表和程序模块进行分类如下:
数据表分类:
业务数据表、基本编码表、辅助编码表、系统信息表等。
程序模块分类:
初始化、业务处理、完整性检测与修正、结算处理、统计处理。
3.1.1数据表分类说明
业务数据表:
记录业务发生的过程和结果。
如,合同、舱单、报关单等。
基本编码表:
描述业务实体的基本信息和编码。
如,HS编码、客户、报关企业。
辅助编码表:
描述属性的列表值。
如,合同类型、职称、民族、计量单位。
系统信息表:
存放与系统操作、业务控制有关的参数。
如,用户信息、权限、用户配置信息。
3.1.2程序模块分类说明
初始化:
系统运行前对系统业务数据的初始化。
业务处理:
业务过程的控制和结果记录。
如,报关单、舱单录入、预归类数据录入。
3.2数据表间的关系
业务数据表<-->基本编码表主-外键关系。
如,报关单表头<-->报关单表体;
业务数据表<-->辅助编码表主-外键关系。
如,报关单表体<-->HS编码;
业务数据表、累计数据表:
舱单表头提单总数=舱单表体舱单表体的总计,舱单表头总重量=∑舱单表体舱单表体的重量;
规定除数据库设计所遵循的范式外的一些适用原则,在遵循数据库设计范式的基础上,合理地划分表,添加状态和控制字段等。
3.2.1基本编码表
1.基本编码表可以有如下的标识列:
内编码、外编码、助记码、简称、全称。
内编码(唯一编码)作为主键有程序自动生成,用户不可见;外编码(唯一编码)由用户按某种规则自行定义,用户可见;助记码为拼音缩,方便录入,不唯一,重码时由列表选择;简称用于列表显示和报表,以便缩短行宽。
以上的列在实现时可视情况和习惯加以删减。
2.当码表的列较多且也行较多时,可将上述的标识列和常用的信息存于一个表,将其它的信息另表存储。
3.2.2辅助编码表
为了使辅助编码表能起到预期的效能,又不因过多的辅助编码表难以管理,故对辅助编码表的使用作如下规定:
1.当某辅助编码表的编码允许用户添加时,应设计成“独立”的数据表;否则,将不允许用户添加编码的各辅助编码表合并成一个“通用”的辅助编码表。
2.“独立”的辅助编码表与主表的列采用主-外约束保证列数据完整性。
3.“通用”的辅助编码表与各主表间没有约束关系,主表列的数据完整性由列说明的“域”来保证。
4.“通用”的辅助编码表除编码和名称列外,还有一个标识列,用来标识合并前的各码表,该标识列+编码列作为该表的主键。
5.对于“独立”的辅助编码表,用户只可添加新的编码和改变名称,并且不能改变一个编码所代表的意义;对于“通用”的辅助编码表,原则上不允许用户修改,或只有限地允许修改名称。
4命名规范
4.1基本原则
1.表名与字段名称的命名统一采用英文全称或简称,严禁用拼音或缩写。
2.数据库的所有的表名、视图名、字段名、存储过程一律采用大写。
3.名称中间词的间隔使用下划线”_”。
(例如:
ADCPHC_BARRIER)
4.2表名命名约定
1.业务表命名:
表名应该由其所在的项目名的简称加上本身的逻辑名称组成。
(例如:
在区域大通关ADCPHC中,一张表的逻辑名称叫BARRIER,那么该表名应该为ADCPHC_BARRIER)
2.项目基础参数表命名:
基础参数表命名应该由其所在的项目名的简称加上PARA再加本身的逻辑名称组成。
(例如:
在区域大通关ADCPHC中,一张表的逻辑名称叫BARRIER,那么该表名应该为ADCPHC_PRAR_BARRIER)
4.3字段名命名约定
字段名称由字段名的英文(或简称)组成,中间用“_”进行区分。
(例如报关单编号,字段名建议应该为ENTRY_ID)。
可有多个“_”进行区分但字段名称不超过30个字符
主键,外键等应该在文档和数据字典中加以说明。
4.4SQL语句命名约定
代码中书写的SQL语句要求SQL关键字、表名和字段名全小写。
例如:
selectentry_id,g_no,code_listfromentry_listwhereentry_id=‘200829041245’;
4.5视图命名约定
为了区分视图名与表名,所有的视图名前必须加“V_”以示区别,需要加模块简称和逻辑名称。
(例如:
视图逻辑名为ENTRY_LIST,其名称应该为V_ADCPHC_USER_STATUS)。
关于视图中的字段名,这里不做严格的规定。
但是原则上从一张表选出的视图可以不改每个字段的名称,但是如果从多个表中选出的字段,最好采用同一个前缀重新命名。
4.6存储过程命名约定
存储过程名字前面一律加缩写“PR_”,并添加模块简称和逻辑名称。
。
(例如:
存储过程的逻辑名称为“ENTRY_LIST”,其名称应该为“PR_ADCPHC_ENTRY_LIST”)。
在代码中加上必要的注释
4.7触发器命名规范
触发器的名称命名按照触发器的缩写命名,前面加缩写“TR_”,例如:
tr_<表名>_(after)
ti_<表名>_(instead)
4.8索引命名规范
索引名字前一律加上“IDX_”,后面添加表名(或简称)和列名。
(例如:
需要在ENTRY_LIST的ENTRY_ID上添加索引,其名称应该为“IDX_ENTRYLIST_ID”)。
4.9包名
包名名字前面一律加缩写“PKG_”,并添加模块简称和逻辑名称。
。
(例如:
包名的逻辑名称为“ENTRY_LIST”,其名称应该为“PKG_ADCPHC_ENTRY_LIST”)。
4.10函数
函数名字前面一律加缩写“FUNC_”,并添加模块简称和逻辑名称。
。
(例如:
函数的逻辑名称为“ENTRY_LIST”,其名称应该为“FUNC_ADCPHC_ENTRY_LIST”)。
4.11序列
序列名字前面一律加缩写“SEQ_”,并添加模块简称和逻辑名称。
。
(例如:
序列的逻辑名称为“ENTRY_LIST”,其名称应该为“SEQ_ADCPHC_ENTRY_LIST”)。
4.12Job
JOB名字前面一律加缩写“JOB_”,并添加模块简称和逻辑名称。
。
(例如:
JOB的逻辑名称为“ENTRY_LIST”,其名称应该为“JOB_ADCPHC_ENTRY_LIST”)。
5编码规范
5.1代码缩进约定
Ø列之间存在上下关系时,必须缩进4个空格(一个TAB)的间距;
Ø一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进;
Øwhere子句书写时,换行时将and、or等写在换行首列,语句另起一行时,以保留字或者连接符开始,连接符右对齐;
5.2函数头头注释
编写函数文本--如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。
该注释以多行注释为主,主要结构如下:
/************************************************************
*name:
--函数名
*function:
--函数功能
*input:
--输入参数
*output:
--输出参数
*author:
--作者
*CreatedDate:
--创建时间
*UpdateDate:
--函数更改信息(包括作者、时间、更改内容等)--(更改记录多行,以最新记录在最前面)(基本成型时写更改信息)
************************************************************/
5.3函数体内编写规范
当在函数体内有条件判断语法、循环判断语法、异常判断语法时,必须被BEGIN和END语法包含,例如:
IF<条件表达式>
BEGIN
<命令行或程序块>
END
ELSIF<条件表达式>
BEGIN
<命令行或程序块>
END