数据库设计

导学

数据库设计是指利用数据库管理系统针对具体的应用构建适合的数据库模式,建立数据库及其应用系统,使之能有效地收集、存储、操作和管理数据,以满足企业中各类用户的应用需求(信息需求和处理需求)。

从本质上讲,数据库设计是将数据库系统与现实世界进行密切的、有机的、协调一致的结合的过程。因此,数据库设计者必须非常清晰地了解数据库系统本身及其实际应用对象这两方面的知识。

10.1 数据库设计概述

10.1.1 数据库设计的内涵

从系统开发的角度看,数据库应用系统的建设工作包括结构设计与行为设计两个方面:

1. 结构设计。结构设计着重描述数据库的结构及各数据库对象间的关系,要求在满足应用需求的前提下,尽可能地达到第三范式。

2. 行为设计。行为设计的主要目的是描述对数据库的操作行为和动作,这些行为和动作将来要体现在应用程序中,所以行为设计主要是指应用程序设计。

10.1.2 数据库设计方法

一个好的数据库设计方法应具有以下特征:

1. 能在合理的期限内,以合理的工作量,产生一个有实用价值的数据库结构。这里的“实用价值”,是指满足用户关于功能、性能、安全性、完整性及发展需求等诸方面的要求,同时又服从于特定DBMS的约束,并且可用简单的数据模型来表示。

2. 具有足够的灵活性和通用性,不仅能够为具有不同经验的人所使用,而且能够为受不同数据模型及不同DBMS限制的人所使用。

3. 方法应该是可再生的,即不同的设计者应用同一种方法于同一个设计问题时,应该得到相同或类似的结果。

新奥尔良(New Orleans)方法是一种比较著名的数据库设计方法,该方法将数据库设计分为4个阶段:需求分析(分析用户要求)、概念结构设计(信息分析和定义)、逻辑结构设计(表结构设计)和物理结构设计(物理数据库设计),整个过程如图10-1所示。这种方法注重数据库的结构设计,而不太考虑数据库的行为设计。

数据库设计工具推荐(数据库设计)(1)

图10-1 新奥尔良方法设计过程

本教材将数据库设计分为以下阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护。

10.2 数据库设计

10.2.1 需求分析

1. 目的与任务

需求分析阶段的主要目的是回答“干什么”的问题。需要从多个方面对拟开发数据库应用系统的企事业单位进行调查,收集和分析各项应用对信息和处理两个方面的需求。通过与用户充分地交流和沟通,决定哪些工作应由计算机来做,哪些工作由手工来做,决定各类人员对信息和处理各类信息有什么要求,对操作界面和报表输出格式各有什么要求,对数据(信息)的安全性(保密性)和完整性各有什么要求,等等。需求分析阶段的主要工作就是,通过调查从用户处获得对数据库的下列需求:

(1)信息需求:用户将从数据库中获得的信息的内容和性质,对信息的要求、导出数据的要求,即确定在数据库中存储哪些数据。

(2)处理需求:用户要完成什么处理功能,对某种处理的执行频度、用户要求的响应时间,处理的方式是联机处理还是批处理等。

(3)安全性和完整性的约束。

2. 方法与步骤

需求分析的具体步骤如下:

(1)收集资料。

(2)分析整理。

(3)用户确认。

10.2.2 概念结构设计

1. 目的与任务

概念结构设计(以下简称概念设计)的目标是产生反映全体用户信息需求的整体数据库概念结构,即概念模型。概念模型独立于数据库逻辑结构,独立于具体的DBMS,而且无须考虑计算机软硬件技术细节,其主要作用是便于与用户进行交流。

2. 方法与步骤

描述概念模型的常用工具是实体—联系(Entity-Relationship,E-R)方法。它采用E-R图将现实世界的信息结构统一用实体、属性以及实体之间的联系来描述。概念结构设计的一般步骤如下:

(1)设计局部E-R图。

(2)集成为全局E-R图。在将局部E-R图集成为全局E-R模型时,一般分为两个步骤:

第一,合并局部E-R模型。在将局部E-R模型集成为全局E-R模型时,可以采用一次将所有的E-R模型集成在一起的方式,也可以采用逐步集成、进行累加的方式,即一次只集成少量几个E-R模型,这样实现起来比较容易。

第二,消除冲突。在将局部E-R图集成为全局E-R图时,可能存在以下三类冲突:

① 属性冲突。包括:

● 属性域冲突,即属性的类型、取值范围和取值集合不同。

● 属性取值单位冲突。

② 命名冲突。

③ 结构冲突。

(3)优化全局E-R图。

3. E-R图设计示例

(1)局部E-R图设计。

(2)集成为全局E-R图。

(3)优化全局E-R图。

10.2.3 逻辑结构设计

1. 目的与任务

逻辑结构设计(以下简称逻辑设计)的任务是把概念设计阶段产生的E-R图转换为具体DBMS支持的组织层数据模型,即转换为DBMS可以处理的数据库逻辑结构(数据库的模式和外模式),这些模式在功能、性能、完整性和一致性约束方面满足应用要求。下面讨论从概念模型向关系数据模型的转换。

关系数据库的逻辑结构设计一般包含三项工作:

(1)将E-R图转换为关系数据模型。

(2)对关系数据模型进行优化。

(3)设计面向用户的外模式。

2. 方法与步骤

将E-R图转换为关系模型实际上就是将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。

(1)E-R图向关系模式的转换。将E-R模型转换为关系模型实际上就是将实体、实体的属性和实体间的联系转换为关系模式,转换的一般规则如下:

① 一个实体转换为一个关系模式。实体的属性就是关系模式的属性,实体的标识属性(码)就是关系模式的主键。

② 对于实体间的联系有以下不同的情况:

A.一个1∶1联系通常是与任意一端实体对应的关系模式合并,并在该关系模式中加入另一个实体的码和联系本身的属性。

B.一个1∶n联系通常是与n端实体对应的关系模式合并,并在该关系模式中加入1端实体的码以及联系本身的属性。

C.一个mn联系需要转换为一个独立的关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,且关系模式的主键包含各实体的码。

D.3个及以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,而此关系模式的主键包含各实体的码。

E.具有相同主键的关系模式可以合并。

(2)数据模型优化。具体方法如下:

① 确定各属性间的函数依赖关系。根据需求分析阶段得出的语义,确定每个关系模式各属性之间的函数依赖以及不同关系模式中各属性之间的数据依赖关系。

② 对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。

③ 判断每个关系模式的范式,根据实际需要确定最合适的范式。

④ 根据需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行分解或合并。

⑤ 对关系模式进行必要的分解,以提高数据的操作效率和存储空间的利用率。常用的分解方法是水平分解和垂直分解。

(3)设计外模式。将概念模型转换为逻辑数据模型之后,还应该根据局部应用需求,并结合具体数据库管理系统的特点,设计用户的外模式。

外模式概念对应关系数据库的视图,设计外模式是为了更好地满足各类用户的信息需求。

定义数据库的模式主要是从系统的时间效率、空间效率、易维护等角度出发。由于外模式与模式是相对独立的,因此,在设计外模式时可以从满足每类用户的信息需求出发,同时考虑数据的安全和用户的操作方便。在定义外模式时应考虑如下问题:

①使用更符合用户习惯的名字。

②对不同级别的用户定义不同的视图,以保证数据的安全。

③ 简化用户对系统的使用。

10.2.4 物理结构设计

1. 目的与任务

物理结构设计(简称物理设计)的任务和目标是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

2. 方法与步骤

由于不同的数据库管理系统提供的硬件环境和存储结构、存取方法不同,提供给数据库设计者的系统参数以及变化范围不同,因此,物理结构设计一般没有一个通用的准则,它只能提供一个技术和方法供参考。

数据库的物理结构设计通常分为如下两个步骤:

(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。

(2)对物理结构进行评价,评价的重点是时间和空间效率。

如果评价结果满足原设计要求,则可以进入数据库实施阶段;否则,需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改关系模式。

(1)物理设计的内容和方法。

对于数据查询,需要得到如下信息:

● 查询所涉及的关系。

● 查询条件所涉及的属性。

● 连接条件所涉及的属性。

● 查询列表中涉及的属性。

对于更新数据的事务,需要得到如下信息:

● 更新所涉及的关系。

● 每个关系上的更新条件所涉及的属性。

● 更新操作所涉及的属性。

通常关系数据库的物理结构设计主要包括如下内容:

① 确定数据的存取方法。

② 确定数据的存储方式。常用的存储方式有如下3种:

● 顺序存储。顺序存储的平均查找次数为表中记录数的1/2。

● 散列存储。散列存储的平均查找次数由散列算法决定。

● 聚簇存储。为了提高某个属性(或属性组)的查询速度,可以把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块上,这样的存储方式称为聚簇存储。聚簇存储可以极大地提高对聚簇码的查询效率。

(2)物理设计的评价。具体可分为如下几类:

① 查询响应时间。查询响应时间是从查询开始到查询结果开始显示之间所经历的时间。一个好的应用程序设计可以减少CUP时间和I/O时间。

② 更新事务的开销。主要包括修改索引、重写物理块或文件以及写校验等方面的开销。

③ 生成报告的开销。主要包括索引、重组、排序和结果显示的开销。

④ 主存储空间的开销。包括程序和数据所占用的空间。对数据库设计者来说,一般可以对缓冲区做适当的控制,如缓冲区个数和大小。

⑤ 辅助存储空间的开销。辅助存储空间分为数据块和索引块两种,设计者可以控制索引块的大小、索引块的充满度等。

10.2.5 数据库实施

1. 目的与任务

数据库实施阶段的主要任务和目标就是在实际的计算机系统中建立数据库应用系统。它包括两项工作,一是结合特定的DBMS建立数据库,二是利用开发工具编写出相应的应用程序。总之,要在机器上得到一个满足设计要求、功能完善和操作便捷的数据库应用系统。

具体来讲,本阶段主要是运用DBMS提供的SQL语言及其宿主语言(如Java),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

2. 方法与步骤

数据库实施主要包括以下工作:定义数据库结构、组织数据入库 、开发与调试应用程序、数据库试运行。具体的实施步骤如下:

(1) 创建数据库。

(2) 开发与调试应用程序。

(3) 测试与评价。

10.2.6 运行维护

数据库投入运行标志着开发工作的基本完成和维护工作的开始,数据库只要存在一天,就需要不断地对它进行评价、调整和维护。

在数据库运行阶段,对数据库的经常性维护工作主要由数据库管理员完成,其主要工作包括如下几方面:

(1) 数据库的备份和恢复。

(2) 数据库的安全性和完整性控制。

(3) 监视、分析、调整数据库性能。

(4) 数据库的重组。

,