数据库系统原理数据库设计
Posted BkbK-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统原理数据库设计相关的知识,希望对你有一定的参考价值。
数据库设计
一、数据库设计概述
1.数据库设计的步骤
- 需求分析
- 概念设计
- 逻辑结构设计
- 物理结构设计
- 数据库试运行和维护阶段
2.数据库设计概念
数据库设计就是根据用户应用需求和数据库的支撑环境(包括DBMS、操作系统和硬件),设计出数据模式(包括外模式、模式和内模式)、建立数据库和典型的应用程序,使之能够有效地存储数据,满足各种用户的信息要求和处理要求。
- 数据库设计的成果包括:
- 数据模式
- 以数据库为基础的典型应用程序
3.数据库设计的目标
为用户和各种应用系统提供一个信息基础设施和高效的运行环境,即存取效率高、存储空间的利用率高,数据库系统运行管理效率高。
4.数据库设计的特点
- 反复性
- 试探性
- 多阶段性
- 多技术性
5.可行性分析
可行性分析——设计之前的工作:
- 确定数据库系统在单位的计算机系统中的地位以及各个数据库之间的关系,确定数据库支持的业务范围是建立一个综合的数据库还是建立若干个专门的数据库
- 是数据库设计的起点,它规定了数据库系统的功能、可以使用的软硬件资源等数据库设计的具体要求
二、需求分析
1.需求分析阶段的任务
- 调查应用领域,对应用领域中各种应用的
信息要求
、处理要求
、安全性
和完整性要
求进行详细分析,形成需求分析说明书:- 了解数据的性质和使用情况、数据的处理流程、流向、流量等
- 分析用户在数据格式、数据处理、数据库安全、可靠性以及数据的完整性方面的要求
- 按一定规范要求写出设计者和用户都能理解的需求说明书
2.需求分析的困难所在
- 用户对数据库设计方面的专业知识缺乏,很难一次表达完整的需求或很难说清楚某部分工作的功能与处理过程
- 应用系统本身的需求是不断变化的,随着理解的深入,用户不断提出新需求
- 工作人员配合问题:因为需求分析可能影响他们工作或者系统的建立会改变他们的工作方式,迫使他们重新学习新的系统而增加负担等原因
3.需求分析的步骤
(1)需求调查
目的是了解单位中各个部门的职能、工作目标、职责范围,主要业务活动及工作流程,获得各个组织机构的业务数据及其相互联系的信息
(2)需求调查结果的分析与整理
- 数据流图
- 业务活动清单
- 需求清单
- 未来要求
- 数据字典
(3)书写需求分析说明书
(4)评审
三、概念结构设计
将需求分析得到的用户需求抽象为信息结构(概念模型)的过程就是概念结构设计
1.概念结构设计方法
(1)自顶向下
(2)自底向上
(3)逐步扩张
首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其它概念结构,直至总体概念结构
(4)混合策略
将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构框架,以它为骨架集成由自底向上策略中设计的各局部概念结构
2.概念结构设计步骤
(1)数据抽象
- 将具有某些共同特性和行为的对象抽象为一个概念(分类)
反映了对象和它所在的类之间的“is a member of”语义 - 定义某一类型的组成成分
表达了对象内部类型和抽象的概念之间的“is a part of ”语义 - 定义对象集之间的子集联系
抽象了对象集之间的“is a subset of”的语义
(2)分E-R图设计
- 选择局部应用
根据系统的具体情况,在多层数据流图中选择适当层次的数据流图作为设计分E-R图的出发点,让这组图中每一部分对应一个局部应用 - 逐一设计分E-R图
在选好的某一层次的数据流图中,每个局部应用对应一组数据流图,局部应用涉及的数据都在数据字典中,将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及联系的类型
(3)分E-R图集成
各子系统的局部E-R图设计好了以后,将所有的局部E-R图集成为一个系统的总E-R图全局E-R图
- 多个局部E-R图一次集成
- 逐步集成,用累加的方式一次集成两个局部E-R图
(4)优化初步E-R图
初步E-R图中可能存在一些冗余属性和冗余联系, 冗余属性和冗余联系容易破坏数据库的完整性,给数据库的维护增加困难,应当予以消除。
- 冗余属性是指其值可由基本数据导出的属性。这些属性实际上是计算属性,可以保留在E-R图中
- 冗余的联系是指可由其他联系导出的联系
(5)验证E-R图
分E-R图集成后形成的全局E-R图是一个整体的数据库概念结构。对整体概念结构还必须进行进一步验证,确保它能够满足下列条件:
- 整体概念结构内部必须具有一致性,不存在互相矛盾的表达
- 整体概念结构能准确地反映原来的每个局部概念结构, 包括属性、实体及实体间的联系
- 整体概念结构能满足需要分析阶段所确定的所有要求
四、逻辑结构设计
1.将全局E-R图转换为关系模式
2.关系模式规范化和优化
-
水平分解:
- 水平分解把关系的元组分为若干子集,对每个子集定义一个子关系,以提高系统的效率。
- 在水平分解下,每个子关系都具有相同的模式
-
垂直分解:
- 把关系模式R的属性分解为若干子集合,形成多个子关系模式,从而将对应的关系也分解成多个子关系
- 在垂直分解下, 不同的子关系具有不同的属性, 但是都包含R的主码
3.为每个应用设计外模式
外模式的设计:
- 将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体DBMS的特点,设计用户的外模式
- 目前关系数据库管理系统一般都提供了视图概念,可以利用这一功能设计更符合局部用户需要的用户外模式
- 定义数据库全局模式主要是从系统的时间效率、空间效率、易维护等角度出发
- 在定义用户外模式时可以注重考虑用户的习惯与方便
外模式设计的原则:
- 使用更符合用户习惯的别名
- 对不同的用户定义不同的视图,以保证系统的安全性
- 简化用户对系统的使用
- 处理计算属性
五、物理结构设计
1.数据库的物理结构设计
-
物理结构:数据库在物理设备上的存储结构和存取方法就称为数据库的物理结构
-
物理结构设计:就是为一个给定数据库的逻辑结构选取一个最适合应用环境的物理结构和存取方法的过程,目的是为了提高数据库的访问速度并有效地利用存储空间
2.物理设计的步骤
(1)确定数据库的物理结构
主要是确定存取方法和存储结构
①存取方法:
索引方法
-
选择索引存取方法的一般规则:
- 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)
- 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在
这个属性上建立索引 - 如果一个(或一组)属性经常在连接条件中出现,则考虑在这个(或这组)属性上建立索引
-
在下列情况下,不适宜建立索引:
- 在不出现或很少出现在查询条件中的属性上不适合建立索引。
- 属性值很少的属性上,属性值分布严重不均匀的属性上,或属性值很
长的属性上都不适合建立索引 - 经常更新的属性或关系上不适合建立索引
- 元组数据量少的小关系上也不适合建立索引
聚簇方法
聚簇:为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为取簇码)上具有相同值的元组集中存放在同一个物理块或若干个相邻的物理块或柱面内
下列情况下比较适合建立聚簇
- 对经常在一起进行连接操作的关系可以建立聚簇
- 如果一个关系的一组属性经常出现在相等比较条件中,则可以为该关系建立聚簇
- 如果一个关系的一个(或一组)属性上的值重复率很高,则可以为该关系建立聚簇。即对应每个聚簇码值的平均元组数不是太少,太少聚簇的效果不明显
散列方法
选择散列存取方法的规则如下:
- 如果一个关系的属性主要出现在等值连接条件中或主要出现在相等比较选择条件中,而且满足下列两个条件之一,则此关系可以选择散列存取方法:
- (1)一个关系的大小可预知,而且不变
- (2)关系的大小动态改变,且数据库管理系统提供了动态散列存取方法
②存储结构
确定数据库的物理结构主要指
- 确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等存储安排和存储结构
- 确定系统配置
确定数据的存放位置
为了提高系统性能,应该根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放由于各个系统所能提供的对数据进行物理安排的手段、方法差异很大,因此设计人员应仔细了解给定的RDBMS提供的方法和参数,针对应用环境的要求,对数据进行适当的物理安排
确定系统配置
DBMS产品一般都提供了一些系统配置变量、存储分配参数,供设计人员和DBA对数据库进行物理优化
(2)对物理结构进行评估
评估的重点是时间和空间效率
六、数据库的实施和维护
1.建立数据库模式
该工作由DBA负责完成。DBA利用RDBMS提供的工具或DDL语言先定义数据库名、申请空间资源、定义磁盘分区等,然后定义关系及其相应属性、主码和完整性约束,再定义索引、聚簇,用户访问权限,最后还要定义视图等
2.加载数据
在数据库模式定义后即可加载数据,除了利用DDL语言加载数据以外,DBA也可以编制一些数据加载程序来完成数据加载任务,从而完成数据库的建立工作
3.数据库试运行
应用程序调试完成,并将一小部分数据入库后,就可以开始数据库的试运行(联合调试)
主要工作包括:
- 功能测试:实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能
- 性能测试: 测量系统的性能指标,分析是否符合设计目标
4.数据库运行的维护
工作主要是由DBA完成,主要任务有:
- 数据库的转储和恢复
- 数据库的安全性、完整性控制
- 数据库性能的监督、分析和改进
- 数据库重组
- 数据库重构
以上是关于数据库系统原理数据库设计的主要内容,如果未能解决你的问题,请参考以下文章