数据库系统原理之数据库设计

数据库设计

一、数据库设计概述

数据库的生命周期

从数据库演变过程的角度来看,数据库的生命周期可分为两个阶段:

  • 数据库分析与设计阶段
    • 需求分析
    • 概念设计
    • 逻辑设计
    • 物理设计
  • 数据库实现与操作阶段
    • 数据库的实现
    • 操作与监督
    • 修改与调整

数据库设计的目标

  • 满足应用功能需求:主要是指用户当前与可预知的将来应用所需要的数据及其联系,应全部准确地存储在数据库之中,从而可满足用户应用中所需求的对数据进行的存、取、删、改等操作。
  • 良好的数据库性能:主要是指对数据的高效率存取和空间的节省,并具有良好的数据共享性、完整性、一致性及安全保密性。

数据库设计的内容

  • 数据库结构设计
    • 针对给定的应用环境进行数据库的模式或子模式的设计,包括数据库的概念结构设计、逻辑结构设计和物理结构设计
    • 模式定义并给出各应用程序共享的结构,是静态的,一经形成通常不会改变
  • 数据库行为设计
    • 确定数据库用户的行为和动作,而用户的行为和动作是对数据库的操作,它们通常是通过应用程序来实现的
    • 由于用户的行为会使数据库的内容发生变化,所以行为设计是动态的

数据设计的方法

  • 直观设计法
    • 一类最原始的数据库设计方法,它利用设计者的经验和技巧来设计数据库模式
    • 由于缺乏科学理论的指导,设计的质量很难保证,因此这种方法已不适应如今信息系统的开发
  • 规范设计法
    • 一类较为普遍、常用的数据库设计方法
    • 新奥尔良(New Orleans)设计方法
      • 1978年提出,是目前公认的较为完整和权威的一种规范设计方法
      • 将数据库设计分为四个阶段,分别是需求分析、概念结构设计、逻辑结构设计和物理结构设计,它注重数据库的结构设计、而不太考虑数据库的行为设计
    • 基于E-R模型的数据库设计方法
      • P.P.SChen于1976年提出的
      • 基本思想是在需求分析的基础上用E-R图构造一个反映现实世界实体之间联系的企业模式,然后将此模式转换成某一特定DBMS下的概念模式
    • 基于第三范式的设计方法
      • 一类结构化设计方法
      • 其思想是在需求分析的基础上首先确定数据库的模式、属性及属性间的依赖关系,然后将它们组织在一个单一的关系模式中,再分析模式中不符合第三范式的约束条件,进行模式分解,规范成若干个第三范式关系模式的集合
  • 计算机辅助设计法
    • 在数据库设计过程中,以领域专家的知识或经验为主导,模拟某一规范化设计的方法,通常通过人机交互的方式来完成设计的某些过程
    • 目前,许多计算机辅助软件工程工具(俗称CASE工具),可以用来帮助数据库设计人员完成数据库设计的一些工作,如此可减轻数据库设计人员的工作量,加快数据库设计的进度,例如Rational公司的Rational Rose等

数据库设计的过程

  • 需求分析阶段
  • 结构设计阶段
    • 概念结构设计
    • 逻辑结构设计
    • 物理结构设计
  • 行为设计阶段
    • 功能设计
    • 事务设计
    • 程序设计
  • 数据库实施阶段
    • 加载数据库数据
    • 调试运行应用程序
  • 数据库运行和维护阶段

数据库设计过程实际上是一个反复修改、反复设计的迭代过程

二、数据库设计的基本步骤

1 需求分析

  • 需求分析的目标是了解与分析用户的信息及应用处理的要求,并将结果按一定格式整理而形成需求分析报告。
  • 数据库设计人员进行需求分析的基本方法是听取数据库应用部门工作人员的报告,并与之座谈。同时,需求分析人员可提交一份需求调查表,该表内容主要包括调查的内容和要求提供资料的格式,应用部门的业务人员则可根据该表进行准备和提交材料。此外,数据库设计人员还需查阅原始资料,以及跟班作业等。
  1. 确定数据库范围

  2. 应用过程分析

  3. 收集与分析数据

    1. 静态结构
      1. 数据分类表:用于数据的总体描述
      2. 数据元素表:通常意义下的数据项或属性
    2. 动态结构:概念设计和物理设计的重要依据
      1. 任务分类表
      2. 数据操纵特征表
    3. 数据约束
      1. 数据的安全保密性
      2. 数据的完整性
      3. 响应时间
      4. 数据恢复
  4. 编写需求分析报告

    1. 实际上,需求分析报告是在需求分析的过程中逐渐整理而形成的,是随着该过程的不断深入而反复修改与完善的。
    2. 需求分析报告通常包含如下内容
      1. 数据库的应用功能目标(功能、性能)
      2. 标明不同用户视图范围(权限、用户、角色)
      3. 应用处理过程需求说明
        1. 数据流程图
        2. 任务分类表
        3. 数据操纵特征表
        4. 操作过程说明书
      4. 数据字典
        1. 数据字典(Data Dictionary, DD)是数据库系统中存储三级结构定义的数据库,通常指的是数据库系统中各类数据详细描述的集合。
        2. 功能是存储和检索各种数据描述,即元数据(Metadata)
        3. 通常包括数据分类表、数据元素表和各类原始资料
      5. 数据量
      6. 数据约束

2 概念结构设计

  • 概念结构设计的任务是在需求分析中产生的需求分析报告的基础上,按照特定的方法设计满足应用需求的用户信息结构,该信息结构通常称为概念模型。
  • 概念模型独立于任何软件与硬件,其设计的主要目标是最大限度地满足应用需求,可完全不顾及具体的硬件和软件的限制,特别是DBMS的限制,因而它是一个符合用户要求的趋于理想化的信息结构。
  • 概念结构设计的常用方法有实体分析法和属性综合法两种,它们也分别称为自顶向下法和自底向上法。

3 逻辑结构设计

逻辑结构设计的目标是讲概念模型转换为等价的、并为特定DBMS所支持数据模型的结构。数据库逻辑模型一般由层次、网状、关系数据模型表示。

  • 逻辑结构设计的输入与输出信息
    • 输入信息
      • 独立于特定DBMS的概念模型
      • 有关响应时间、安全保密性、数据完整性及恢复方面的要求说明,包括保持数据一致性的规则说明
      • 数据量及使用频率
      • 特定DBMS特性,包括DBMS支持的数据模型及数据定义语言的说明
    • 输出信息
      • 一个特定DBMS支持的概念模型,或称之为模型
      • 一个或多个外部视图,或称之为子模式
      • 物理设计说明,其主要包括存入数据库中的数据量、使用频率及响应时间要求
      • 程序设计说明,其是在需求分析的基础上,根据已完成的逻辑模型,编制各程序名、执行逻辑步、存取数据的名、顺序及操作特征(读、写、删、改)的说明
  • 逻辑结构设计的步骤
start=>start: 概念设计
operation1=>operation: 模型转换
operation2=>operation: 子模式设计(左)
operation3=>operation: 应用程序设计说明(右)
operation4=>operation: 设计评价
end=>end: 物理设计
start->operation1->operation2->operation3->operation4->end


其中:

  1. 模型转换是指将概念模型等价地转换为特定DBMS支持的关系模型、网状模型或层次模型。对于一个特定的应用环境,通常只转换为用户要求的某个特定DBMS所支持的一种模型表示。
  2. 子模式设计的目标是抽取或导出模式的子集,以构造不同用户使用的局部数据逻辑结构。具体的规则在DBMS的使用指南中通常会有明确的说明。
  3. 编制应用程序设计说明的目的是为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础。
  4. 设计评价的任务是分析并检验模型及子模式的正确性与合理性,其方法是通过程序设计指南中提交的程序执行逻辑步骤在子模式上的模拟执行来考核模型及子模式是否满足应用需求,有无遗漏,并进一步估计数据容量及存取效率,为物理设计提供参考信息。评价分析中,如若发现不合理之处,则返回到模型转换处重新执行,如此反复,直至满足要求为止。

4 物理设计

  • 物理设计是指对于一个给定的数据库逻辑结构,研究并构造物理结构的过程,其具体任务主要是确定数据库在存储设备上的存储结构及存取方法,因DBMS的不同还可能包括建立索引和聚集,以及物理块大小、缓冲区个数和大小、数据压缩的选择等。

5 数据库实施

  • 加载数据
    • 数据的收集(人工)
    • 分类(人工)
    • 整理(人工)
    • 校验(程序)
    • 输入(程序)
  • 应用程序设计
  • 数据库试运行

6 数据库运行和维护

  • 数据库系统投入实际运行标志着数据库设计和应用开发的基本完成,但绝不意味着设计和应用开发工作的终止。
  • 系统维护中最困难的工作是数据库重组与重构
  • 重组是当空间利用率和存取效率下降时进行的,它并不改变数据库的逻辑结构和物理结构,只是利用DBMS提供的设施调整数据库中数据的存储位置,从而回收“碎片”,使有关联的数据尽可能靠近存放,达到提高空间利用率和数据存取效率的目的。
  • 重构是指部分修改数据库的逻辑结构或物理结构,这往往因应用需求的改变与拓展或发现当初的设计欠妥而引起的,例如增、删、改数据类型,增、删、改索引和聚集等。

三、关系数据库设计方法

关系数据库是一类采用关系模型作为逻辑数据模型的数据库系统,它的设计过程遵从数据库设计的基本步骤,即同样包含需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护等这样一些阶段,其中关系数据库的概念结构设计与逻辑结构设计是关系数据库整个设计过程的关键。

1 关系数据库设计过程与各级模式

2 概念结构设计方法

  • E-R图的表示方法
    • 实体型,其用矩形表示,矩形框内写明实体的名称
    • 属性,其用椭圆形表示,并用无向边将其与相应的实体连接起来
    • 联系,其用菱形表示,菱形框内写明联系的名称,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、 1:N、 M:N),如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。

实体之间的联系:

(1)两个实体型之间的联系

  1. 一对一联系(1:1)
  2. 一对多联系(1:N)
  3. 多对多联系(M:N)

一对一联系是一对多联系的特例,一对多联系是多对多联系的特例

(2)两个以上的实体型之间的联系

(3)单个实体型内的联系

  • 局部信息结构设计
    • 确定局部范围
    • 选择实体
      • 数据分类表是选择实体的直接依据
      • 在同一局部信息结构中的实体名称应具有唯一性
    • 选择实体的关键字属性
    • 确定实体间的联系
    • 确定实体的属性
      • 标识属性:实体的关键字
      • 说明属性:描述实体的一般特征 (单值的)
  • 全局信息结构设计
    • 各局部E-R图之间的冲突
      • 属性冲突
        • 属性域冲突,即属性值的类型、取值范围、取值集合的不同
        • 属性取值单位冲突
      • 命名冲突
        • 同名异义
        • 异名同义
      • 结构冲突
        • 同一对象在一个局部E-R图中作为实体,而在另一局部E-R图中作为属性
        • 同一实体在不同的E-R图中属性个数和类型不同
        • 实体之间的联系在不同的E-R图中是不同的类型
    • 一个好的全局E-R模型除能反映用户功能需求之外,还应满足下列条件:
      • 实体类型个数尽可能少
      • 实体类型所含属性尽可能少
      • 实体类型间联系无冗余

3 逻辑结构设计方法

  • E-R图向关系模型的转换
    • 一个实体型转换为一个关系模式。实体的属性作为关系的属性,实体的码作为关系的码
    • 一个一对一(1:1)联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
    • 一个一对多(1:N)联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并
    • 一个多对多(M:N)联系转换为一个关系模式
    • 三个或三个以上实体间的一个多元联系可以转换为一个关系模式
    • 具有相同码的关系模式可合并
  • 数据模型的优化(方法)
    • 确定各属性间的函数依赖关系
    • 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
    • 判断每个关系模式的范式,根据实际需要确定最合适的范式
    • 按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行合并或分解
    • 对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率
  • 设计用户子模式
    • 可以通过视图机制在设计用户视图时,重新定义某些属性的别名,使其更符合用户的习惯,以方便使用
    • 可以对不同级别的用户定义不同的视图,以保证系统的安全性
    • 简化用户的对系统的使用

4 物理设计方法

物理设计的任务主要是通过对关系建立索引和聚集来实现与应用相关数据的逻辑连接和物理聚集,以改善对数据库的存取效率

  • 建立索引
    • 静态 (用户较多且使用周期相对较长的数据)
    • 动态 (单独用户或临时性使用)
  • 建立聚集
    • 聚集是将相关数据集中存放的物理存储技术,借以提高I/O的数据命中率而改善存取速度,其功能由具体的DBMS所提供,如MySQL。
    • 集中存放时指将相关数据尽可能地存放于一个物理块中,或一个磁道中,或一个柱面中,或相邻区域(块、磁道、柱面)中。
    • 数据聚集结构的一种有效方式是块结构方式,块与块之间由指针连接,一个块对应于一个物理分区。
    • 数据聚集可在一个或多个关系式建立。
posted @ 2023-03-24 09:25  寻月隐君  阅读(214)  评论(0编辑  收藏  举报