ER模式数据库设计
数据库设计过程概览
需求分析

使用数据流图和数据字典描述
- 数据留图(DFD): 用来表示收集到的各业务流程中涉及到的数据和处理过程的关系

- 数据字典(DD): 对数据库中数据的描述信息的集合
- 作用:
- 满足DBMS快速查询有关对象的要求
- 供管理员掌握整个系统的运行情况
- 内容:
- 数据库系统所有对象及其属性的描述信息
- 数据库系统对象之间关系的描述信息
- 登记所有对象, 属性的自然语言含义
- 记录数据字典变化的历史
- 与DBMS的关系
- 结合式数据字典: DBMS和数据字典软件包融合在一起
- 独立式数据字典: 数据字典作为独立的软件包存在
- 数据字典的访问:
- 与人的接口: 通过DBMS提供的数据字典访问工具实现对系统数据的访问
- 与软件的接口: 通过DBMS的应用程序接口实现对数据字典信息的访问和处理
- 作用:
数据字典
数据字典包括
- 数据向
- 数据结构
若干数据项有意义的集合
描述={数据结构名, 含义说明, 组成: {数据项或数据结构}}
eg:
数据结构: 采购细节
说明: 作为采购计划的组成部分, 说明对某个产品要采购哪些零件, 哪种零件采购多少数量
组成: 零件号, 零件名, 数量- 数据流
表示加工处理过程的输入或输出数据
数据流描述={数据流名, 说明, 数据流来源, 数据流去向, 组成: {数据结构}, 平均流量, 高峰期流量}
eg
数据流名:采购计划
说明:由各产品所需零件数, 选定的供应商, 审核情况组成采购零配件计划。
来源:确定采购计划
去向:编制订货单
数据结构:
-- 采购细节
-- 采购审核- 数据存储
处理过程中要存取的数据
描述={数据存储名, 说明, 编号, 流入的数据流, 流出的数据流, 组成:{数据结构}, 数据量, 存取方式}
eg
数据存储名:产品
说明:对每种产品的品名、规格的描述, 并对每种产品做成本预算。在核对生产计划书的成本时用。
输出数据流:预算组成:产品号、产品名、预算
数据量:每月 30—40 件
存取方式:随机存取- 处理过程
对加工处理过程的描述
处理过程描述={处理过程名, 说明, 编号, 输入: {数据流}, 输出: {数据流}, 处理: {简要说明}}
eg
处理过程:确定采购计划
说明:对要采购的每一零件, 根据零件库存量确定采购数量, 再根据每位供应商的报价选择适当的供应商, 制定采购计划。
输入:供应商报价、零件库存、已批准生产计划
输出:采购计划
简要说明:( 1 )对应采购的每种零件查找供应商报价表, 选择报价最低的供应商号概念结构设计
概念结构
- 主要特点
- 能反映现实, 满足处理要求
- 易于理解
- 易于更改
- 易于数据模型转换
- 概念结构设计任务
- 将用户需求抽象为概念模型(E-R图)
概念结构设计的方法
- 自顶向下
- 自底向上
- 逐步扩张
- 混合策略

自底向上
根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象, 设计各个局部视图, 即分 E-R 图
步骤:
- 选择局部应用: 可利用机构职能关系进行局部处理
- 逐一设计分E-R图
需要注意实体与属性的划分原则:
- 属性应该是系统中最小的信息单位, 不再具有描述性质
- 属性不能与其他实体有联系
设计选择
避免两个主要陷阱:
- 冗余
- 不完整性
实体-联系模型
基本概念
实体
现实世界中可区别于其他对象的一个事务或者对象
eg: 学生、课程、教师
实体集
一组共享相同性质或属性的, 具有相同类型的实体的集合
eg: 所有人员, 公司, 树木的集合
属性
实体集中每个成员所拥有的描述性性质, 实体通过一组属性来表示
eg: 老师=(身份证, 姓名, 薪水)
属性子集构成实体集的逐渐, 唯一标识集合的每个成员
联系(关系, ralationship)
多个实体相互关联
联系集
相同类型联系的集合, 是
其中,
联系集的描述性属性
联系也可以具有描述性属性.
eg: 选课联系可以有成绩属性
实体角色
实体在联系中扮演的功能.
参与一个联系集的实体集通常是互异的, 因此角色是隐含且不制定的. 但同一实体集可以以不同的角色多次参与一个联系集(递归联系集).
eg: 课程集的前置课程联系集
数据抽象
- 聚集: 定义了某一类型的组成成分, 它抽象了对象内部类型和成分之间的"is part of"的语义
- 概括(概化, 继承): 定义类型之间的一种子集联系, 它抽象了类型之间的"is subset of"的语义
联系集的度
参与联系集的实体集数量.
数据库系统中的大多数联系集都是二元联系集
复杂属性
- 属性类型:
- 简单和复合属性
- 简单属性: 不能再分解的属性
- 复合属性: 可以分解为更小的子属性的属性
- 单值和多值属性
- 单值属性: 每个实体只能有一个属性值
- 多值属性: 每个实体可以有多个属性值
- 简单和复合属性
- 值域: 每个属性的允许值集
- 派生属性: 可以从其他属性值计算或推导出来的属性(如年龄)

- 单值属性: 用椭圆表示
- 多值属性: 用双椭圆表示
- 派生属性: 用虚线椭圆表示
- 复合属性: 包含其他属性的属性, 用椭圆表示, 其子属性用线连接到复合属性上
映射基数与弱实体集
映射基数
表示可以通过关系及与另一个实体关联的实体数
类型:
- 一对一(1:1)
- 一对多(1:N)
- 多对一(N:1)
- 多对多(M:N)
在ER图中表示


实体集
码: 实体集或联系集的一组属性, 包括超码, 候选码, 主码
弱实体集: 没有主键的实体集, 必须以另一个实体或多个实体的存在为前提的实体, 用双线矩阵表示


从实体集中删除冗余属性

逻辑结构设计: 将E-R图转换为关系模式
步骤
- 将概念结构转换为关系模型
- 优化模型
- 设计适合DBMS的子模式
转换的一般原则
- 一个实体型转换为一个关系模式
- 一个1:1联系可转换为一个独立的关系模式, 也可与任一端对应的关系模式合并
- 一个1:N联系可转换为一个独立的关系模式, 也可与N端对应的关系模式合并
- 一个M:N联系转换为一个关系模式
- 三个或三个以上实体间的多元联系可转换为一个关系模式
- 相同码的关系模式可合并
转换

- 标注联系的映射基数

- 合并各个局部E-R图, 生成初步E-R图
合并的过程实际上是一个发现冲突和解决冲突的过程
- 属性冲突: 属性值类型, 取值范围等发生冲突
- 命名冲突
- 结构冲突
- 同一对象在不同视图中有不同抽象
- 同一实体在不同视图中属性组成不同
- 相同实体间联系在不同视图中呈现不同类型
- 消除不必要的冗余, 设计基本E-R图
- 冗余的数据: 可由基本数据导出的数据
- 冗余的联系: 可由其他联系导出的联系
有些冗余可能是为了提高效率, 可以保留
- 码原则
- 一个实体型转换为一个关系模式: 实体的属性就是关系的属性, 实体的码就是关系的码
- 一个联系转换为一个关系模式: 与该联系相连的各实体的码以及联系的属性转换为该关系的属性
- 1:1联系: 每个实体的码均是该关系的候选码
- 1:N联系: 关系的码是N端实体的码
- M:N联系: 关系的码是参加联系的诸实体的码的集合
- 若联系是三个或三个以上的实体的一个多元联系, 与该多元联系相连的各实体的码以及联系本身的属性均转换为一个关系模式, 而关系的码是各实体码的组合
- 具有相同码的关系模式可以合并
E-R模型设计
概念设计任务
根据需求分析规格说明书完成如下任务:
- 定义实体集及属性, 实体集的主码, 并用数据字典描述实体集
- 定义联系集及属性, 联系集的数码, 联系的映射基数及参与约束, 联系中实体的角色, 并用E-R图描述被建模的联系集
- 分析初步E-R图中是否存在依赖约束, 多值连灭除, 并将其建模为依赖实体集或弱实体集
- 利用扩展E-R特征对对象进行分类及聚合(建模为联系实体集)
- 将多元联系转化为二元联系进行建模(联系实体集, 依赖实体集或弱实体集)
- 去除冗余数据, 并保证满足所有数据需求不冲突
- 对照需求分析规格说明书, 检查E-R模型, 看其是否包含了所有数据, 能否满足所有功能需求等
- 需求分析是数据库概念设计的基础
E-R 模型转化方法
强实体集转化方法
将实体集的每个属性对应为关系模式的属性, 实体集的码作为关系模式的码
设强实体集E具有
- 关系模式名: E
- 属性集:
- 主码: 实体集E的主码
- 外码: 无
弱实体集转化方法
设弱实体集A具有属性集
- 关系模式名: A
- 属性集:
- 主码:
- 外码: 参照关系B的属性
联系集一般转化方法
设R是一联系集, 其描述性属性集为
- 关系模式名: R
- 属性集:
- 主码: 按映射基数对应规则确定
- 外码: 参照关系
及各自对应的主码属性
1:1或1:N联系转化方法
若A到B联系集为一对多联系, 则在由B转化的关系模式中增加A的主码属性作为参照A主码的外码, 同时将联系属性也放入由B转化的关系模式中.
eg:
员工(员工号, 姓名, 地址, 所属部门号)
部门(部门号, 部门名, 经理员工号)若A到B联系集为一对一联系, 则将某一方的主码属性增加到另一方实体集所转化的关系模式中去
标识联系集的转化
不需转化为任何关系模式
复合属性转化方法
应为每个字属性创建一个单独的属性, 而不是为复合属性自身创建一个单独的属性.
eg: 地址(街道, 城市, 状态, 邮编)
转化为:
街道, 城市, 状态, 邮编
学生(..., 地址)
=>
学生(..., 街道, 城市, 状态, 邮编)类层次转化
父类实体集和所有的子类实体集分别转化为单独的模式.
父类实体集对应的关系模式属性为父类实体集的属性(公共属性)
各子类实体集对应的模式由该子类实体集的特殊属性和父类实体集的主码属性组成, 各子类实体集的主码与父类实体集的主码相同.
只将所有的子类实体集转化为关系模式, 其属性由父类实体集的公共属性和各子类实体集的特殊属性组成
聚集的转化方法
聚集时一种抽象. 内层联系集和外层联系集都按其映射基数决定是否需要单独转为一个独立的关系模式(M:N联系集需要)
外层联系集的主码根据映射基数不同分别由内层联系集(联系实体集)的主码, 外层实体集的主码按不同方式产生
