07.数据库设计
数据库设计概述
数据库设计的特点
- 
数据库建设的基本规律
- 三分技术, 七分管理, 十二分基础数据
 
 - 
结构(数据)设计和行为(处理)设计相结合
 
数据库设计方法
- 
手工试凑法
 - 
规范设计法
- 过程迭代和精益求精
 - 新奥尔良方法
 - 基于E-R模型的数据库设计
 - 3NF的设计方法
 - 面向对象的数据库设计方法
 - 统一建模语言(UML)方法
 
 
数据库设计的基本步骤
- 
数据库设计分6个阶段
- 
需求分析, 概念结构设计, 逻辑结构设计, 物理结构设计, 数据库实施, 数据库运行和维护
 
 - 
 - 
参加数据库设计的人员
- 系统分析人员和数据库设计人员
 - 数据库管理员和用户代表
 - 应用开发人员
 
 - 
各阶段的主要任务
 - 
各个阶段的数据设计描述
 
数据库设计过程中的各级模式
需求分析
需求分析的任务
- 
调查的重点是"数据"和"处理", 获得用户对数据库在信息, 处理, 安全性与完整性的要求
 
需求分析的方法
- 
需求分析的目的: 调查清楚用户的实际需求并进行初步分析, 最终与用户达成共识
 - 
常用分析方法
 - 
结构化分析方法 (SA)
 
数据字
典
- 
内容
- 
数据项
 - 
数据结构
 - 
数据流
 - 
数据存储
 - 
处理过程
 
 - 
 
概念结构设计
将需求分析得到的用户需求抽象为信息结构的过程
- 
描述工具: E-R模型
 
E-R模型
- 
联系的度: 参与联系的实体型的数目
 - 
E-R图
- 实体型 : 矩形
 - 属性 : 椭圆形
 - 联系 : 菱形
- 联系也可以具有属性
 
 
 - 
一个实例
 
扩展的E-R模型
- 
ISA联系 : 三角形
- 
子类 is a 父类
 - 
子类继承父类的所有属性
 - 
分类属性
- 
根据分类属性的值把父实体型中的实体分派到子实体中
 
 - 
 - 
不相交约束与可重叠约束
- 
不相交约束 : 父类中的一个实体不能同时属于多个子类中的实体集
 - 
可重叠约束 : 父类中的一个实体能同时属于多个子类中的实体集
 
 - 
 - 
完备性约束
- 
描述父类中的一个实体是否必须是某一个子类中的实体.如果是, 则为完全特化, 否则为部分特化
 - 
完全特化用双线连接, 部分特化用单线连接
 
 - 
 
 - 
 - 
基数约束
- 对实体之间一对一, 一对多和多对多联系的细化
 - 约束用一数对 
min..max表示, 0<=min<=max - min=1的约束叫做强制参与约束, 即被施加基数约束的实体型中的每个实体都要参与联系
 - min=0的约束叫做非强制参与约束, 即被施加基数约束的实体型可以出现在联系中, 也可以不出现在联系中
 
 - 
Part-of联系
- 部分联系, 表明某个实体型是另外一个实体型的一部分
 - 非独占的Part-of联系
- 整体实体如果被破坏, 部分实体仍然可以独立存在
 - 可以通过基数约束来表达
 
 - 独占的Part-of联系
- 实体如果被破坏, 部分实体不能存在
 - 用弱实体类型和识别联系来表示独占联系
- 如果不能从一个实体型属性中找出可以作为码的属性, 这个实体型是弱实体型
 - 在E-R图中用双矩形表示弱实体型, 双菱形表示识别联系
 
 
 
 
概念结构设计
- 
见 ch40.pptx
 - 
实体与属性的划分原则
- 作为属性, 不能再具有需要描述的性质. 属性是不可再分的数据项, 不能包含其他属性
 - 属性不能与其他实体具有联系
 
 - 
E-R图的集成
- 
合并
 - 
修改和重构
 
- 
合并E-R图, 生成初步E-R图
- 属性冲突
- 属性域冲突 : 属性值的类型, 取值范围或取值集合不同
 - 属性取值单位冲突
 
 - 命名冲突
- 同名异义
 - 异名同义(一义多名)
 - 命名冲突
 
 - 结构冲突
- 同一对象在不同应用中具有不同的抽象
- 解决方法 : 把属性变换为实体或把实体变换为属性
 
 - 同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同
- 该实体的属性取各子系统的E-R图中属性的并集, 再适当调整属性的次序
 
 - 实体间的联系在不同的E-R图中为不同的类型
- 根据应用的语义对实体联系的类型进行综合或调整
 
 
 - 同一对象在不同应用中具有不同的抽象
 
 - 属性冲突
 - 
消除不必要的冗余, 设计基本E-R图
- 消除冗余主要采用分析方法
 - 消除冗余后的初步E-R图, 称为基本E-R图
 - 用规范化理论来消除冗余
 
 
 - 
 
逻辑结构设计
把E-R图变成表
E-R图向关系模型的转换
- 
转换原则
- 一个矩形对应一张二维表, 每个属性对应为列
 
 - 
实体型间的联系有以下不同情况
- 一个1:1联系可以转换为一个独立的关系模式, 也可以与任意一端对应的关系模式合并
- 转换为一个独立的关系模式
- 关系的属性 : 与该联系相连的各实体的码及联系本身的属性
 - 关系的候选码 : 每个实体的码均是该关系的候选码
 
 - 与某一端实体对应的关系模式合并
- 合并后关系的属性 : 加入对应关系的码喝联系本身的属性
 - 合并后关系的码 : 不变
 
 
 - 转换为一个独立的关系模式
 - 一个1:n联系可以转换为一个独立的关系模式, 也可以与n端对应的关系模式合并
- 转换为一个独立的关系模式
- 关系的属性 : 与该联系相连的各实体的码及联系本身的属性
 - 关系的候选码 : n端实体的码
 
 - 与n端对应的关系模式合并
- 合并后关系的属性 : 在n端关系中加入1端关系的码和联系本身的属性
 - 合并后关系的码 : 不变
 
 
 - 转换为一个独立的关系模式
 - 一个m:n联系转换为一个关系模式
- 关系的属性 : 与该联系相连的各实体的码及联系本身的属性
 - 关系的候选码 : 各实体码的组合
 
 - 三个或三个以上实体间的一个多元联系转换为一个关系模式
- 关系的属性 : 与该联系相连的各实体的码及联系本身的属性
 - 关系的候选码 : 各实体码的组合
 
 - 具有相同码的关系模式可合并
- 将其中一个关系模式的全部属性加入到另一个关系模式中
 - 去掉其中的同义属性
 - 适当调整属性的次序
 
 
 - 一个1:1联系可以转换为一个独立的关系模式, 也可以与任意一端对应的关系模式合并
 
数据模型的优化
- 
优化数据模型的方法
- 确定数据依赖
 - 对于各个关系模式之间的数据依赖进行极小化处理
 - 按照数据依赖的理论对关系模式进行分析
 - 按照需求分析阶段得到的各种应用对数据处理的要求分析
 - 对关系模式进行必要分解
- 水平分解
- 80/20
 
 - 垂直分解
 
 - 水平分解
 
 
设计用户子模式
视图实现
- 
使用更符合用户习惯的别名
 - 
针对不同级别的用户定义不同的视图, 以保证系统的安全性
 - 
简化用户对系统的使用
 
物理结构设计
数据库在物理设备上的存储结构与存取方法, 依赖于选定的数据库管理系统
- 
设计步骤
- 确定数据库的物理结构
 - 对物理结构进行评价
 
 
数据库物理设计的内容和方法
- 
设计物理数据库结构的准备工作
 - 
选择物理数据库设计所需参数
 - 
关系数据库物理设计的内容
 
关系模式存取方法选择
- 
B+树索引存取方法的选择
- 选择索引存取方法的一般规则
- 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)
 - 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引
 - 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引
 
 
 - 选择索引存取方法的一般规则
 - 
Hash存取方法的选择
- 如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一
- 该关系的大小可预知,而且不变
 - 该关系的大小动态改变,但所选用的数据库管理系统提供了动态Hash存取方法
 
 
 - 如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一
 - 
聚簇存取方法的选择
- 为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块中称为聚簇
 - 适用条件
- 很少对基表进行增删操作
 - 很少对其中的变长列进行修改操作
 
 - 选择聚簇存取方法
- 设计候选聚簇
 - 检查候选聚簇中的关系, 取消其中不必要的关系
 
 
 
确定数据库的存储结构
- 
确定数据的存放位置
 - 
确定系统配置
 
评价物理结构
数据库的实施和维护
数据的载入和应用程序的调试
- 
数据的载入
 - 
应用程序的调试
 
数据库的试运行
- 
功能测试
 - 
性能测试
 
数据库的运行和维护
- 
数据库的转储和恢复
 - 
数据库的安全性和完整性控制
 - 
数据库性能的监督, 分析和改进
 - 
数据库的重组织与重构造
 




















