数据库设计概述
数据库设计的特点
- "三分技术,七分管理,十二分基础数据"
- "十二分基础数据"强调了数据的收集、整理、组织和不断更新是数据库建设中的重要环节
- 数据库设计应该和应用系统设计相结合
- 即整个设计过程中要把数据库结构设计和对数据的处理设计密切结合起来
数据库设计方法
- 新奥尔良(New Orleans)方法
- 基于E-R模型的设计方法
- 3NF(第三范式)的设计方法
- 面向对象的数据库设计方法
- 统一建模语言(Unified Model Language,UML)方法
数据库设计的基本步骤
数据库设计分为以下6个阶段:
- 需求分析
- 需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
- 调查用户需求的方法有:跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录
- 在众多需求分析方法中,结构化分析(Structured Analysis,SA)方法是一种简单实用的方法。SA方法从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统。
- 概念结构设计
E-R图的集成一般需要分两步走:合并、修改和重构
(1)合并E-R图,生成初步E-R图
- 各子系统的E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突
①属性冲突主要包含以下两类冲突:
属性域冲突,即属性值的类型、取值范围或取值集合不同
属性取值单位冲突
②命名冲突主要包含以下两类冲突:
同名异义,即不同意义的对象在不同的局部应用中具有相同的名字
异名同义,即同一意义的对象在不同的局部应用中具有不同的名字
③结构冲突主要包含以下三类冲突:
同一对象在不同应用中具有不同的抽象
同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同
实体间的联系在不同的E-R图中为不同的类型
(2)消除不必要的荣誉,设计基本E-R图
- 在初步E-R图中可能存在一些冗余的数据和实体间冗余的联系。
冗余的数据是指可由基本数据导出的数据;冗余的联系是指可由其他联系导出的联系
消除冗余不仅可以采用分析方法,还可以用规范化理论
分析方法即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余
-
逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构
常用的两种分解方法是水平分解和垂直分解
水平分解是把(基本)关系的元组分成若干子集合,定义每个子集合为一个子关系,以提高系统的效率
垂直分解是把关系模型R的属性分为若干子集合,形成若干子关系模式。垂直分解的原则是,将经常在一起使用的属性从R中分解出来形成一个子关系模式。 -
物理结构设计
- 数据库的物理设计通常分为两步:
①确定数据库的物理结构:在关系数据库中主要指存取方法和存储结构
②对物理结构进行评价:评价的重点是时间和空间效率 - 数据库管理系统一般提供多种存取方法,常用的存取方法为索引方法和聚簇(clustering)方法
①索引方法:B+树索引和hash索引是数据库中经典的存取方法
②聚簇方法:为了提高某个属性(或属性组)的查询速度,把这个或这些属性上 - 确定数据库物理结构主要指确定数据的存放位置和存储结构。确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价三个方面的因素。
- 数据库实施
- 数据库实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。
- 数据库应用程序的设计应该与数据库设计同时进行
- 数据库运行和维护
数据库的维护工作主要包括以下几方面:
- 数据库的转储和恢复
- 数据库的安全性、完整性控制
- 数据库性能的监督、分析和改造
- 数据库的重组与重构造