数据库原理:数据库设计
目录
参考:
- 链接1:【最全】《数据库原理及应用》知识点整理+习题 (opens new window)
- 链接2:数据库原理 (opens new window)
- 链接3:数据库原理知识梳理 (opens new window)
# 数据库原理:数据库设计
数据库设计可以分为以下6个阶段:
- 需求分析:准确了解和分析用户需求(包括数据和处理)
- 概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
- 逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化
- 物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
- 数据库实施:根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库并试运行
- 数据库运行和维护:在数据库投入正式使用后不断地对其进行评价、调整与修改
其具体要做的事情如下图:

# 需求分析
数据流图表达了数据和处理的关系,数据字典是系统中各类数据描述的集合。
数据字典通常包括数据项、数据结构、数据流、数据存储、处理过程5个部分:
数据项:数据项描述 = {数据项名,数据项含义说明,别名,数据类型,取值范围……}
数据结构:数据结构反映了数据之间的组合关系。数据结构描述 = {数据结构名,含义说明,组成:{数据项或数据结构}}
数据流:数据流是数据结构在系统内传输的路径。数据流描述 = {数据流名,数据流来源,数据流去向,平均流量,高峰期流量,组成:{数据结构}}
数据存储:数据存储是数据结构停留或保存的地方。数据存储描述 = {数据存储名,说明,编号,输入的数据流,输出的数据流,组成:{数据结构},数据量,存取频度,存取方式}
处理过程:处理过程的具体处理逻辑一般用判定表或判定树来描述。处理过程描述 = {处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}概念结构设计
需求分析阶段完成数据字典(用于表示收集到的数据)和一组数据流程图(Data Flow Diagram,DFD)
# 概念结构设计
设计概念结构通常有四类方法
- 自顶向下:即首先定义全局概念结构的框架,然后逐步细化
- 自底向上:即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构
- 逐步扩张:首先定义最重要的核心概念结构,然后向外扩充
- 混合策略:即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
# 逻辑结构设计
E-R图如何转换为关系模型?
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的码;如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。(联系本身的属性?)
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
# 数据模型的优化
数据库逻辑设计的结果不是唯一的。关系数据模型的优化通常以规范化理论为指导。
具体如下:
确定数据依赖、分析各关系模式属于第几范式,并不是规范化程度越高的关系就越优,这需要考虑具体情况;
对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。常用的两种分解方法为水平分解和垂直分解。
水平分解:把关系的元组分为若干子集合,定义每个子集合为一个子关系
垂直分解:把关系的属性分解为若干个子集合,形成若干子关系模式
# 设计用户子模式
如果某些局部应用经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图,用户每次只对定义好的视图进行查询即可。
# 数据库的运行与维护
从以下几个角度考虑:
数据库的转储和恢复
数据库的安全性、完整性控制
数据库性能的监督、分析和改造
数据库的重组织和重构造