4.1 数据库设计概述
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
4.1.1 数据库设计的内容
数据库设计的内容是:在对环境进行需求分析的基础上,进行满足要求及符合语义的逻辑设计,进行具有合理的存储结构的物理设计,实现数据库的运行等。
数据库设计往往取决于设计者的知识和经验,对同一环境,采用同一个DBMS,由不同设计者设计的数据库的性能可能相差很大。
系统设计人员在数据库设计时,都希望能达到下列目标:满足用户要求;得到现有的某个DBMS产品的支持;效率较高,且易于维护、扩充等。
但由于设计人员与用户在具体的计算机知识与业务知识之间缺乏共同语言,对开发的系统中数据库的功能及需求缺乏明确规定,以及技术上还没有一个完善的设计方法,因此,给数据库设计造成很大的困难。
4.1.2 数据库设计的步骤
按照规范化设计的方法,考虑数据库及其应用系统开发的全过程,将数据库的设计分为以下6个设计阶段:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护。每个阶段具体描述如下。
1.需求分析阶段
进行数据库设计首先必须准确了解和分析用户的需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难、最耗时间的一步。需求分析做得是否充分与准确,决定了在其上构建数据库的速度与质量。需求分析做得不好,可能会导致整个数据库设计返工重做。
2.概念结构设计阶段
概念结构设计是整个数据库设计的关键,它通过对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
3.逻辑结构设计阶段
逻辑结构设计是指将概念模型转换成某个DBMS所支持的数据模型,并对其进行优化。
4.数据库物理设计阶段
数据库物理设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5.数据库实施阶段
在数据库实施阶段,设计人员运用DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果创建数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6.数据库运行与维护阶段
数据库运行与维护是指对数据库应用系统正式投入运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
在数据库设计中,前两个阶段是面向用户的应用需求,面向具体的问题,中间两个阶段是面向数据库管理系统,最后两个阶段是面向具体的实现方法。前四个阶段可统称为“分析和设计阶段”,后两个阶段统称为“实现和运行阶段”。
设计一个完善的数据库应用系统是不可能一蹴而就的,它往往是上述六个阶段的不断反复。需要指出的是,这个设计步骤既是数据库设计过程,也是数据库应用系统的设计过程。在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。事实上,如果不了解应用环境对数据的处理要求,或没有考虑如何去实现这些处理要求,是不可能设计一个良好的数据库结构的。
按照这样的设计过程,数据库结构设计的不同阶段形成数据库的各级模式,如图4-1所示。
图4-1 数据库设计过程与数据库各级模式
需求分析阶段综合各个用户的应用需求;概念设计阶段形成独立于机器特点的各个DBMS产品的概念模式,就是本书中介绍的E-R图;在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型(如关系模型),形成数据库逻辑模式;然后根据用户处理要求、安全性的考虑,在基本表的基础上再建立必要的视图,形成数据库的外模式;在物理设计阶段,根据DBMS的特点和处理的需要,进行物理存储安排,创建索引,形成数据库的内模式。
一般而言,数据库设计更侧重于数据建模,而程序设计更侧重于业务建模。在真实的软件开发环境中,数据建模与业务建模两者是相辅相成的,不可或缺。在关系数据库数据建模时,数据库的开发人员经常使用ERwin、PowerDesigner、Rational Rose及Visio等CASE工具创建E-R图,然后使用ERwin、PowerDesigner及Visio等工具直接创建数据库或者直接生成SQL脚本文件。