6.2.1数据库设计概述
1. 数据库设计任务
数据库设计是指根据用户需求研制数据库结构的过程,具体地说,是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能有效地存储数据,满足用户的各种信息处理要求。
具体地说,数据库设计是把现实世界中的数据,根据各种应用处理的要求,加以合理的组织,满足硬件和操作系统的特性,利用已有的DBMS来建立能够实现系统目标的数据库。
2.数据库设计的过程
一般来说,数据库的设计过程大致可分为五个阶段:
(1)需求分析
调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。
(2)概念设计
针对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中数据的分类、聚集和概括,建立抽象的概念数据模型。
(3)逻辑设计
将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需要为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓的“逻辑数据库”。
(4)物理设计
根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序、存取方法和存取路径等)。这一步设计的结果就是所谓的“物理数据库”。
(5)验证设计
在上述设计的基础上收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般来说,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改,因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。
6.2.2 需求分析
需求分析是数据库设计的第一步,是设计的基石。需求分析是否能全面、准确地表达用户要求,将直接影响到后续各阶段的设计,影响到整个数据库设计的可用性和合理性。
1. 需求分析的内容和方法
需求分析的目的是获取用户的信息要求、处理要求、安全性要求和完整性要求。
需求分析阶段的任务一般分以下步骤:
(1)现行系统调研;
(2)业务及需求分析;
(3)综合、调整;
(4)编写需求分析报告,以作为下一阶段设计的依据。
2.用户要求的描述和分析
1)数据流图
数据流图(DFD,DataFlow Diagram)是结构化分析方法(SA,StructuredAnalysis)的工具之一,它描述数据处理过程,以图形化方式刻画数据流从输入到输出的变换过程。任何一个系统都可以抽象为如下图所示的情况。
2)数据字典
数据字典(DD,DataDictionary)是对系统中数据的详尽描述,是各类数据属性的清单。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。数据字典是各类数据描述的集合,通常包括以下几个部分:
(1)数据项:是数据的最小单位。
(2)数据结构:是若干数据项有意义的集合。
(3)数据流:可以是数据项,也可以是数据结构。
(4)数据存储:处理过程中存取的数据。
6.2.3 概念设计
概念设计是对数据的抽象和分析,它以对信息要求和处理要求的初步分析为基础,以数据流图和数据字典提供的信息作为输入,运用信息模型工具,发挥开发设计人员的综合抽象能力建立概念模型。概念模型独立于数据逻辑结构,也独立于DBMS和计算机系统,是对现实世界有效而自然的模拟。
其主要特点如下:
(1)能充分地反映现实世界;
(2)易于理解;
(3)易于更动;
(4)易于向关系、网状或层次等数据模型转换。
1. 概念设计的方法:自顶而下和自底而上
2.数据抽象与局部视图设计
1)E-R模型
E-R方法是实体-联系方法的简称,是描述现实世界概念结构模型的有效方法。用E-R方法建立的概念结构模型称为E-R模型,或称为E-R图。
现实世界的复杂性导致实体联系的复杂性。表现在E-R图上可以归结为以下几种:
(1)两个实体集之间的联系,如图a所示
(2)两个以上实体集间的联系,如图b所示。
(3)同一实体集内部各实体之间的联系,如图c所示。
2)数据抽象
E-R模型是对现实世界的一种抽象。¢所谓抽象是对实际的人、物、事和概念进行人为处理,抽取人们关心的本质特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。抽象一般有三种,分别是分类、聚集和概括。
3)局部视图设计
概念结构设计的第一步就是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1∶1,1∶n,n∶m),设计局部视图(也称局部E-R图)。具体做法是:
(1)选择局部应用;
(2)逐一设计局部E-R图。
3.视图集成
设计好各子系统的局部视图后,还需要通过视图集成的方法,将各子系统有机融合起来,综合成一个系统的总视图,如图4所示。这样由局部到整体设计出的数据库,最终是从系统整体的角度看待和描述数据的,因此数据不再面向某个应用而是面向整个系统。经过视图集成,使得数据库能被全系统的多个应用共享使用。
1)合并
局部E-R图中语法和语义都相同的概念称为对应,局部E-R图之间的不一致称为冲突。合并局部E-R图就是尽量合并对应的部分,保留特殊的部分,着重解决冲突的部分。各局部E-R图面向不同的局部应用,而通常由不同开发设计人员进行局部E-R图设计,因此,各个局部E-R图间的冲突是难免的。一般来讲,冲突分为命名冲突、属性冲突和结构冲突。
2)消除冗余
冗余包括冗余数据和实体间冗余的联系。冗余数据指可由其他数据导出的数据;冗余联系是指可由其他联系导出的联系。冗余数据和冗余联系会破坏数据库的完整性,增加数据库管理的困难,应该消除。
注意:但并非所有的冗余都应去掉,对于访问频率高的冗余数据应适当保留,同时加强数据完整性约束,如设计触发器等。消除冗余后得到基本E-R图。
6.2.4 逻辑设计
¢逻辑设计是在数据库概念设计的基础上,将概念结构设计阶段得到的独立于DBMS和计算机系统的概念模型转换成特定DBMS所支持的数据模型。
¢E-R图向关系模型的转换:
E-R图由实体、联系和属性组成,E-R图向关系模型的转换就是将实体、联系、属性转换为关系模式。转换原则如下:
1)实体转换为关系模型
用关系模型表示实体是很直接的,实体的名称就是关系的名称,实体的属性就是关系的属性,实体的主键就是关系的主键。
2)联系转换为关系模型
(1)一对一联系的转换:若实体间的联系是1∶1,则选择两个实体类型转换成的关系模式中的任意一个关系模式,在其属性中加入另一个关系模式的键和联系类型的属性。
(2)一对多联系的转换:若实体间的联系是1∶n,则可以在“n”端实体类型转换成的关系模式中,加入“1”端实体类型的键和联系类型的属性。
(3)多对多联系的转换:若实体间的联系是m∶n,则可以把联系类型也转换成关系模式。
6.2.5 物理设计
物理设计是以逻辑设计结果作为输入,结合DBMS特征与存储设备特性设计出适合应用环境的物理结构。数据库物理结构是数据库在物理设备上的存储结构和存取方法。数据库物理设计的目的是提高系统处理效率,充分利用计算机的存储空间。¢一般来讲,数据库物理设计分为两步,即数据库物理设计和性能评价。¢物理设计
1.数据库物理设计
数据库物理设计主要是确定文件组织、分块技术、缓冲区大小及管理方式、数据在存储器上的分布等。
1)数据簇集设计
数据簇集就是把有关的元组集中在一个物理块内或物理上相邻的区域,以提高访问某些数据的速度。
数据簇集建立以后,簇集键相同的元组存放在一起,因而簇集键不必在每个元组中重复存储,只需在一组中存储一次即可,因此可以节约一些存储空间。簇集键可以是单属性的,也可以是复合的。
簇集对于某些特定的应用可以明显地提高性能。
一般来说,用户应用满足以下条件时考虑创建簇集。
(1)通过簇集键进行访问或连接是该关系的主要应用,与簇集无关的其他访问很少或是次要的。
(2)对应每个簇集键值的平均元组既不太少,也不太多。
(3)簇集键的值相对稳定(更新、插入、删除操作少),以减少修改簇集键值所引起的维护开销。
(4)对查询某一范围的值,最好在相关属性上建立簇集索引。
2)索引的选择¢索引是为了加速对表中数据进行检索而创建的一种分散存储结构。¢索引是表的关键字,它提供了指向表中记录行的指针。¢合理建立索引可以提高数据检索速度,加速关系连接,强制操作的唯一性。
建立索引需考虑以下原则:
(1)考虑建立索引的属性:
① 主关键字。
② 连接中频繁使用的属性。
(2)不考虑建立索引的属性:
① 很少或从来不在查询中出现的属性。
② 属性值很少的属性。
③ 小表(记录很少的表)。
④ 经常更新的属性或表。
⑤ 属性值分布不均,在几个值上很集中。
⑥ 过长的属性。
2. 评价物理结构
数据库物理设计可能有多个方案,衡量一个物理设计的优劣,可以从存储空间、响应时间、维护代价等方面综合评定。存储空间利用率、存取时间和维护代价等常常是相互矛盾的。例如,某一冗余数据可提高检索效率,但增加了存储空间。开发设计人员必须进行权衡,进行性能的预测和评价,选择一个较优的设计。

