3.5 数据库设计
数据库设计是建立数据库及其应用系统的核心和基础,是指使用现有的数据库管理系统,面对具体的应用对象构建合适的数据模型,并建立数据库及其应用系统,从而产生的数据库系统,能有效地管理数据和处理数据,满足各类用户的应用需求。
3.5.1 数据库设计概述
1.数据库设计的内容
数据库设计的目标是:对于给定的具体应用环境,建立一个良好的、能满足不同用户使用要求的、又能被选定的DBMS所接受的数据库模式。
数据库设计的内容主要有:数据库的结构设计和数据库的行为设计。
(1)数据库的结构设计
数据库的结构设计是为指定应用环境构造出的数据库模型;由于数据库模型是为各应用程序共享的,其行为特征是静态、不变的,所以数据库的结构设计又称为数据库的静态结构设计。
数据库的结构设计过程:是将现实世界中的事物、事物间的联系用E-R图表示,再将各个分E-R图汇总,得出数据库的概念结构模型,最后将概念结构模型转化为数据库的逻辑结构模型表示。
最后,在选定的DBMS环境下,把数据库的逻辑结构模型加以物理实现,从而得出数据库的存储模式和存取方法,也就是物理结构模型。
(2)数据库的行为设计
数据库的行为设计过程:是将现实世界中的数据及应用情况用数据流程图和数据字典表示,并详细描述其中的数据操作要求(即操作对象、方法、频度和实时性要求);确定系统层次结构;确定系统的功能模块结构;确定数据库的子模式;确定系统数据流程图。
2.数据库设计过程
数据库设计可以分为几个阶段:
需求分析。
]结构设计,主要包括概念结构设计、逻辑结构设计和物理结构设计。
]行为设计,主要包括功能设计、事务设计和程序设计。
]数据库实施,包括加载数据库数据和试运行应用程序。
]数据库运行和维护。
设计一个完善的数据库应用系统不可能一蹴而就,往往需要上述几个阶段的不断反复才能成功。
3.5.2 需求分析
需求分析是数据库设计成败的关键。需求分析阶段应该对系统的整个应用情况进行全面、详细的调查,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些要求写成用户和数据库设计者都能够接受的文档。
需求分析阶段的工作分为6个步骤。
①分析用户活动,产生业务流程图
②确定系统范围,产生系统范围图
③分析用户活动所涉及的数据,产生数据流图
④分析系统数据,产生数据字典
⑤功能分析
⑥功能数据分析
3.5.3 数据库结构设计
数据库的结构设计主要包括概念结构设计、逻辑结构设计和物理结构设计。
1.概念结构设计
(1)概念结构设计的不同策略
]自顶向下:先定义全局概念模型,然后再逐步细化。
]自底向上:先定义每一个局部应用的概念结构,然后按一定的规则把它们集成起来,从而得到全局概念模型。
]逐步扩展:先定义最重要的核心结构,由此基础上逐步细化。
]混合策略:先采用自顶向下的方法设计概念结构的框架,在此基础上自底向上设计局部概念结构,并将它们集成在一起。
2.采用E-R模型方法
利用E-R方法进行数据库的概念结构设计分为以下三步:
(1)局部概念模式设计
首先根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,进行局部概念模式(视图)设计。局部用户的信息需求是构造全局概念模式的基础,因此要为每个用户或每个对数据的观点与使用方式相似的用户建立一个相应的局部概念结构。
(2)将局部概念模式综合成全局概念模式
综合各局部概念结构就可得到反映所有用户需求的全局概念结构。
全局E-R模型的设计过程为:依次取出E-R模型,对它们进行合并,直至所有局部E-R模型都合并完毕。
在合并中,各个分E-R图之间必定存在许多不一致的地方。合理消除各分E-R图的冲突是合并分E-R图的主要工作与关键所在。冲突主要有三类:
]属性冲突。包括属性域冲突和属性取值单位冲突。
]命名冲突。包括同名异义和异名同义。
]结构冲突。包含3种,一是同一对象在不同应用中具有不同的抽象;二是同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同;三是实体之间的联系在不同局部视图中呈现不同的类型。
(3)提交审定
在消除了所有的冲突和冗余后,就可以把全局结构提交审定。
此步骤进行了优化全局E-R模型。一个好的全局E-R模型除了能反映用户功能需求外,还应满足如下条件:
]实体个数尽可能少。
]实体所包含的属性尽可能少。
]实体间联系无冗余。
2.逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为具体的数据库管理系统支持的数据模型,也就是导出特定的DBMS可以处理的数据库逻辑结构(数据库的模式和外模式)。
(1)基本设计
下面介绍这种转换规则。
①实体集到关系模式的转换
将每个实体集转换成一个关系模式,实体的属性即为关系模式的属性,实体集的键即为关系模式的主键。在E-R图的关系模式集合中,一个实体对应一个关系。
②联系到关系模型的转换
对于联系类型:一对一(1:1)、一对多(1:N)和多对多(M:N)的3种不同的情况进行不同的处理。
]一个1:1联系转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
]一个1:N联系转换为一个独立的关系模式,也可以与N端对应的关系模式合并。
]一个M:N联系转换为一个关系模式。
]3个或3个以上实体间的一个多元联系转换为一个关系模式。
]具有相同码的关系模式可合并。
在将E-R图转换成关系表后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化。
(2)视图设计
将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体DBMS的特点,设计用户的外模式。在定义用户外模式时可以注重考虑用户的习惯与方便。包括:
]使用更符合用户习惯的别名。
]针对不同级别的用户定义不同的视图,以满足系统对安全性的要求。
]简化用户对系统的使用。
3.物理结构设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。
(1)存取方法设计
数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。
①索引方法
通常有下列情况:
]如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引);
]如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引;
]如果一个(或一组)属性经常在连接操作的连接条件中出现。则考虑在这个(或这组)属性上建立索引。
②聚簇方法
为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块称为聚簇。
只有在以下情况下才考虑建立聚簇:
]通过聚簇码进行访问或连接是该关系的主要应用,与聚簇码无关的其他访问很少或者是次要的。
]对应每个聚簇码值的平均记录数既不太少,也不太多。
]聚簇属性的值应相对稳定,可以减少修改聚簇所引起的维护开销。
③Hash方法
如果一个关系的属性主要出现在等值连接条件中或主要出现在相等比较选择条件中,而且满足下列两个条件之一,则可以选择Hash存取方法:
]该关系的大小可预知,而且不变;
]该关系的大小动态改变,而且DBMS提供了动态Hash存取方法。
(2)存储结构设计
确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。
]确定数据存放位置
为了提高系统性能,应根据应用情况将数据易变部分与稳定部分、存取频率较高部分与存取频率较低部分分开存放。
例如,如果计算机有多个磁盘或磁盘阵列,可以考虑将表和索引分别放在不同的磁盘上,在查询时,由于磁盘驱动器并行工作,因此可以提高物理读写的效率;也可阻将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效;还可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。
]确定系统配置
物理设计的一个重要内容是针对数据管理系统产品设置与调整系统参数配置,如数据库用户数、同时打开的数据数、内存分配参数、使用的缓冲区长度和个数、存储分配参数等。
3.5.4 数据库行为设计
数据库行为设计一般分为功能需求分析、功能设计、事务设计和应用程序实现,我们主要介绍前三个方面。
1.功能需求分析
对行为特性要进行如下分析:
]标识所有的查询、报表、事务及动态特性,指出对数据库所要进行的各种处理;
]指出对每个实体所进行的操作(增、删、改、查);
]给出每个操作的语义,包括结构约束和操作约束;
]给出每个操作(针对某一对象)的频率;
]给出每个操作(针对某一应用)的响应时间;
]给出该系统总的目标;
]功能需求分析是在需求分析之后、功能设计之前的一个步骤。
2.功能设计
系统目标的实现是通过系统的各功能模块来达到的,由于每个系统功能又可以划分为若干个更具体的功能模块,因此,可以从目标开始,一层一层分解下去,直到每个子功能模块只执行一个具体的任务为止。子功能模块是独立的,具有明显的输入信息和输出信息。当然,也可以没有明显的输入和输出信息,只是动作产生后的一个结果。
3.事务设计
事务处理是计算机模拟人处理事务的过程,包括:输入设计,输出设计,功能设计,等等。
(1)输入设计。在进行输入设计时应完成如下几方面工作:
]原始单据的设计格式;
]制成输入一览表;
]制作输入数据描述文档。
(2)输出设计。在输出设计时要考虑如下因素:
]用途。区分输出结果是给客户的还是用于内部或报送上级领导的。
]输出设备的选择。是仅仅显示出来,还是要打印出来或需要永久保存。
]输出量。
]输出格式。
3.5.5 数据库的实施和维护
完成了数据库的结构设计和行为设计并编写了实现用户需求的应用程序之后,就可以利用DBMS提供的功能实现数据库逻辑设计和物理设计的结果。然后将一些数据加载到数据库中,运行已编好的应用程序,以查看数据库设计以及应用程序是否存在问题。这就是数据库的实施阶段。
1.数据库数据的加载和试运行
数据库结构建好后,就可以向数据库中装载数据了。
2.数据库的运行和维护
数据库试运行合格后,数据库即可投入正式运行了。需要精心维护方能使其保持良好的性能。

