5.9学习总结
数据库原理第八章 数据库设计
8.1 数据库设计概述
数据库设计 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
目标: 为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。
8.1.1数据库设计的特点
(1)综合性 涉及面广,需包含计算机专业知识及业务系统专业知识; 要解决技术及非技术两方面的问题;
(2)静态结构设计与动态行为设计是分离的 静态结构设计是指数据库的模式框架设计(包括语义结构、数据结构、存储结构); 动态行为设计是指应用程序设计(动作操纵:功能组织、流程控制)
8.1.2 数据库设计方法概述
新奥尔良(New Orleans)方法
需求分析 概念结构设计 逻辑结构设计 物理结构设计
基于E-R模型的数据库设计方法 :概念设计阶段广泛采用
3NF(第三范式)的设计方法 :逻辑阶段可采用的有效方法
ODL(Object Definition Language)方法: 面向对象的数据库设计方法
计算机辅助设计: ORACLE Designer 2000 SYBASE PowerDesigner
本质:手工与经验相结合方法 设计质量与设计人员的经验和水平有直接关系 数据库运行一段时间后常常不同程度地发现各种问题,增加了维护代价 基本思想 过程迭代和逐步求精
8.1.3 数据库设计的基本步骤
需求分析 结构设计 行为设计 数据库实施 数据库运行和维护
8.2 数据库需求分析
需求分析阶段的主要任务: 详细调查现实世界要处理的对象(组织、部门、企业等) 充分了解原系统(手工系统或计算机系统) 明确用户的各种需求 确定新系统的功能 充分考虑今后可能的扩充和改变
信息需求 定义未来数据库系统用到的所有信息,明确用户将向数据库中输入什么样的数据,从数据库中要求获得哪些内容,将要输出哪些信息。同时还要描述数据间的联系等。
处理需求 定义了系统数据处理的操作功能,描述操作的优先次序,包括操作的执行频率和场合,操作与数据间的联系。处理需求还要明确用户要完成哪些处理功能,每种处理的执行频度,用户需求的响应时间以及处理的方式,比如是联机处理还是批处理,等等。
安全性与完整性要求 描述了系统中不同用户对数据库的使用和操作情况,完整性要求描述了数据之间的关联关系以及数据的取值范围要求。
确定用户最终需求
需求分析的难点:
用户缺少计算机知识 设计人员缺少用户的专业知识
解决方法: 设计人员必须不断深入地与用户进行交流
8.2.2 需求分析的方法
调查需求 达成共识 分析表达需求
三方面需求:业务现状、信息源流、外部要求
常用调查方法:
(1)跟班作业,观察业务的运转。 (2)开调查会,面谈交流。 (3)请专人介绍或通过其他渠道研究分析。 (4)设计问卷调查表请用户填写。 (5)查阅历史记录。
8.2.3 需求分析的成果
8.2.3.1 数据字典
数据字典的用途 进行详细的数据收集和数据分析所获得的主要结果 数据字典的内容
数据项:
数据项是不可再分的数据单位 对数据项的描述 数据项描述={ 数据项名,数据项含义说明,别名, 数据类型,长度,取值范围,取值含义, 与其他数据项的逻辑关系,数据项之间的联系 }
数据结构 :
数据结构反映了数据之间的组合关系。 一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。 对数据结构的描述 数据结构描述={数据结构名,含义说明, 组成:{数据项或数据结构}}
数据流:
数据流是数据结构在系统内传输的路径。 对数据流的描述 数据流描述={ 数据流名,说明,数据流来源, 数据流去向,组成:{数据结构}, 平均流量,高峰期流量}
数据存储 :
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。 对数据存储的描述 数据存储描述={数据存储名,说明,编号, 输入的数据流 ,输出的数据流 , 组成:{数据结构},数据量,存取频度, 存取方式}
处理过程:
具体处理逻辑一般用判定表或判定树来描述 处理过程说明性信息的描述 处理过程描述={处理过程名,说明, 输入:{数据流}, 输出:{数据流}, 处理:{简要说明}}
数据字典是关于数据库中数据的描述,是元数据,而不是数据本身 数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善
8.2.3.2 需求分析说明书
软件需求分析说明书是在对用户需求分析的基础上,把用户的需求规范化、形式化。目的是为软件开发提出总体要求,作为用户和开发人员之间相互了解和共同开发的基础。根据我国国家标准规定,软件需求分析说明书的内容如下:
1.引言 1.1 编写说明 1.2 背景 1.3 定义 1.4 参考资料 2. 任务概述 2.1 目标 2.2 用户的特点 2.3 假定与约束
3. 需求规定 3.1 对功能的规定 3.2 对性能的规定 3.2.1 精度 3.2.2 时间特性要求 3.2.3 灵活性 3.3 输入输出要求 3.4 数据管理能力要求 3.5 故障处理要求 3.6 其它专门要求
4. 运行环境规定 4.1 设备 4.2 支持软件 4.3 接口 4.4 控制
8.3 数据库结构设计:
8.3.1 概念结构设计
概念结构设计的任务 产生反映企业组织信息需求的数据库概念结构,即概念模型。
8.3.1.1 概念结构设计
概念结构设计的特点:
有丰富的语义表达能力
易于交流和理解
易于更改
易于向各种数据模型转换
概念结构设计的策略:
自底向上。先定义局部应用的概念结构,然后按一定的规则把它们集成起来,从而得到全局概念模型。
自顶向下:先定义全局概念模型,然后再逐步细化。
由里向外:先定义最重要的核心结构,然后再逐步向外扩展。
混合策略。将自顶向下和自底向上结合起来使用。
8.3.1.2 采用E-R模型方法的概念结构设计
数据抽象设计局部E-R模型 :E-R模型的设计内容包括确定局部E-R模型的范围、定义实体、联系以及它们的属性。
设计全局E-R模型 :将所有局部E-R图集成为一个全局E-R图,即全局E-R模型。
优化全局E-R模型
1、 设计局部E-R模型:
数据抽象技术:分类和聚集
概念结构是对现实世界的一种抽象。 所谓抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质细节,并把这些特性用各种概念准确的加以描述。 一般有三种抽象方法: 分类 概括 聚集.
2、 全局视图的集成
各个局部视图即分E-R图建立好后,还需要对它们进行合并,集成为一个整体的数据概念结构即总E-R图。
多个分E-R图一次集成 一次集成多个分E-R图 通常用于局部视图比较简单时
冲突的种类 属性冲突 命名冲突 结构冲突
优化全局E-R模型需要满足的条件:
实体个数尽可能少
实体所包含的属性尽可能少
实体间联系无冗余
8.3.2 逻辑结构设计
把概念结构设计阶段设计好的基本E-R模型转换为具体的数据库管理系统支持的数据模型。 步骤: 将概念模型转换为某种组织层数据模型; 对数据模型进行优化。
三项工作:
将概念结构转换为关系数据模型
对关系数据模型进行优化
设计面向用户的外模式
E-R图:
实体、属性、联系
设计外模式:
使用更符合用户习惯的别名。 对不同级别的用户定义不同的视图,以保证数据的安全。 简化用户对系统的使用。
8.3.3 物理结构设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,依赖于选定的数据库管理系统.
为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计.
数据库的物理设计.两步:
1.确定数据库的物理结构,在关系数据库中主要存取方法和存储结构
2.对物理结构进行评价,评价的重点是时间和空间效率
8.3.3.1 物理结构设计的内容和方法
数据库查询事务 查询的关系 查询条件所涉及的属性 连接条件所涉及的属性 查询的投影属性
数据更新事务 被更新的关系 每个关系上的更新操作条件所涉及的属性 修改操作要改变的属性值 每个事务在各关系上运行的频率和性能要求
确定存储方法:
DBMS常用存取方法 索引方法 目前主要是B+树索引方法 经典存取方法,使用最普遍 聚簇(Cluster)方法 HASH方法
确定存储结构:
确定数据库物理结构的内容 1. 确定数据的存放位置和存储结构 关系 索引 聚簇 日志 备份 2. 确定系统配置
8.4 数据库行为设计
功能分析 功能设计 事务设计:输入设计输出设计
8.5 数据库实施
8.5.1 加载数据
8.5.2 调试和运行应用程序
8.6 数据库的运行和维护
数据库投入运行标志着开发工作的基本完成和维护工作的开始,数据库只要存在一天,就需要不断地对它进行评价、调整和维护。
在数据库运行阶段,对数据库的经常性的维护工作主要由数据库系统管理员完成,其主要工作包括: 数据库的备份和恢复 数据库的安全性和完整性控制 监视、分析、调整数据库性能 数据库的重组
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库