暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第七章 数据库设计(1)——数据库设计概述

凯哥的故事 2020-05-29
805



本章讨论数据库设计的技术和方法。主要讨论基于关系数据库管理系统的关系数据库设计问题。



数据库设计概述



在数据库领域内,通常把使用数据库的各类信息系统都称为数据库应用系统。例如,以数据库为基础的各种管理信息系统、办公自动化系统、地理信息系统、电子政务系统、电子商务系统等。

数据库设计,广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库,这是数据库应用系统设计的一部分。本书的重点是讲解狭义的数据库设计。当然,设计一个好的数据库与设计一个好的数据库应用系统是密不可分的,一个好的数据库结构是应用系统的基础,特别在实际的系统开发项目中两者更是密切相关、并行进行的。

下面给出数据库设计(database design)的一般定义。

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。

数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。高效的运行环境指数据库数据的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。

数据库设计的特点

大型数据库的设计和开发是一项庞大的工程,是涉及多学科的综合性技术。数据库建设是指数据库应用系统从设计、实施到运行与维护的全过程。数据库建设和一般的软件系统的设计、开发和运行与维护有许多相同之处,更有其自身的一些特点。

①数据库建设的基本规律

三分技术,七分管理,十二分基础数据”是数据库设计的特点之一。

在数据库建设中不仅涉及技术,还涉及管理。要建设好一个数据库应用系统,开发技术固然重要,但是相比之下管理更加重要。这里的管理不仅仅包括数据库建设作为一个大型的工程项目本身的项目管理,还包括该企业(即应用部门)的业务管理。

企业的业务管理更加复杂,也更重要,对数据库结构的设计有直接影响。这是因为数据库结构(即数据库模式)是对企业中业务部门数据以及各业务部门之间数据联系的描述和抽象。业务部门数据以及各业务部门之间数据的联系是和各部门的职能、整个企业的管理模式密切相关的。

人们在数据库建设的长期实践中深刻认识到,一个企业数据库建设的过程是企业管理模式的改革和提高的过程。只有把企业的管理创新做好,才能实现技术创新并建设好一个数据库应用系统。

“十二分基础数据”则强调了数据的收集、整理、组织和不断更新是数据库建设中的重要环节。人们往往忽视基础数据在数据库建设中的地位和作用。基础数据的收集、入库是数据库建立初期工作量最大、最烦琐,也最细致的工作。在以后数据库的运行过程中更需要不断地把新数据加到数据库中,把历史数据加入数据仓库中,以便进行分析挖掘,改进业务管理,提高企业竞争力。

②结构(数据)设计和行为(处理)设计相结合

数据库设计应该和应用系统设计相结合。也就是说,整个设计过程中要把数据库结构设计和对数据的处理设计密切结合起来。这是数据库设计的特点之二。

在早期的数据库应用系统开发过程中,常常把数据库设计和应用系统的设计分离开来,如下图所示。由于数据库设计有其专门的技术和理论,因此需要专门来讲解数据库设计。但这并不等于数据库设计和在数据库之上开发应用系统是相互分离的,相反,必须强调设计过程中数据库设计和应用系统设计的密切结合,并把它作为数据库设计的重要特点。

传统的软件工程忽视对应用中数据语义的分析和抽象。例如,结构化设计(Structure Design,SD)方法和逐步求精的方法着重于处理过程的特性,只要有可能就尽量推迟数据结构设计的决策。这种方法对于数据库应用系统的设计显然是不妥的。

早期的数据库设计致力于数据模型和数据库建模方法的研究,着重结构特性的设计而忽视了行为设计对结构设计的影响,这种方法也是不完善的。

我们则强调在数据库设计中要把结构特性和行为特性结合起来。

数据库设计方法

大型数据库设计是涉及多学科的综合性技术,又是一项庞大的工程项目。它要求从事数据库设计的专业人员具备多方面的知识和技术。主要包括:

  • 计算机的基础知识;

  • 软件工程的原理和方法;

  • 程序设计的方法和技巧;

  • 数据库的基本知识;

  • 数据库设计技术;

  • 应用领域的知识。

这样才能设计出符合具体领域要求的数据库及其应用系统。

早期数据库设计主要采用手工与经验相结合的方法,设计质量往往与设计人员的经验和水平有直接的关系。数据库设计是一种技艺,缺乏科学理论和工程方法的支持,设计质量难以保证。常常是数据库运行一段时间后又不同程度地发现各种问题,需要进行修改甚至重新设计,增加了系统维护的代价。

为此,人们努力探索,提出了各种数据库设计方法。例如,新奥尔良(New Orleans)方法、基于E-R模型的设计方法、3NF(第三范式)的设计方法、面向对象的数据库设计方法、统一建模语言(Unified Model Language, UML)方法等。

数据库工作者一直在研究和开发数据库设计工具。经过多年的努力,数据库设计工具已经实用化和产品化。这些工具软件可以辅助设计人员完成数据库设计过程中的很多任务,已经普遍地用于大型数据库设计之中。

数据库设计的基本步骤

按照结构化系统设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段(如下图所示):

  • 需求分析;

  • 概念结构设计;

  • 逻辑结构设计;

  • 物理结构设计;

  • 数据库实施;

  • 数据库运行和维护。

在数据库设计过程中,需求分析和概念结构设计可以独立于任何数据库管理系统进行,逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关。

数据库设计开始之前,首先必须选定参加设计的人员,包括系统分析人员、数据库设计人员、应用开发人员、数据库管理员和用户代表。系统分析和数据库设计人员是数据库设计的核心人员,将自始至终参与数据库设计,其水平决定了数据库系统的质量。用户和数据库管理员在数据库设计中也是举足轻重的,主要参加需求分析与数据库的运行和维护,其积极参与(不仅仅是配合)不但能加速数据库设计,而且也是决定数据库设计质量的重要因素。应用开发人员(包括程序员和操作员)分别负责编制程序和准备软硬件环境,他们在系统实施阶段参与进来。

如果所设计的数据库应用系统比较复杂,还应该考虑是否需要使用数据库设计工具以及选用何种工具,以提高数据库设计质量并减少设计工作量。

①需求分析阶段

进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难和最耗费时间的一步。作为“地基”的需求分析是否做得充分与准确,决定了在其上构建数据库“大厦”的速度与质量。需求分析做得不好,可能会导致整个数据库设计返工重做。

②概念结构设计阶段

概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。

③逻辑结构设计阶段

逻辑结构设计是将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。

④物理结构设计阶段

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

⑤数据库实施阶段

在数据库实施阶段,设计人员运用数据库管理系统提供的数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行试运行。

⑥数据库运行和维护阶段

数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评估、调整与修改。

设计一个完善的数据库应用系统是不可能一蹴而就的,它往往是上述6个阶段的不断反复。

需要指出的是,这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。事实上,如果不了解应用环境对数据的处理要求,或没有考虑如何去实现这些处理要求,是不可能设计一个良好的数据库结构的。有关处理特性的设计描述,包括设计原理、采用的设计方法及工具等在软件工程和信息系统设计的课程中有详细介绍,这里不再讨论。下图概括地给出了设计过程各个阶段关于数据特性的设计描述。

数据库设计过程中的各级模式

按照上面的设计过程,数据库设计的不同阶段形成数据库的各级模式,如下图所示。

在需求分析阶段综合各个用户的应用需求;在概念结构设计阶段形成独立于机器特点、独立于各个关系数据库管理系统产品的概念模式,在本篇中就是E-R图;在逻辑结构设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式;在物理结构设计阶段,根据关系数据库管理系统的特点和处理的需要进行物理存储安排,建立索引,形成数据库内模式。

下面就以上面第二个图的设计过程为主线,讨论数据库设计各阶段的设计内容、设计方法和
工具。


文章转载自凯哥的故事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论