本规范规定了南京市交通局数据库建设的规则.docx
- 文档编号:4509386
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:25.44KB
本规范规定了南京市交通局数据库建设的规则.docx
《本规范规定了南京市交通局数据库建设的规则.docx》由会员分享,可在线阅读,更多相关《本规范规定了南京市交通局数据库建设的规则.docx(13页珍藏版)》请在冰豆网上搜索。
本规范规定了南京市交通局数据库建设的规则
1.范围
本规范规定了南京市交通局数据库建设的规则,是检验评定软件开发者为南京市交通局开发的应用系统质量的标准尺度。
本规范适用于各软件开发者和有关单位为南京市交通局开发的应用系统所使用的数据库,数据库的设计、数据库内的对象命名、数据字典文档的编写必须遵守本规范。
2.总体要求
数据库建设规范主要包括数据库设计规范、数据库对象命名规则和数据库程序编码规则、数据字典文档编写格式等内容。
2.1数据库设计总体要求
数据库是交通信息化建设的重要基础。
数据库设计通常是作为应用系统开发的一部分进行的,但在应用系统开发中数据库设计具有特殊的重要性和相对独立性,因此在本规范中专门进行规定。
关于交通局应用系统的开发要求,请参见《南京市交通局信息化软件开发实施指南》。
开发者在系统设计阶段,应采用合理的设计方法进行数据库设计,建立数据库的逻辑模型和物理模型,最终设计出高性能、易扩展、易维护、少冗余、高安全性、高可靠性、一致性和完整性好的数据库。
在数据库设计完成后,开发者应向交通局提交《数据库设计报告》。
在软件鉴定验收时,开发者应向交通局提交完整的《数据库设计报告》、《数据字典》和在开发过程中发生的变更记录。
2.2数据库对象命名的总体要求
数据库对象如表、存储过程等的名称一般根据对象的类别、所在的系统代号和自定义代号来确定,但对各类对象的命名有其特定要求,具体的各种对象的命名要求请见本规范第四部分。
自定义代号根据中文名称来确定,采用中文名称首字的全拼,后接其它字的中文拼音首字母,如果有两个对象根据此方法命名出现重复则对两个对象都用中文拼音的完整拼音来表示。
数据库对象不得使用数据库的关键字作为名字。
在本规则的第四部分对Oracle数据库的对象命名要求和程序编码要求做了具体规定,如果需要使用具它数据库如SQLServer等,其命名规则参照Oracle数据库的命名规则来进行。
本部分的要求具有强制性,开发者应严格遵守此要求。
2.3数据库程序编码的总体要求
通过对数据库程序编码制定规则,来提高程序的可读性。
这其中主要包括变量命名规则、代码排版规则、代码注释规则等。
本部分相对要求较宽,但开发者应参照这部分的要求制定自己的编码规范,并严格遵守。
本部分的代码注释规则是对开发者编写注释的基本要求,开发者自己可以提出对代码注释的更高要求,但不得低于本规则的要求。
3.数据库设计规范
3.1数据库设计要求
为了保证数据库设计的质量,提高数据库的完整性、一致型、安全性、易扩展性、性能、减少数据的冗余,开发者应在需求分析阶段对已有业务系统、本期开发的业务系统和以后开发的业务系统的数据作全面的调研,在此基础上采用合理的设计方法,分析业务系统所涉及的数据及数据之间的内在关系,利用如RationalRose、Together、ER-Win等软件作为数据库辅助设计工具,进行反映数据库中对象联系和依赖的概念逻辑设计和物理设计。
在进行数据库设计时,除了本规范以外,还应遵守《南京市交通局信息化软件开发实施指南》的要求。
在数据库逻辑设计完成后,开发者应向交通局提交《数据库设计报告》,在《数据库设计报告》中必须包括完整的实体关系图(E-R图),在得到交通局的评审认可后方可进行数据库的物理设计。
在软件鉴定验收时,开发者应向交通局提交最终完稿的《数据库设计报告》及其变更记录,同时提交所交付软件完整的《数据字典》。
3.2数据库概念逻辑设计
整个概念逻辑设计包括需求调研、概念设计和逻辑设计三个部分,需要与业务系统的调研、分析、设计和开发结合起来进行。
3.2.1需求调研
在应用系统开发的需求调研阶段,应对本期开发的业务系统的功能数据和以后开发的业务系统的数据进行调研。
对于本期要求开发实现的应用系统,应调研系统功能和所要处理的数据,同时要对交通局所有已有相关应用系统进行调研,分析这些系统是否已有新系统所需要的数据,该数据能否满足新系统的所有需求,以决定是否可以直接访问已有应用系统的数据库中的数据,或采用复制等方法定期将已有系统的数据复制到本期开发的应用系统后台数据库,或直接用新系统来维护这些数据。
3.2.2概念设计
概念设计应采用E-R模型进行,针对各个业务系统进行局部数据视图设计,然后进行局部数据视图集成,进行整体数据视图的设计。
在整体设计中找到最大的共享数据集,同时对这些共享数据进行语义上的描述(数据产生的业务系统、数据使用的业务系统等)。
面向信息服务的数据建模采用E-R模型描述,但所有的数据模式按照中心主题建立。
E-R图设计、画法不是唯一的,但在绘E-R图时应注意:
结构要清晰、关联要简洁、实体个数要适中、属性分配要合理、没有低级冗余。
3.2.3局部设计
根据各个业务系统的需求调研,设计出业务系统中的所有实体和关系,形成—个局部的业务数据视图。
3.2.4整体设汁
将交通局的各个业务系统对应的局部业务视图进行两两集成,删除冗余的实体和关系,记录业务系统的共享数据模式,最终实现一个没有冗余、一致的全局视图模式。
标记所有共享数据模式的相关业务系统,以及数据的来源和数据的使用状况。
3.2.5逻辑设计
根据得到的全局概念模式进行关系逻辑设计,并作规范化分解,建立一系列的规范化分解,对于概念模式中的数据集进行数据表的设计。
所有的公共共享数据集,业务数据要保证数据源唯一。
同时对本期开发的业务系统中不能维护但需要使用的共享数据集,建立与老业务系统之间数据抽取的映射关系。
面向信息服务的数据模式根据概念模式的来源和用途分别建立数据表或者跨数据库视图。
能从业务数据平台中直接获取的数据应设计跨数据库视图,需要从业务数据平台层捕获的历史数据应设计成数据表。
在逻辑设计阶段,应考虑:
●为提高程序的执行效率适当进行逆规范化,减少连接运算
●合理的属性类型及长度
●创建视图
可以建立面向用户的外模式,提供一定的逻辑数据独立性。
3.3数据库物理设计
将设计好的关系逻辑模式按照数据产生的来源建立不同的业务数据集(库),然后建立一个公共共享数据集(库),在这个数据库中建立共享视图,同时为各个数据集(库)进行用户设置和权限分配。
物理数据库的分布也存在多种模式:
●所有的物理数据库存在于一台数据库服务器上,而且都由一个DBMS实例管理;
●所有的物理数据库存在于一台数据库服务器上,由多个DBMS实例进行管理;
●所有的物理数据库分布在不同的数据库服务器上,但所有的DBMS采用一种类型;
因选择的数据库不同,在具体的物理设计上也会有所不同,但要保证数据库的设计和管理符合规范,并保证制定的规范是可行的、可扩的,同时必须符合本规范的要求。
在物理设计阶段,应根据数据的访问需求、频度、性能要求等设计索引和簇集,包括单属性索引、多属性索引、簇集索引等。
4.Oracle数据库命名规则
4.1Oracle数据库对象命名规则
为避免混乱,不得使用Oracle的关键字作为数据库对象的名字,Oracle数据库的关键字参见下表。
除非在定义对象名称时在该对象前后加双引号,Oracle各类对象都以大写的形式保存,且在使用时不区分大小写。
表4-1Oracle数据库关键字表
ACCESS
AUDIT
COMPRESS
DESC
ADO
BETWEEN
CONNECT
DISTINCT
ALL
BY
CREATE
DROP
ALTER
CHAR
CURRENT
ELSE
AND
CHECK
DATE
EXLUSIVE
ANY
CLUSTER
DECIMAL
EXISTS
AS
COLUMN
DEFAULT
FILE
ASC
COMMENT
DELETE
FLOAT
FOR
LONG
FCTFREE
SUCCESSFUL
FROM
MAXEXTENTS
PRIOR
SYNONYM
GRANT
MUNUS
PRIVILEGES
SYSDATE
GROUP
MODE
PUBLIC
TABLE
HAVING
MODIFY
RAW
THEN
IDENTIFIED
NETWORK
RENANE
TO
IMMEDIATE
NOAUDIT
RESOURCE
TRIGGER
IN
NOCOMPRESS
REVOKE
UID
INCREMENT
NOT
ROW
UNION
INDEX
NOWALT
ROWID
UNIQUE
INITIAL
NULL
ROWNUM
UPDATE
INSERT
NUMBER
ROWS
USER
INTEGER
OF
SELECT
VALIDATE
INTERSECT
OFFLINE
SESSION
VALUES
INTO
ON
SET
VARCHAR
IS
ONLINE
SHARE
VARCHAR2
LEVEL
OPTION
SIZE
VIEW
LIKE
OR
SMALLINT
WHENEVER
LOCK
ORDER
START
WHERE
WITH
各类Oracle数据库对象的具体命名应遵守下面的规则。
4.1.1数据库名(Databases)
数据库名称由数据库系统的首字母拼音缩写加数据库编号组成,在只有一个数据库的情况下可不加数据库编号。
数据库编号从1开始,并以增量1递增。
4.1.2实例名(Instances)
如果一个数据库只有一个实例,则此实例与数据库名称相同,如使用Oracle和ParallelServer或OracleRealApplicationClusters产品,一个数据库可能有多个实例,则采用数据库名加下划线加实例首字母拼音来命名。
在数据库建设过程中,各单位应认真填写数据库、数据库实例名及对应用途关系表,并交数据库管理员妥善保存,此表格如此下。
表4-2数据库实例表
地点
数据库
数据库实例名
用途
备注
单位名
数据库1
实例1
实例2
数据库2
实例1
实例2
4.1.3表空间(Tablespaces)
表空间分为两种,用来存储系统生成的临时数据的临时表空间(TemporaryTablespaces)和储存用户数据的永久表空间(PermanentTablespace)。
临时表空间命名为TEMP_##,##表示编号(下同),如一个数据库只有一个临时表空间,则直接用TEMP命名即可。
永久表空间命名分为三段:
TBS_SSSS_ZZZZ;TBS表示这是一个表空间,SSSS为系统代号,ZZZZ为表空间类型,可以为DATA和IDX,DATA表示该表空间用来存储表对象,IDX表示该表空间用来存储索引对象。
系统代号应能反映该表空间中存储对象在系统中的总体功能,用功能名的首字母拼音表示。
应用系统中的表和索引应该分别储存在两个表空间中,以达到提高性能的目的。
4.1.4数据文件(Datafiles)
数据库文件的命名根据该文件所属表空间的名字进行,通过在表空间的名字后加下划线加编号实现,如
4.1.5日志文件(Redologfiles)
采用
4.1.6参数文件(Parameterfiles和StoredParameterfiles)
一个数据库对应一个参数文件,其命名用init_
Oracle9i推出了存储参数文件的功能,如使用,其命名用sp_
4.1.7控制文件(Controlfiles)
采用
4.1.8回滚段(Rollbacksegments)
回滚段用RBS_##表示,如一个数据库的回滚段为RBS_01,RBS_02,…
在Oracle9i版本数据库中推出了AutomaticUndoManagement功能,来实现对回滚信息的自动管理,此功能具有简化管理、提高效率的优点,因此如果使Oracle9i以上版本数据库,则应使用此功能。
4.1.9表(Tables)
表名为三段:
Z_SSSS_XXXX,Z为性质代号,SSSS为系统代号(下同)。
XXXX为自定义代号(下同),表的所有字母统一用大写表示。
(1)、性质代号包括B、C、T、A,其含义如下:
B指原始数据表
C编码数据表
T工具数据表
A统计数据表、临时数据表或中间数据表
(2)、系统代号应能反映该表所在系统的功能。
开发者应该在系统设计阶段根据软件功能模块的划分来确定系统代号,系统代号用能表达模块功能的关键词的首字母来表示,应控制在2到4个字母之内,为便于理解和记忆,一个系统不宜有过多的系统代号。
(3)、自定义代号根据中文名称来确定,采用中文名称首字的全拼,后接其他字的中文拼音首字母,如果有两个表根据此方法命名出现重复则对两个表都用中文拼音的完整拼音来表示:
自定义代号的长度应保持在12位以内。
4.1.10字段(Fields)
字段名称字段名分为三段:
F_ZZ_XXXX;F表示这是一个字段,ZZ表示字段的数据类型代号,数据类型对应的数据类型代号如下表:
表4-3数据类型代号表
代号
数据类型
CR
CHAR,NCHAR
DT
DATE
LG
LONG
RA
RAW
LR
LONGRAW
NB
NUMBER
VC
VARCHAR2,NVARCHAR2
FL
FLOAT
LB
BLOG,CLOG,NCLOG
BF
BFILE
另外,主表中的主键字段和附表中的外部键字段的类型和名称要完全相同。
对于日期类型的数据,如果只保存日期数据,采用yyyy/mm/dd的格式,如果只保存时间数据,采用hh24:
mi:
ss的格式,如果同时保存日期和时间格式,采用yyyy/mm/ddhh24:
mi:
ss的格式。
4.1.11索引(Indexes)
表主键(PrimaryKey)对应的索引命名为IDX_<表名>_PK。
如果表的唯一性索引(UniqueIndex)只有一个,则命名为IDX_<表名>_UK,如果表有多个唯一性索引,则在最后再加上一个编号,命名为IDX_<表名>_UK##,此处的##为一个数。
如果一个表有多个其他的非唯一性索引,则按顺序为每一个索引加一个编号IDX_<表名>_##,此处的##为一个数。
4.1.12约束(Constraints)
应对主键(PrimaryKey)、唯一性约束(Unique)和引用约束(ReferentialKey)等约束进行命名,而不是使用系统自动生成的名字。
主键约束命名为PK_<表名>。
如果一个表只有唯一性约束,则命名为UK_<表名>。
如果一个表有多个外键,则在名称的最后再加一个编号,命名为UK_<表名>_##。
如果一个表只有一个外键约束,则命名为FK_<表名>。
如果一个表有多个外键,则在名称的最后再加一个编号,命名为FK_<表名>_##。
4.1.13视图(Views)
视图名分为三段:
V_SSSS_XXXX。
V表示此对象为视图。
4.1.14同义词(Synonyms)
同义词名分为三段:
SYN_SSSS_XXXX。
SYN表示此对象为同义词。
4.1.15序列号(Sequences)
序列号名分为三段:
SQ_SSSS_XXXX。
SQ表示此对象为序列号。
4.1.16存储过程(StoredProcedures)
存储过程名分为三段:
PRO_SSSS_XXXX。
PRO表示此对象为存储过程。
4.1.17函数(Functions)
函数分为三段:
FUN_SSSS_XXXX。
FUN表示此对象为函数。
4.1.18程序包(Packages)和程序包体(PackagesBodies)
程序包和相应程序包体的名字相同,分为三段:
PAK_SSSS_XXXX。
PAK表示此对象为函数。
包内过程和函数的命名规则与独立的存储过程和函数的命名相同,具体过程参见和4.1.17。
4.1.19触发器(Triggers)
触发器分为三段:
TR_[A|B][I|U|D]_<表名>。
TR表示这是一个触发器,后面跟着表示触发器操作条件的英文字母,[A|B][I|U|D](A|B表示after|before,I|U|D表示insert|update|delete无该项操作则去掉相应的字母),后面再跟使用它的表名或视图名。
4.1.20角色(Roles)
数据库角色分为两段:
ROL_XXXX。
ROL表示这是一个数据库角色。
4.1.21用户(Users)
数据库用户分为两段:
USR_XXXX。
USR表示这是一个数据库用户。
4.2SQL、PL/SQL源代码编写约定
4.2.1变量命名规则
为了提高PL/SQL程序的可读性,需要对PL/SQL程序的变量制定适当的命名规则。
变量应该用中文拼音首字母来表示,应防止变量名与Oracle表的字段重名,因为如果重名,Oracle会将此名字解释为字段名。
为了能够快速区分变量的作用域和类型,应对变量加上统一的前缀和后缀。
在基本类型局部变量名家前缀v_
在全局变量名前加前缀g_
在常量名前加前缀c_
在过程和函数的参数函数变量前加p_,对INOUT类型和OUT类型的参数变量要分别加后缀io和o。
缺省没有前缀的参数变量都为IN类型。
在recordcollection类型变量前加前缀r_
在%rowtype类型变量前加前缀rt_
在PL/SQL类型变量前加前缀t_
在tabletype类型变量前加前缀tt_
在游标cursor类型变量前加前缀cur_
在例外exception类型变量前加前缀e_
4.2.2代码排版规则
制定代码排版规则的目的是使用户更方便地理解程序的逻辑结构。
缩进
缩进设置为4个空格,Tab设置为4个空格。
通过缩进要把程序的条件、循环的逻辑结构显示出来。
使用大小写
所有的SQL和PL/SQL关键字用大小写,而所有的数据库表、字段、变量用小写。
4.2.3代码注释规则
在PL/SQL程序段中的注释需要能说明问题,应该比代码易读;注释的长度不能太长,60字符以内为宜;当代码发生改变时,注释应该及时更新。
每个数据对象包括表、存储过程、函数和字段都必须作相关的注释说明。
如果数据对象是函数或存储过程,还必须说明作者、功能和创立时间(修改时间)等信息。
格式如下:
注释位置
对Oracle数据库对象的整体注释应置于对象定义语法的下一行,AS关键字之后(置于头部时,经Oracle编译后会丢失,不能保存到数据库中);同理,其他注释也要置于代码内部。
PL/SQL程序文件头部注释
文件头部注释用于表明该文件的信息及版权格式,其格式如下:
//Copyright
///////////////////////////////////////////////////////////////////////////////////////////////////////
//文件名:
//功能描述:
//改版履历:
//姓名时间描述
///////////////////////////////////////////////////////////////////////////////////////////////////////
过程、函数、包注释
对过程、函数、包必须加注释描述其主要功能,注释长度不超过60字符为宜,超过则作换行处理。
其他需要加注释的地方:
每一个分支出,如:
ifelse处;
曾经出现Bug的地方(加注Bug号);声明变量时;
定义常量时,解释常量的意义;
其他比较难以理解的地方。
4.2.4其他要求
Oracle8i以上版本是对象关系型数据库管理系统(RDBMS),和传统的关系型数据库相比,增加了面向对象的功能。
但为了提高数据库的兼容性,在进行数据库设计时应避免使用这些面向对象的功能。
能够使用SQL语句实现功能时,不使用PL/SQL。
删除所有无用的变量。
如果要用变量来表示一个字段和多个字段,尽量使用%TYPE和%ROWTYPE来定义这些变量。
数据表中用于存放文档、图片、音像等内容的大型字段应放在一个独立的表中,以减少对数据库性能的影响。
5.数据字典文档编写格式
开发者应提供完整准确的数据字典,数据字典中应包括数据库表汇总表、数据库表详述表、编码数据表三部分内容。
5.1数据库表汇总表格式
数据库表汇总表的目的是将某一子系统所用到的全部表和视图列在一个表格中,以便检索查找。
其格式如下:
表5-1数据库表汇总表格式表
子系统名
数据库用户名
表格编号
表英文名称
表中文名称
用途说明
类型
表格编号格式为:
Z_XXX,其中Z为数据表性质代号B、C、T、A,XXX为顺序号。
要求相同性质的表集中排列,排列顺序依次为B、C、T、A。
各性质的顺序号分别从1开始依次升序增加。
汇总表中的表格编号与详述表中对应的表格编号要相同。
详述表在文档中的具体位置要按表格升序为止,以便根据表格编号迅速找到对应的详述表。
5.2数据库表详述表格式
数据库表详述表描述所有表和视图字段的功能,其格式如下:
表5-2数据库详述表格式表
子系统名
数据库用户名
表格编号
表中文名称
表英文名称
No.
字段名
中文名称
数据类型
取值范围
P
F
I
N
D
U
C
1.
由于Oracle数据库不支持逻辑数据类型,建立数据表时,采用CHAR
(1)类型模拟逻辑数据类型字段,取值为:
‘1’=True,‘0’=False。
数据库的完整性约束规则一般应用P、F、I、N、D、U、C表示,其含义如下:
(1)、P:
主键(PK);
(2)、F:
外键(FK),在‘取值范围’内指明外键:
表名[(列名)];
(3)、I:
在该字段上有索引,在数据表最后指明索引名,方向(A/D),字段名;
(4)、N:
该字段不许为空;
(5)、D:
有缺省值,在‘取值范围’内指明缺省值;
(6)、U:
取值唯一;
(7)、C:
主键数据删除时级联删除全部外键数据。
非主键无此标志;
具有上述特性的字段,在文档相应的位置按上述说明填写‘*’记号。
5.3编码数据表格式
编码数据表用于将某些编码内容已经明确的编码表及其内容列在文档中,要求编码数据表按表格编号升序排列。
表5-3编码数据表格式表
表格编号
表中文名
表英文名
依据标准
如国标、地方标准、行业标准、南京市交通局标准等
编码字段中文名(英文名)
编码内容中文名(英文名)
编码
内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 规范 规定 南京市 交通局 数据库 建设 规则
![提示](https://static.bdocx.com/images/bang_tan.gif)