数据库设计概述
- 数据库设计:根据用户需求(数据需求,处理需求)和平台约束(硬件,操作系统和DBMS)设计数据模式
- 数据库设计的生命周期
- 需求分析(需求分析说明书)
- 概念设计(概念数据模型)
- 逻辑设计(逻辑数据模型)
- 物理设计(数据库内模式)
- 编码测试运行,迭代
需求分析
- Things
- Attributes of Things
- Relationship among Things
概念设计
- 工具:E-R模型,EE-R模型,面向对象模型
- 设计过程
- 用户分解:将用户分为功能相对独立的若干组
- 视图设计:针对每个用户设计其数据视图
- 视图集成
- 等同:多个数据对象具有相同语义
- 聚合:数据对象间的一种组成关系
- 抽取:不同实体中的相同属性提取成一个新的实体,并构成具有继承关系的结构
- 视图修改
- 命名冲突
- 概念冲突
- 域冲突
- 约束冲突
逻辑设计
将 EE-R 转换为 DBMS 支持的逻辑数据模型(转换为关系数据库模式)
- 命名与属性域的处理
- 在同一个数据库模式中,关系名具有唯一性
- 在同一个关系模式中,属性名具有唯一性
- 根据DBMS的选型进行必要的数据类型转换
- 非原子属性处理
- 集合属性:原有关系的一个元组将被纵向展开成多个元组
- 元组属性:将一个元组属性横向展开成多个属性
- 联系的特殊转换
- 一个联系可以被转换成一个关系
- 联系也可被归并到相关联的实体所对应的关系模式中去
- 根据 1:1,1:n,m:n 转换为 1/2/3 个关系
- 继承的转换
- 每个实体集都转换为一个关系
- 只有最底层的叶子结点才会被转换为关系,并从其所有超实体集中继承属性
- 被转换为单个关系,其中含有所有实体集中的属性。
- 规范化:至少满足 3NF
- RDBMS 性能调整
- 逆规范化:减少连接运算次数
- 关系的分割
- 水平分割:将一个关系的元组集合划分为若干个不相交的子集,每个子集对应一个子关系模式
- 将一个关系模式纵向分解成若干个子关系模式
- 尽量使用快照
- 约束条件设置
物理设计
- 存储方式的设计
- 索引
- 在主关键字和外关键字上建立索引
- 以读为主的关系应尽可能多地建立索引
- 集簇
- 将有关的数据元组集中存放于一个或相邻的物理块内或同一柱面内以提高查询效率
- HASH
- 索引
- 存储结构的设计
- 分区设计:数据存放位置的设计
- 减少访盘冲突,提高 I/O 并行性
- 分散热点数据,均衡 I/O 负担
- 系统参数配置
- 分区设计:数据存放位置的设计