以下内容为参考课件和《数据库系统概论》(第5版,王珊等著)的个人整理,若有错误欢迎指出
第七章 数据库设计
设计步骤
一、需求分析
需要什么信息、需要什么处理要求。
数据字典:系统中各类数据描述的集合,包括:
-
数据项:数据项名及其含义,类型,长度,取值范围含义,与其他数据项的逻辑关系。
-
数据结构:若干数据项或数据结构的组合
-
数据流:来源、去向、组合(数据结构)等
-
数据存储:输入输出(数据流)、说明
-
处理过程:输入输出(数据流)、处理说明
二、概念模型设计
1、E-R图
根据需求得到E-R图,可以自顶向下,也可以自底向上,也可以先设计局部再合并。
ER图的集成:合并相同的实体,消除冗余。但可能需要处理以下冲突:
- 命名冲突:看含义是否相同,相同的统一名字,不同的区分名字。
- 结构冲突:同一对象可能在一个图是实体,一个是属性,一般往大的改。如果属性个数不同,也是往多的改。
- 值域冲突:属性的域、单位冲突,需要统一。
- 约束冲突:统一
2、事务设计
定义事务功能,说明事务的输入、输出、功能
三、逻辑结构设计
1、将E-R图转变为DBMS支持的数据模型(表格形式)
需要满足用户的完整性和安全约束等。
2、步骤
-
形成初始关系数据库模式
实体间联系的转换:
- 1:1联系可以直接转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并(需要加入另一端的码以及联系本身的属性)。
- 1:n联系可以直接转换为一个独立的关系模式,也可以与n端对应的关系模式合并(n端的带另一端的码)。
- n:n联系只能是一个独立的关系模式。
- 多个实体间的一个联系,也是一个独立的关系模式,含所有实体的码+联系本身的属性。
合并处理的查询效率高
-
关系模式规范化
确定函数依赖,极小化,并逐一进行规范化处理。
-
关系模式优化
关系规范化是分解模式,但是分解过多,在查询时需要连接,因此影响效率。为了减少连接时的开销,有以下两种优化方法:
水平分解:把关系元组分为若干子集合,相当于减少数据量。
垂直分解:按照属性分解。
一般就把常用的分成一个关系模式,这样连接的时候数据量就少了
如果连接操作代价很高,可以逆规范化,但是要求这些数据比较少更新。
-
定义关系上的完整性和安全性约束
-
子模式定义
上面个相当于设计模式,此处是设计外模式。
-
性能估计
四、物理设计
一般现在的数据库已经设计好了
一般涉及存储结构、存取方法(索引、聚簇等)