Home 数据库学习六 数据库设计
Post
Cancel

数据库学习六 数据库设计

数据库设计的策略

自顶向下与自底向上,常常两种方法综合使用

数据库设计的步骤

新奥尔良法是目前得到公认的,较完整、较权威的数据库设计方法,它把数据库设计分为四个主要阶段

  1. 用户需求分析。收集用户需求,确定系统边界
  2. 概念设计。描述概念模型较理想的是采用 E-R 方法
  3. 逻辑设计。E-R 图转换为关系模式,规范化
  4. 物理设计。逻辑模型在计算机中的具体实现方案

然后进行数据库实施阶段与数据库运行、维护阶段

需求分析阶段

需求分析是在项目确定之后,用户和设计人员对数据库系统所要涉及的内容 (数据) 和功能 (行为) 的整理和描述,是以用户的角度来认识系统。

这一过程是后续开发的基础,以后的逻辑设计物理设计以及应用程序的设计都会以此为依据

  • 需求分析阶段的工作

调查机构情况 → 熟悉业务活动 → 明确用户需求 → 确定系统边界 → 分析系统功能 → 分析系统数据 → 编写分析报告

  • 需求分析阶段的文档

需求调查所得到的数据可能是零碎的、局部的,分析师和设计人员必须进一步分析和表达用户的需求,建立需求说明文档数据字典数据流程图

E-R 模型

E-R (实体-联系) 模型是概念模型,用来描述现实世界的概念模型

实体

用矩形表示,矩形框内写明实体名

联系

用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁边标注上联系的类型 (1 : 1、1 : n、m : n)

<1> 两个不同实体之间的联系

  • 一对一 (1 : 1):指实体集 E1 中的一个实体最多只与实体集 E2 中的一个实体相联系
  • 一对多 (1 : n):表明实体集 E1 中的一个实体可与实体集 E2 中的多个实体相联系
  • 多对多 (m : n):表明实体集 E1 中的多个实体可与实体集 E2 中的多个实体相联系

<2> 两个以上不同实体集之间的联系

两个以上不同实体集之间存在 1 : 1 : 1、1 : 1 : n、1 : m : n 和 r : n : m 的联系

<3> 同一实体集内的二元联系

同一实体集内的各实体之间也存在 1 : 1、1 : n 和 m : n 的联系

属性

属性是实体某方面的特性,用椭圆表示,椭圆框内写明属性名 (主属性的属性名用下划线标记),并用无向边与有关实体连接起来

每个属性都有其取值范围。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值

E-R 模型中的属性有以下分类

  1. 简单属性和复合属性

简单属性是原子的、不可再分的。复合属性可以细分为更小的部分 (即划分为别的属性)

若不特别声明,通常指的是简单属性

  1. 单值属性和多值属性

单值属性是定义的属性对于一个特定的实体都只有单独的一个值

多值属性是定义的属性对于一个特定的实体有多个值

  1. NULL 属性

当实体在某个属性上没有值或者属性值未知时,使用 NULL 值,表示无意义或不知道

  1. 派生属性

派生属性可以从其他属性得来

例如职工有 入职时间工作时长 属性,则 工作时长 可以由当前时间与 入职时间 之差获得,这里 工作时长 就是一个派生属性

弱实体

在现实世界中有一种特殊的联系,这种联系代表实体间的所有关系。例如,职工与家属的联系,家属总是属于某职工的。这种实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,将这类实体称为弱实体

在 E-R 图中,弱实体使用双线矩形框表示

超类和子类实体

例如职员实体是飞行员、机械师和管理员实体的超类 (父类),超类和子类之间具有继承关系

子类实体矩形两边有竖线,超类与子类的连线中有圆圈

概念结构设计阶段

用 E-R 方法建立概念模型

对需求分析阶段所得到的数据进行分类、聚集和概括,确定实体属性联系。概念结构的具体工作步骤包括选择局部应用、逐一设计分 E-R 图和 E-R 图合并

需求分析阶段 → 抽象数据 → 设计局部视图 → 合并取消冲突 → 修改重构消除冗余 → 逻辑结构设计阶段

选择局部应用

选择适当层次的数据流图,让这一层的每一部分对应一个局部应用,实现某一项功能

逐一设计分 E-R 图

划分好各个局部应用之后,就要对每一个局部应用逐一设计分 E-R 图,又称为局部 E-R 图

E-R 图合并

根据局部应用设计好各局部 E-R 图之后,就可以对各分 E-R 图进行合并,合并的目的在于在合并过程中解决分 E-R 图中相互间存在的冲突。最终构成一张全局 E-R 图

分 E-R 图之间的冲突主要有以下三类:

  1. 属性冲突

同一属性可能会存在于不同的分 E-R 图,由于设计人员不同或者出发点不同,对属性的类型、取值范围和数据单位等可能会不一致,这些属性对应的数据将来只能以一种形式在计算机中存储,这就需要在设计阶段进行统一

  1. 命名冲突

相同的意义在不同分 E-R 图上有着不同的命名,或是名称相同的属性在不同的分 E-R 图中代表着不同的意义,这些也要进行统一

  1. 结构冲突

同一实体在不同的分 E-R 图中有不同的属性,同一对象在某一分 E-R 图中被抽象为实体,而在另一分 E-R 图中又被抽象为属性,需要统一

逻辑结构设计阶段

逻辑结构设计是在概念结构设计的基础上进行数据模型设计,可以是层次模型、网状模型和关系模型,本节介绍如何在全局 E-R 图基础上进行关系模型的逻辑结构设计。逻辑结构设计阶段的主要工作步骤包括确定数据模型、将 E-R 图转换成为指定的数据模型、确定完整性约束 (实体完整性,参照完整性和用户自定义完整性) 和确定用户视图

概念设计阶段 → 转换为数据模型 → 关系规范化 → 模式优化 → 设计用户子模式 → 物理设计阶段

E-R 图关系模式的转换

E-R 方法所得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为适合关系数据库系统的处理,必须将 E-R 图转换成关系模式。E-R 图是由实体、属性和联系三要素构成,而关系模式中只有唯一的结构 — 关系模式,通常采用以下方法加以转换

一、实体向关系模式的转换

将 E-R 图中的实体逐一转换成为一个关系模式,实体名对应关系模式的名称,实体的属性转换成关系模式的属性,实体标识符就是关系的吗 (键)

二、联系向关系模式的转换

  1. 一对一联系的转换

一种方式是将联系归并到并联的两个实体的任一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体,码保持不变

另一种方式 (一般不用) 是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任一方实体的码

  1. 一对多联系的转换

一种方式是将联系归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性即可,归并后的多方实体码保持不变

另一种方式 (一般不用) 是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码

  1. 多对多联系的转换

多对多联系只能转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组

  1. 多对多对多联系的转换

与第三个大致相同

  1. 超类和子类的转换

超类、子类实体都可转换为一个关系,并将超类实体的主码加到子类实体中

关系模式的规范化

  1. 根据语义确定各关系模式的数据依赖
  2. 根据数据依赖确定关系模式的范式
  3. 如果关系模式不符合要求,要根据关系模式的分解算法对其进行分解,达到 3NF、BCNF 或 4NF
  4. 关系模式的评价及修正

物理设计阶段

逻辑设计阶段 → 确定数据库的物理模式 → 评价数据库的物理模式 → 数据库实施阶段

数据库的实施与维护

物理结构设计阶段 → 定义数据库 → 数据装入与编写应用程序 → 数据库试运行 → 数据库运行维护阶段

This post is licensed under CC BY 4.0 by the author.

数据库学习五 范式

数据库学习七 数据库的控制功能