2、数据库设计过程

需求分析
- 参照数据相关要求
产物
- 数据流图
- 数据字典
- 需求说明书
概念结构设计
根据需求阶段的产物
阶段
抽象数据
设计局部 ER 模型
合并局部模型(集成),消除冲突
- 多个局部 ER 图一次集成
- 逐步集成,用累加的方式一次集成两个局部 ER 图
冲突及解决方法
- 属性冲突:包括属性域冲突和属性取值冲突
- 命名冲突:包括同名异义和异名同义
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部 ER 图中所包含的属性个数和属性排列次序不完全相同
重构优化,消除冗余
产物

- ER 图(实体联系图)
ER 图

联系
- 一对一(1:1)
- 一对多(1:n)
- 多对多(n: m)
逻辑结构设计
考虑 ER 图
产物
关系模式(参考需求从 ER 图转换而来)
是一种数据模型,数据模型三要素:数据结构、数据操作、数据的约束条件
样式及组成
形式 1: 学生(学号、姓名、年龄、班级编号)
形式 2: 学生(U、F) U={学号、姓名、年龄、班级编号} F=
目或度:关系模式中属性的个数
候选码(候选键):唯一标识元组,没有冗余
主码(主键):候选键中任选一个
主属性和非主属性:组成候选码的属性就是主属性,其它就是非主属性
外码(外键)
全码:关系模式的所有属性组是这个关系的候选码
派生属性:能推算出的属性就是派生属性,比如出生日期可以推算年龄
模型
- 层次模型
- 网状模型
- 面向对象模型
- 关系模型:学生(学号、姓名、年龄、班级编号)
阶段
转化为关系模型
- 实体向关系模式转换
- 联系向关系模式转换
关系规范化
非规范化的问题
- 数据冗余
- 更新异常(修改操作一致性问题)
- 插入异常
- 删除异常
基本概念
函数依赖
学号 -> 系号 系号 -> 系名
左边可以唯一确定右边,右边不能唯一确定左边
候选键
唯一标识元组,且无冗余
使用图示法找候选键
将关系模式的函数依赖用“有向图”表示 找到入度为 0 的属性,并以该属性集合为起点,尝试遍历有向图,如果能正常遍历图中所有节点,则该属性集即为关系模式的候选键 若入度为 0 的属性集不能遍历图中所有节点,则需要尝试性的将一些中间节点(有入度有出度)并入入度为 0 的属性集中,直至该集合能遍历所有节点,集合为候选键
公理系统 Armstrong
关系模式 R<U,F>来说有以下推理规则:
- A1.自反律:若 Y 属于 X 属于 U,推出 X->Y
- A2.增广律:若 Z 属于 U 且 X->Y,推出 XZ->YZ
- A3.传递律:若 X->Y 且 Y->Z,推出 X->Z
根据 A1、A2、A3,可以推导出以下结论:
- 合并规则:由 X->Y 和 Y->Z,推出 X->YZ (A2、A3)
- 伪传递规则:由 X->Y,WY->Z,推出 Xw->Z (A2、A3)
- 分解规则:由 X->Y 和 Z 属于 Y,推出 X->Z (A1、A3)
范式判断
级别越高越能解决插入异常、删除异常、数据冗余的问题
1NF:属性值都是不可再分的原子值
简单属性和复杂属性,单值属性和多值属性,NULL 属性,派生属性
2NF:必须满足第一范式,且每个非主属性完全依赖主键
3NF:必须满足第二范式,且没有非主属性传递依赖于主键
BCNF:消除主属性对候选键的部分和传递依赖
模式优化
设计用户子模式
确定完整性约束
- 实体完整性约束:规定基本关系的主属性不能取空值(唯一且非空)
- 参照完整性约束:关系与关系间的引用,其他关系的主键或空值()
- 用户自定义完整性约束:应用环境决定
- 触发器
用户视图的确定
- 根据数据流图确定处理过程使用的视图
- 根据用户类别确定不同用户使用的视图
转换原则
- 一个实体性必须转换为一个关系模式
- 联系转关系模式:一对一、一对多(并入实体);一对一、一对多、多对多(独立关系)
一对一转换
- 独立的关系模式:并入两端主键及联系自身属性(主键:任一端主键)
- 归并(任意一端):并入另一端主键及联系自身属性(主键:保持不变)
一对多转换
- 独立的关系模式:并入两端主键及联系自身属性(主键:多端主键)
- 归并(多端):并入另一端主键及联系自身属性(主键:保持不变)
多对多转换
- 独立的关系模式:并入两端主键及联系自身属性(主键:两端主键的组合键)
物理设计
完成对数据库分布形式、存储形式、访问形式的设计 涉及到索引等,是物理设计阶段