5. 数据库设计
## 5.2 需求分析
### 需求分析的任务
- 详细调查要处理的对象
- 充分了解原系统工作状况
- 明确用户需求
- 确定新系统功能
### 获得用户需求
- 信息要求
- 数据要求
- 处理要求
- 安全性要求
- 完整性要求
### 需求分析的难点
- 用户缺乏计算机知识
- 设计人员缺乏业务知识
- 用户无法描述需求
- 用户隐藏真正需求
### 用户需求调查
- 调查组织机构情况
- 调查各部门的业务活动情况
- 协助用户明确对新系统的各种要求
- 确定新系统的边界
### 常用调查方法
- 跟班作业
- 开调查会
- 专人介绍
- 询问
- 调查表
- 查阅记录
### 结构化分析
- 从最上层的系统组织机构入手
- 自顶向下
- 逐层分解
### 提交需求报告
- 提交给用户
- 获得用户书面认可
### 数据字典
- 是数据收集和数据分析的主要成果
- 是数据库中数据的描述
- 需求分析阶段建立
- 在数据库设计过程中不断修改完善
### 数据字典的内容
- 数据项: 不可再分的数据单位
- 数据结构: 反映数据之间的组合关系
- 数据流: 数据结构在系统内传输的路径
- 数据存储: 数据结构停留或保存的地方
- 处理过程: 数据的处理逻辑
### 数据项描述
- 数据项名
- 数据项含义说明
- 别名
- 数据类型
- 长度
- 取值范围
- 取值含义
- 与其他数据项的逻辑关系
- 数据项之间的联系
### 数据结构描述
- 数据结构名
- 含义说明
- 组成: 数据项或数据结构
### 数据流
- 数据流名
- 说明
- 数据流来源
- 数据流去向
- 组成: 数据结构
- 平均流量
- 高峰期流量
### 数据存储
- 数据存储名
- 说明
- 编号
- 输入的数据流
- 输出的数据流
- 组成: 数据结构
- 数据量
- 存取频度
- 存取方式
### 处理过程
- 处理过程名
- 说明
- 输入: 数据流
- 输出: 数据流
- 处理: 简要说明
### 需求分析的要点
- 收集将来应用所涉及的数据
- 应考虑可能的扩充和改变
- 强调用户的参与与配合
## 5.3 概念结构设计
### 概念结构设计
- 将用户需求抽象为信息结构
- 信息结构即概念模型
- 是数据库设计的关键
### 概念模型
- 信息世界的结构
- 能真实充分地反映现实世界
- 易于理解
- 易于更改
- 易于转换成各类数据模型
### E-R 模型
- 联系
- E-R 图
### 联系
- 一对一联系 (1:1)
- 一对多联系 (1:n)
- 多对多联系 (m:n)
### E-R 图
- 实体: 矩形
- 联系: 菱形
- 属性: 椭圆形
### 数据分类与组织
- 确定实体
- 确定实体属性
- 确定实体之间的联系类型
### 基本原则
- 能作为属性的尽量作为属性
- 作为属性的事物不能再具有需要描述的特性
- 属性不能与其他实体有联系
### E-R 图的集成
- 首先设计各个子系统的 E-R 图
- 集成形成整体 E-R 图
- 合并: 解决各个分 E-R 图之间的冲突
- 修改和重构: 消除不必要的冗余
### E-R 图之间的冲突
- 属性冲突
- 命名冲突
- 结构冲突
### 属性冲突
- 属性域冲突
- 属性取值单位冲突
### 命名冲突
- 同名异义
- 异名同义
### 结构冲突
- 同一对象在具有不同的抽象
- 同一实体在包含的属性个数和排列次序不同
- 实体间的联系为不同类型
### 消除冗余
- 冗余的数据
- 冗余的联系
- 通过数据项之间的逻辑关系消除
## 5.4 逻辑结构设计
### 逻辑结构设计
- 将 E-R 图转换为逻辑结构
- 如何转换
- 如何确定属性与码
### 联系转换规则
- 一个 1:1 联系转换成一个关系模式或与任意一端合并
- 一个 1:n 联系转换成一个关系模式或与 n 端合并
- 一个 m:n 联系转换成一个关系模式
- 三个实体以上的联系转换成一个关系模式
- 具有相同码的关系模式可以合并
### 数据模型的优化
- 确定数据依赖
- 极小化处理数据依赖
- 逐一分析数据依赖
- 根据处理要求注意分析模式
- 对关系模式进行必要分解
### 分解关系模式
- 水平分解: 按元组分解
- 垂直分解: 按属性分解
### 设计用户子模式
- 使用符合用户习惯的别名
- 为不同级别的用户定义不同的视图
- 简化用户对系统的使用
## 5.5 物理结构设计
### 物理结构
- 数据库在物理设备上的存储结构和存取方法
- 依赖于所选的数据库管理系统
### 物理设计
- 确定存取方法
- 确定索引方法和聚簇方法
- 评价物理结构进行评价
- 考虑时间和空间效率
### 分析事务
- 查询的关系
- 查询条件所涉及的属性
- 连接条件所涉及的属性
- 查询的投影属性
- 被更新的关系
- 每个关系上的更新操作条件所涉及的属性
- 修改操作要改变的属性值
### 确定存储结构
- 确定数据的存放位置和存储结构
- 存取时间
- 存储空间利用率
- 维护代价
### 确定数据存放位置
- 易变部分
- 稳定部分
- 经常存取部分
- 存取频率较低部分
### 确定系统配置
- 同时使用数据库的用户数
- 同时打开的数据库对象数
- 内存分配参数
- 缓冲区分配参数
- 存储分配参数
- 物理块的大小
- 数据库大小
- 锁的数目
### 评价物理结构
- 定量估算
- 时间效率
- 空间效率
- 维护代价
- 各种用户要求
## 5.6 数据库的实施和维护
### 数据库实施
- 描述逻辑设计
- 描述物理设计
- 产生目标模式
- 组织数据入库
- 应用程序编码和调试
### 数据库的试运行
- 实际运行数据库应用程序
- 执行对数据库的各种操作
- 测试应用程序的功能
- 测试系统的性能指标
### 数据库的维护
- 数据库的转储和恢复
- 数据库的安全性和完整性控制
- 数据库性能的监督, 分析和改造
- 数据库的重组织与重构造

### 5.2 需求分析
- 需求分析阶段主要解决哪些问题?
- 如何获得用户需求中的数据要求?
- 结构化分析时, "自顶向下" 是什么意思?
- 在概念结构设计中, 什么是 "信息结构"?
- 物理结构设计阶段需要评价哪些方面?
- 数据库维护中, 为什么需要关注数据库的性能监督?
----
[ 5.1 数据库设计概述](dbds-5-1.html#/overview)
[| 练习 |](dbds-exec.html)
[ 6.1 数据库安全性](dbds-6-1.html#/overview)