在数据库领域内,通常把使用数据库的各类信息系统都统称为数据库应用系统。
数据库设计,广义的讲,是数据库及其应用系统的设计,即设计整个数据库应用系统。狭义的讲,是设计数据库本身,即设计数据库的各级模式并建立数据库,这是数据库应用设计的一部分。
数据库设计是对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并根据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
信息管理要求是指在数据库中应该存储和管理那些数据对象;数据操作要求是指数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。
数据库设计特点
一、三分数据,七分管理,十二分基础数据
二、结构(数据)设计和行为(处理)设计相结合
数据库设计方法
·新奥尔良方法:该方法把数据库设计分为若干阶段和步骤,并采用一些辅助手段实现每一个过程。运用软件工程的思想,按照一定的设计规程用工程化的方法设计数据库。(规范设计方法)
·基于E-R模型的数据库设计方法。用E-R模型来设计数据库的概念模型。
·3NF设计方法。用关系数据理论为指导来设计数据库的逻辑模型。
·ODL方法,面向对象的数据库设计方法。该方法用面向对象的概念和术语来说明数据库结构。
数据库设计的步骤
(1)需求分析
(2)概念结构设计
(3)逻辑结构设计
(4)物理结构设计
(5)数据库实施
(6)数据库运行及维护
数据库设计开始之前,首先必须选定参加设计的人员:系统分析人员、数据库设计人员、应用开发人员、数据库管理人员、用户代表。
(1)需求分析阶段
进行数据库设计首先必须了解与分析用户的需求。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。
(2)概念结构设计阶段
概念结构设计时整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
(3)逻辑结构设计阶段
逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并优化。
(4)物理结构设计阶段
物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
(5)数据库实施阶段
包括运用DBMS提供的数据库语言及其宿主语言,根据逻辑结构与物理结构设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行与维护
需要指出的是,这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。在设计过程中把数据库设计和对数据库中数据处理的设计紧密结合起来,将这两方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。
数据库设计过程中的各级模式
需求分析阶段
数据:数据字典、全系统中的数据项、数据流、数据存储的描述
处理:数据流图、判定表(判定树)、数据字典中处理过程的描述
概念结构设计
数据:概念模型(E-R图)、数据字典
处理:系统说明书(①新系统要求、方案和概图;②反映新系统信息流的数据流图)
逻辑结构设计
数据:某种数据关系(关系型或非关系型)
处理:系统结构图(模块结构)
物理设计
数据:存储安排、方法选择、存取路径建立
处理:模块设计、IPO表
数据库实施阶段
数据:编写模式、装入数据、数据库试运行
处理:程序编码、编译联接、测试
数据库运行和维护
数据:性能检测、转储/恢复、数据库重组和重构
处理:新旧系统转换、运行、维护(修正性、适应性、改善性)
需求分析简单的说就是分析用户的要求。
需求分析的任务
需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据库的要求:
(1)信息要求。用户需要从数据库中获得的信息内容与性质。
(2)处理要求。用户要完成什么功能,对处理的响应时间有什么要求,处理方式是如何的。
(3)安全性与完整性要求
需求设计的方法
(1)调查组织机构情况
(2)调查各部门的业务活动情况
(3)在熟悉了解业务活动的基础上,协助用户明确对新系统的各种要求。
(4)确定新系统的边界。
经常用到的调查方法有
(1)跟班作业
(2)开调查会
(3)请专人介绍
(4)询问
(5)设计调查表请用户填写
(6)查阅记录
调查了解用户需求以后,还需要进一步分析和表达用户的需求。
在众多分析方法中,结构化分析方法是一种简单实用的方法:SA方法从最上层系统组织机构入手,采用自顶向下、逐层分解的方式分析系统。
可将处理功能分解为若干个子功能,每个子功能还可以继续分解,形成若干层次的数据流图。
数据流图表达了数据和处理过程的关系。处理过程的处理逻辑常常借助判定表或判定树来描述。系统中的数据则借助数据字典来描述。
数据字典
数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
1、数据项
数据项是不可再分的数据单位。
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系}
2、数据结构
数据结构反应了数据之间的组合关系
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
3、数据流
数据流是数据结构在系统内传输的路径。
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
4、数据存储
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
数据存储描述={数据存储名,说明,编号,输入的数据流,输出的数据流,组成:{数据结构},数据量,存取频度,存取方式}
5、处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}
数据字典是关于数据库中数据的描述,即元数据,而不是数据本身。
(1)需求分析阶段的一个重要而困难的任务是手机将来应用所涉及的数据,设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充。
(2)必须强调用户的参与。
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。
概念结构
(1)能真实、充分地反应现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
(2)易于理解,从而可以用它和部书记计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;
(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
(4)易于向关系、网状、层次等各种数据模型转换。
概念结构设计的方法与步骤
自顶向下首先定义全局概念结构的框架,然后逐步细化。
自底向上首先定义各局部应用的概念结构,然后将他们集合起来,得到全局概念结构。
逐步扩张首先定义最重要的核心概念结构,然后向外扩充。
混合模式
数据抽象与局部视图设计
1、分类“is member of”
定义某一类概念作为显示世界中的一组对象的类型。这些对象具有某些共同的特称和行为。
2、聚集“is part of”
定义某一类型的组成部分。
3、概括“is subset of”
定义类型之间的一种子集联系。概括有继承性
(1)选择局部应用
根据某个系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,作为设计分E-R图的触发点,让这组图中的每一部分对应一个局部应用。
(2)逐一设计分E-R图
1.作为“属性”,不能再具有需要描述的性质,即“属性”必须是不可分的数据项,不能包含其他属性
2.“属性”不能与其他的实体具有联系,即E-R图中所表示的联系是实体与实体之间的联系。
视图的集成
(1)多个分E-R图一次集成
(2)逐步集成,用累加的方式一次集成两个分E-R图
无论采用哪种方式,每次集成局部E-R图时都需要分两步走:
(1)合并。解决各分E-R图之间的冲突。
(2)修改和重构。消除不必要的冗余。
一、合并分E-R图,生成初步E-R图
各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。
1、属性冲突
(1)属性域冲突,即属性值的类型、取值范围或取值集合不同
(2)属性取值单位冲突
2、命名冲突
(1)同名异义
(2)异名同义
3、结构冲突
(1)对同一对象在不同应用中具有不同的抽象。
(2)同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同。
(3)实体间的联系在不同的分E-R图中为不同的类型。
二、消除不必要的冗余,设计基本E-R图
所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。容易破坏完整性
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
(1)将概念结构转换为一般的关系、网状、层次结构
(2)将转换来的关系、网状、层次结构向特定的DBMS支持下的数据模型转换
(3)对数据模型进行优化
E-R图向关系模型的转换
如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体型间的联系则有以下不同的情况
(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并(每个实体的码均是该关系的码)。
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
(3)一个n:m联系转换为一个关系模式,各实体的码组成关系的码,或关系码的一部分。
(4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
(5)具有相同码的关系模式可以合并。
数据模型的优化
数据库逻辑设计的结果不是唯一的。
1.确定数据依赖
2.对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
3.按照数据依赖的理论读关系模式逐一进行分析,考察是否存在部分函数依赖、传递依赖、多值依赖等。
4.按照需求分析阶段得到的处理要求,分析对于这样的应用环境这些模式是否合适确定是否要对某些模式进行合成并分解。
并不是规范化程度越高的关系就越优。
5.对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。
水平分解是把(基本)关系的元组分为若干个子集合,定义每个子集合为一个子关系,以提高系统的效率。
垂直分解是把关系模式R的属性分解为若干子集合,形成若干子关系模式。需要确保无损连接性和保持函数依赖
设计用户子模式
定义数据库全局模式主要是从系统的时间效率、空间效率、易维护等角度出发。
(1)使用更符合用户习惯的命名。
(2)可以对不同级别的用户定义不同的View,以保证系统的安全性。
(3)简化用户对系统的使用
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。
数据库的物理设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
数据库物理设计的内容和方法
设计优化的物理数据库结构,使得数据库上运行的各种事务响应时间小、存储空间利用率高、事务吞吐量大。
首先对要运行的事务进行详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
关系模式存取方法选择
常用的存取方法有三类。第一类是索引方法,目前主要是B+树索引方法;第二类是聚簇方法;第三类是HASH方法。
一、索引存取方法的选择
1.如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。
2.如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。
3.如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。
二、聚簇存取方法的选择
为了提高某个属性(或属性组)的查询速度,把这个货这些属性上具有相同值的元组集中存放在连续的物理块中称为聚簇。
聚簇功能可以大大提高按聚簇码进行查询的效率。
聚簇功能不但适用于单个关系,也适用于经常进行连接操作的关系。聚簇中的连接属性称为聚簇码。
(1)对经常在一起进行连接操作的关系可以建立聚簇;
(2)如果一个关系的一组属性经常出现在相等比较条件中,则该单个关系可以建立聚簇;
(3)如果一个关系的一个(或一组)属性上的值重复率很高,则此单个关系可以建立聚簇。
检查候选聚簇中的关系,取消其中不必要的关系
(1)从聚簇中删除经常进行全表扫描的关系
(2)从聚簇中删除更新操作远多于连接操作的关系
(3)不同的聚簇中可能包含相同的关系,一个关系可以在某一个聚簇中,但不能同时加入多个聚簇。
三、HASH存取方法的选择
(1)如果一个关系的大小可以预知,而且不变。
(2)如果关系的大小动态变化,而且数据库管理系统提供了动态HASH存取方法。
确定数据库的存储结构
确定数据的存放位置和存储结构,包括:确定关系、索引、聚簇、日志、备份等的存放安排和存储结构,确定系统配置等。
1.确定数据的存放位置
由于各个系统所能提供的对数据进行物理安排的手段、方法差异很大,因此设计人员应仔细了解给定的RDBMS提供的方法和参数,针对应用环境的要求,对数据进行适当的物理安排。
2.确定系统配置
在物理设计时对系统配置变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能
评价物理结构
数据库设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案。数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存放时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。
数据的载入和应用程序的调试
数据库实施阶段包括两项重要的工作:一项是数据的载入,另一项是应用程序的编码和调试。
数据库应用程序的设计应该与数据库设计同时进行,因此在组织数据入库的同时还要调试应用程序。
数据库的试运行
在原有系统的数据有一小部分已经输入数据库后,就可以开始对数据库系统进行联合调试。
要实际运行数据库应用程序,执行对数据库的各种操作,测试应用程序的功能是否满足设计要求,如果不满足,对应用程序部分则要修改、调整,知道达到设计要求为止。
要测试系统的性能指标,分析其是否达到设计目标。
数据库的运行和维护
数据库运行过程中的物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。
1.数据库的转储和恢复
最重要的维护工作之一。DBA要针对不同的应用要求制定不同的转储计划,以保证一旦发生故障能尽快将数据库恢复到某种一致的状态,并尽可能减少数据库的破坏。
2.数据库的安全性、完整性控制
3.数据库性能的监督、分析和改造
4.数据库的重组织与重构造