数据库建设规范.docx
- 文档编号:5164934
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:13
- 大小:55.83KB
数据库建设规范.docx
《数据库建设规范.docx》由会员分享,可在线阅读,更多相关《数据库建设规范.docx(13页珍藏版)》请在冰豆网上搜索。
数据库建设规范
数据库建设规范
1.前言
数据库技术是信息资源管理最有效的手段。
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
本规范通过数据建库的命名、结构、建库过程及安全性措施等几个技术方面进行约定,目的就是提供一套规范、合理、科学的建库技术体系,应用系统提供建库技术参考。
2.范围
本规范主要从关系数据库的命名、关系和结构以及建设过程等几个方面来规定数据库设计应遵循的规范。
3.术语和定义
3.1范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。
满足最低要求的叫第一范式,简称1NF。
在第一范式中满足进一步要求的为第二范式,其余以此类推。
一般而言,数据库的设计应至少满足第三范式。
3.2关联
关联是不同表之间的数据彼此联系的方法。
关联同时存在于形成不同实体的数据项之间和表实体本身之间,构成了数据库规范化的基本核心问题。
它分为一对一、一对多、多对多三种关联形式。
3.3关系模型
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
在
关系模型中,实体与实体间的联系都是用关系来表示的。
3.4视图
视图是一个定制的虚拟表。
可以是本地的、远程的或带参数的;其数据可以
来源于一个或多个表,或者其他视图;它是可更新的,可以引用远程表;它可以
更新数据源。
视图是基于数据库的,因此,创建视图的前必须有数据库。
3.5外键
外键是一个关系中的一组属性(一个或多个列),它同时也是某种(相同的
或其它的)关系中的主键。
它是关系之间的逻辑链接。
3.6约束
数据库管理系统必须提供一种机制来检查数据库中的数据,看其是否满足语
义规定的条件,这些加在数据库数据之上的语义规范,称为约束。
约束又可以分
为完整性约束、唯一性约束等。
3.7主键
每张表都应该包含相同的一个或一组字段,它们都是保存在表中的、每一条
记录的唯一标识,通常这些字段(即主键)需要在建立数据表时就设定并标记。
4.命名规范
4.1规范约定
命名采用26个英文字母(一律大写)和0-9这十个自然数,加上下划线“_”
组成,共63个字符,不能出现其他字符(注释除外)。
数据库对象包括表、视图、存储过程、函数、触发器、字段、数据库文档。
对象名字由前缀和实体名称组成,长度不超过30个字符。
前缀描述对象类型,
实体名称包括系统标识等信息尽量详尽描述实体的内容,不以数字或下划线开头,对象名称中的标识用下划线“_”进行分隔。
其中“[]”内的内容表示是可选内容。
4.2表名
T_[<系统标识>_][<…….>_]<表标识>
如:
T_NPCP_ORDER
4.3视图
V_[<系统标识>_][<…….>_]<视图标识>
如:
V_NPCP_ORDER
4.4存储过程
P_[<系统标识>][<…….>_]<存储过程标识>[_<存储过程行为标识>]
如:
P_NPCP_ORDER_ADD
4.5函数
F_[<系统标识>_][<…….>_]<函数标识>[_<函数行为标识>]
如:
F_NPCP_ORDER_ADD
4.6触发器
TR_[<系统标识>][<表标识>_][<…….>_]<触发标识>
如:
TR_NPCP_ORDER_ADD
4.7字段
[<外键表标识>_][<…….>_]<字段标识>
如:
ORDER_ID
4.8索引
IN_[<系统标识>_][<表标识>_][<…….>_]<索引标识>
如:
IN_NPCP_ORDER_NAME
5.数据库建设过程规范
5.1概述
建库过程建议参考以下的建库流程如图1所示。
需求分析阶段综合各科学数据用户的应用需求,形成规范的需求调查表、需求规格书、功能需求表。
概念设计阶段形成独立于机器特点、独立于各个数据库管理系统产品的概念模式,用E-R图来描述。
逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。
然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图形成数据的外模式。
数据可以分为两大类:
关系数据和非关系数据,在物理设计阶段根据数据库管理系统的特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
最后进行数据(或元数据)录入。
建库过程的每一步都是对其前一步
骤的检验,对于发现的错误或偏差需要进行及时的评估,并进行修正完善。
对由
于数据库的设计而在应用当中的造成的不良影响及出现数据误差等现象进行修
缮、更新、完善。
图1数据库建设过程
5.2需求分析阶段
需求分析阶段可以分为两个步骤:
需求调查和内容分析。
数据大概分为两类数据:
关系型数据和非关系型数据(如文件,文档)。
在需求分析阶段可以对这两种数据进行不同的处理和分析。
5.2.1需求调查
数据信息来源有以下几种方法,分析系统需求分析报告书,组织调查会,咨询业务专家。
非关系型数据要分析哪几类类型,如文件的格式。
5.2.2内容分析
需求收集和分析,结果得到数据字典描述的数据需求,数据流图描述的处理需求。
数据项
数据项含义
数据类型
长度
取值范围
可选性
注释
表1数据字典规范模式
图2数据流图的表达方式
5.3概念结构设计阶段
这个阶段的任务确定建模目标,开发建模计划,组织建模队伍,收集数据资源,制定约束和规范。
5.2.1定义实体
找出潜在的实体,形成初步实体表,然后再进行必要的调整。
满足下述两条准则的事物,一般均可作为属性对待。
(1)作为“属性”,不能再具有需要描述的性质。
“属性”必须是不可分的数据项,不能包含其他属性。
(2)“属性”不能与其他实体具有联系,即E-R图中所表示的联系是实体之问的联系。
5.3.3定义关系
模型中只允许二元联系,n元联系必须定义为n个二元联系。
根据实际的业务需求和规则,使用实体联系矩阵来标识实体间的二元关系,然后根据实际情况确定出连接关系的势、关系名和说明,确定关系类型,是标识关系、非标识关系(强制的或可选的)还是非确定关系、分类关系。
如果子实体的每个实例都需要通过和父实体的关系来标识,则为标识关系,否则为非标识关系。
非标识关系中,如果每个子实体的实例都与而且只与一个父实体关联,则为强制的,否则为非强制的。
如果父实体与子实体代表的是同一现实对象,那么它们为分类关系。
即在这一步工作中确定任意有关联的两个实体之间的关系类型。
5.3.4定义属性
从源数据表中抽取说明性的名词开发出属性表,确定属性的所有者。
定义非主键属性,检查属性的非空及非多值规则。
此外,还要检查完全依赖函数规则和非传递依赖规则,保证一个非主键属性必须依赖于主键、整个主键、仅仅是主键。
5.3.5定义键
通过引入交叉实体除去上一阶段产生的非确定关系,然后从非交叉实体和独立实体开始标识侯选键属性,以便唯一识别每个实体的实例,再从侯选键中确定主键。
为了确定主键和关系的有效性,通过非空规则和非多值规则来保证,即一个实体实例的一个属性不能是空值,也不能在同一个时刻有一个以上的值。
找出误认的确定关系,将实体进一步分解,最后构造出IDEF1X模型的键基视图,确定关系中的主键和外键等。
键选择规范:
1)键设计原则:
为关联字段创建外键;所有的键都必须唯一;避免使用复合键;外键总是关联唯一的键字段。
2)使用系统生成的主键,设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。
这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。
采用系统生成键作为主键还有一个优点:
当拥有一致的键结构时,找到逻辑缺陷很容易。
3)不要采用用户可编辑的字段作键(不让主键具有可更新性)在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。
通常的情况下不要选择用户可编辑的字段作为键。
4)可选键有时可做主键,把可选键进一步用做主键,可以拥有建立强大索引的能力。
5.3.6定义索引
索引是从数据库中获取数据的最高效方式之一。
95%的数据库性能问题都可
以采用索引技术得到解决。
1)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这
组)属性上建立索引(或组合索引);
2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个
属性上建立索引;
3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这
个(或这组)属性上建立索引;
4)逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的
非成组索引,对任何外键列采用非成组索引。
考虑数据库的空间有多大,表如何
进行访问,还有这些访问是否主要用作读写。
5)大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它
们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。
6)不要索引MEMO(备注)字段,不要索引大型字段(有很多字符),这样作
会让索引占用太多的存储空间。
7)不要索引常用的小型表。
不要为小型数据表设置任何键,假如它们经常
有插入和删除操作就更别这样作了。
对这些插入和删除操作的索引维护可能比扫
描表空间消耗更多的时间。
5.3.7定义其他对象和规则
定义属性的数据类型、长度、精度、非空、缺省值、约束规则等。
定义触发
器、存储过程、视图、角色、同义词、序列等对象信息。
最后形成的概念模型用E-R图进行表示。
5.4逻辑结构设计阶段
将概念结构转换为某个数据库管理系统所支持的数据模型(例如关系模
型),并对其进行优化。
设计逻辑结构应该选择最适于描述与表达相应概念结构
的数据模型,然后选择最合适的数据库管理系统,形成数据库文档。
将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的
联系转化为关系模式。
关系模型的逻辑结构是一组关系模式的集合。
E-R图则
是由实体、实体的属性和实体之间的联系三个要素组成的。
所以将E-R图转换
为关系模型实际上就是要将实体、实体的属性和实体之间的联系转换为关系模
式,这种转换要遵循如下规范原则:
1)一个实体型转换为一个关系模式。
实体的属性就是关系的属性。
实体的
标识对应关系模型的候选码。
2)一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联
系本身的属性均转换为关系的属性。
而关系模型的候选码为各实体标识的组合。
3)一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关
系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的标识
以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
4)一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应
的关系模式合并。
5)三个或三个以上实体间的一个多元联系转换为一个关系模式。
与该多元
联系相连的各实体的标识以及联系本身的属性均转换为关系的属性。
而关系模型
的候选码为各实体码的组合。
6)同一实体集的实体间的联系,即自联系,也可按上述1:
1、1:
n和m:
n三
种情况分别处理。
7)具有相同码的关系模式可合并。
为了进一步提高数据库应用系统的性能,通常以规范化理论为指导,还应该适当地修改、调整数据模型的结构,这就是数据模型的优化。
确定数据依赖。
消除冗余的联系。
确定各关系模式分别属于第几范式。
确定是否要对它们进行合并或分解。
一般来说将关系分解为3NF的标准,即:
表内的每一个值都只能被表达一次。
表内的每一行都应该被唯一的标识(有唯一键)。
表内不应该存储依赖于其他键的非键信息。
对所有的快捷方式、命名规范、限制和函数都要编制文档。
采用给表、列、触发器等加注释的数据库工具。
对开发、支持和跟踪修改非常有用。
对数据库文档化,或者在数据库自身的内部或者单独建立文档。
为加快数据库设计速度,目前有很多数据库辅助工具(CASE工具),如Rational公司的RationalRose,CA公司Erwin和Bpwin,Sybase公司的owerDesigner以及Oracle公司的OracleDesigner等。
设计人员可根据需要选用相应的数据库设计建模工具。
5.5数据库物理设计阶段
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要
求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细
致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的数据库管理系统,主要是从定量
估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比
较,选择出一个较优的合理的物理结构。
如果该结构不符合用户需求,则需要修
改设计。
规范规定,物理设计当中在遵循数据库设计范式的基础之上,规定科学数据
库建库时除数据库设计所遵循的范式外的一些适用规范:
1)所有数据记录都要有ID序列字段,ID号由数据库自动生成,以标识记录。
2)所有记录都要有“更新时间”字段,记录标识数据更新情况。
3)对于主-明细表结构,设计对应的视图将两表连接用于查询。
4)可以取消主外键关联,通过对应的程序来维护数据一致性。
5)类别和状态的多选:
多选分为必选(1..n)和可选(0..n)。
如是必选,在设计时要有说明,在程序实现中应有控制和检查。
两个可选的类别或状态表可以合并为一个表,再与引用此表的主表形成多对多的关系。
5.6实施、运行、维护规范
运用数据库管理系统提供的数据语言(例如SQL)及其宿主语言(例如
JAVA),根据逻辑设计和物理设计的结果建科学数据库,编制与调试应用程序,
组织科学数据入库,并进行试运行。
规范规定:
SQL关键词全部大写,比如
SELECT,UPDATE,FROM,ORDER,BY等。
数据库实施主要包括以下工作:
用DDL定义数据库结构、组织数据入库、
编制与调试应用程序、数据库试运行。
建立或者修订数据库之后,必须用用户新
输入的数据测试数据字段。
所有的sql语句要最进性能分析,和压力测试。
并且需要提交测试报告。
数据库应用系统经过试运行后即可投入正式运行。
在数据库系统运行过程中
必须不断地对其进行评价、调整与修改,定期提交运行监测报告。
包括:
数据库
的转储和恢复、数据库的安全性、完整性控制、数据库性能的监督、分析和改进、
数据库的重组织和重构造。
6.数据库建设安全性规范
6.1概述
随着数据库技术的不断进步,信息安全问题也日益突出,数据库的安全性也更加受到重视。
建设科学数据库中,很多科学数据都是不可再现的,甚至是长期积累获得的成果,失不可得,因此科学数据的安全性显得尤为重要。
安全策略主要是维护科学数据信息的完整性、保密性和可用性。
科学数据库的安全建设规范主要是物理安全、访问控制、数据备份等。
同其它数据资源相同,科学数据库数据的安全威胁主要来自三个方面:
非人为破坏,比如地震等;人为的非主动破坏,比如误操作;人为主动破坏,比如黑客入侵。
对于非人为破坏,主要只能依靠定期备份或者热备份等,并在相隔物理距离外保护备份。
本规范主要讨论对于人为破坏的安全性规范。
6.2完整性设计
1)完整性实现机制:
实体完整性:
每个数据实体都要有主键,即每条数据记录都要有唯一标识以
区分不同记录。
父表中插入数据:
父表中插入数据,要看有哪些受限条件,以及注意插入父
表数据时还有没有其他的辅助数据输入。
如添加化学品数据基本信息时,要注意
其成分信息的添加和关联。
父表中更新数据:
同样需要注意级联更新和受限条件的更新。
用户定义完整性:
数据字段的可选性(是否非空)以及数据检查等。
2)用约束强制数据完整性
完整性约束条件作用的对象可以是关系、元组、列三种。
其中列约束主要是
列的类型、取值范围、精度、排序等约束条件。
元组的约束是元组中各个字段间
的联系的约束。
关系的约束是若干元组间、关系集合上以及关系之间的联系的约
束。
完整性约束条件涉及的这三类对象,其状态可以是静态的,也可以是动态的。
(1)静态列级约束
静态列级约束是对一个列的取值域的说明,这是最常用也最容易实现的一类
完整性约束,包括以下几方面:
对数据类型的约束(包括数据的类型、长度、单位、精度等)。
对数据格式的约束。
对取值范围或取值集合的约束。
对空值的约束,空值表示未定义或未知的值,它与零值和空格不同。
有的列允许空值,
有的则不允许。
其他约束,例如关于列的排序说明,组合列等。
(2)静态元组约束
一个元组是由若干个列值组成的,静态元组约束就是规定元组的各个列之间
的约束关系。
例如订货关系中包含发货量、订货量等列,规定发货量不得超过订
货量;又如教师关系中包含职称、工资等列,规定教授的工资不低于1000元
(3)静态关系约束
在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常
见的静态关系约束有:
实体完整性约束和参照完整性约束:
实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。
函数依赖约束。
大部分函数依赖约束都在关系模式中定义。
统计约束。
即字段值与关系中多个元组的统计值之间的约束关系。
例如规定部门经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍。
这里,本部门职工的平均工资是一个统计值。
(4)动态列级约束
动态列级约束是修改列定义或列值时应满足的约束条件;包括下面两方面:
修改列定义时的约束,例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。
修改列值时的约束,修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。
(5)动态元组约束
动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。
例如职工工资调整时新工资不得低于原工资+工龄*1.5等。
(6)动态关系约束
动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原
子性等约束条件。
3)强制指示完整性
在有害数据进入数据库之前将其剔除。
激活数据库系统的指示完整性特性。
这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。
4)使用查找控制数据完整性
控制数据完整性的最佳方式就是限制用户的选择。
只要有可能都应该提供给用户一个清晰的价值列表供其选择。
这样将减少键入代码的错误和误解同时提供数据的一致性。
某些公共数据特别适合查找:
国家代码、状态代码等。
5)采用视图
在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的
视图而不必非要应用程序直接访问数据表。
这样做会在处理数据库变更时提供了
更多的自由。
6.3物理安全
保证物理安全是安全防范的基本。
这主要是指保证数据库服务器、数据库所
在环境、相关网络的物理安全性。
比如:
是否能够保证服务器所在网络的网线、
交换机性能环境的物理安全;是否只有数据库管理员能够在物理上接触数据库服
务器;是否能够确保避免通过社会工程学的手段来欺骗或者诱导从而能获得物理
上的访问能力等等。
6.4访问控制
访问控制是基本安全性的核心。
数据库系统的访问控制也包括了帐号管
理、密码策略、权限控制、用户认证等方面,主要是从与帐号相关的方面来维护
数据库的安全性。
访问控制策略主要包括:
避免帐号被人列举。
比如,非管理员获得所有数据库用户帐号列表。
最小化权限原则。
数据库管理员仅仅分配帐号的足够使用权限。
比如,如果一个用户只需要进行数据库的查询工作,那么这个用户使用的权限就只能局限于SELECT语句,而不能有DELETE、UPDATE等语句的使用权限。
权限的扩散以及超越应用范围的访问是访问控制的一大威胁,很多科学数据的流失和侵权都是因为这个途径而造成的。
最高权限最小化原则。
确保不会分配多余的管理员权限帐号。
管理员帐号的数量和安全危险性是成正比的。
帐号密码安全原则。
分配帐号的密码必须符合密码安全原则的要求。
基本密码安全要求包括:
密码长度(8位以上)、密码复杂性(必须同时包括字母、数字和符号)、密码结构非连续性(密码构成内容必须是在键盘上分别隔离的元素等。
有条件的或者有非常高安全要求的环境甚至可以采用一次性密码。
密码的安全性是访问控制的主要威胁,特别是最高管理员,比如sa帐号的密码。
用户认证是否足够安全。
密码是否经过加密,确保认证过程的密码安全性,用户认证过程是否有日志记录。
详尽的访问审核。
访问审核能够为损害等提供可查依据。
其中Oracle数据库提供了详尽的审核功能,比如:
SQL语句、角色添加删除、登录事
件的成功失败、对象的使用、语句权限的使用、密码更改、数据库事件、锁事件、存储过程事件以及服务关闭启动等等。
文件的访问控制。
确保文件不会被人修改、删除。
这些文件包括数据库系统文件、数据库文件、日志文件以及备份文件等。
6.5数据备份
为了避免数据的流失,进行数据备份是减少数据损失的有效手段,能让数据库遭到破意恶意或者误操作,恢复数据资源。
这也是数据库安全策略的一个重要部分。
Oracle数据库系统可以从多种故障中恢复,包括:
媒体故障,用户错误,服务器永久丢失,Mysql能从binlog中恢复。
制订适合自己的数据库备份策略,必须确定数据的可用性要求。
总体备份策略包括备份的类型和频率以及所需的硬件特性和速度。
最好能够测试备份和恢复过程,有助于确保拥有从各种故障中恢复所需的备份,并且当真正的故障发生时可以快速平稳地执行恢复过程。
制订过程中需要根据自己的实际情况来确定备份周期等,比如:
服务器故障时间将造成多大经济损失;重新创建丢失的数据的难易程度如何;如果遇到媒体故障,如磁盘驱动器发生故障,可接受的故障时间是多长;一旦发生灾难,如因火灾丢失服务器,可接受的故障时间是多长;什么时候大量使用数据库,导致频繁的插入和更新操作,等等。
争取通过数据备份把意外的数据损失减到最少。
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 建设 规范