数据库系统概论-第七章-数据库设计
数据库设计:
- 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
- 信息管理要求:在数据库中应该存储和管理哪些数据对象 。
- 数据操作要求:对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。
- 数据库设计的目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境 。
- 高效率的运行环境:数据库数据的存取效率高 数据库存储空间的利用率高 数据库系统运行管理的效率高。
规范设计法:
- 手工设计方法
- 基本思想 过程迭代和逐步求精
- 典型方法
- 新奥尔良(New Orleans)方法
- 基于E-R模型的数据库设计方法
- 3NF(第三范式)的设计方法
- 面向对象的数据库设计方法
- 统一建模语言(UML)方法
数据库设计分6个阶段:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
数据库设计不同阶段形成的数据库各级模式:
需求分析获得用户对数据库的要求:
(1)信息要求 用户需要从数据库中获得信息的内容与性质 由信息要求可以导出数据要求,即在数据库中需要存储哪些数据
(2)处理要求 用户要完成的处理功能 对处理性能的要求
(3)安全性与完整性要求
数据字典:
- 数据字典是关于数据库中数据的描述,即元数据,不是数据本身
- 数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善
- 数据字典是进行详细的数据收集和数据分析所获得的主要结果
数据字典的内容:
- 数据项
- 数据结构
- 数据流
- 数据存储
- 处理过程
- 数据项是数据的最小组成单位
- 若干个数据项可以组成一个数据结构
- 数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容
概念模型:
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计
概念模型的特点:
(1)能真实、充分地反映现实世界,是现实世界的一个真实模型。
(2)易于理解,从而可以用它和不熟悉计算机的用户交换意见。
(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
(4)易于向关系、网状、层次等各种数据模型转换
优化数据模型的方法:
(1)确定数据依赖:按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖。
(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
(3)按照数据依赖的理论对关系模式进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
(4)按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。
(5)对关系模式进行必要分解,提高数据操作效率和存储空间的利用率。
常用分解方法 :
一、水平分解:
1.什么是水平分解?
把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率。
2.如何分解?
对符合80/20的,把经常被使用的数据(约20%)
水平分解出来,形成一个子关系。水平分解为若干子关系,使每个事务存取的数据对应一个子关系。
二、垂直分解
1.什么是垂直分解?
把关系模式R的属性分解为若干子集合,形成若干子关系模式。
2.垂直分解的原则:
经常在一起使用的属性从R中分解出来形成一个子关系模式
3.垂直分解的优点:
可以提高某些事务的效率
4.垂直分解的缺点:
可能使另一些事务不得不执行连接操作,降低了效率
5.垂直分解的适用范围
取决于分解后R上的所有事务的总效率是否得到了提高
6.进行垂直分解的方法
简单情况:直观分解
复杂情况:用第6章中的模式分解算法
垂直分解必须不损失关系模式的语义(保持无损连接性和保持函数依赖)
数据库管理系统常用存取方法 :
1. B+树索引存取方法
2. Hash索引存取方法
3. 聚簇存取方法