一、数据库设计概述
- 数据库应用系统:使用数据库的各类信息系统。
- 数据库设计(DBD)
- 数据库设计的一般定义:针对给定应用环境,设计优化的数据库逻辑模式和物理结构,建立数据库及其应用系统,满足用户需求。
- 数据库设计的两个特点
- 数据库建设的基本规律:三分技术、七分管理、十二分基础数据。
- 结构与行为设计相结合。
- 数据库设计方法
- 手工试凑法:设计质量依赖人员经验水平,运行后可能出现问题,维护代价高。
- 规范设计法:如 New Orleans 方法、基于 E-R 模型等多种方法。
- 数据库设计的 6 个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。需求分析和概念设计独立于 DBMS,逻辑设计和物理设计与选用的 DBMS 密切相关。
二、需求分析
- 任务
- 详细调查现实世界处理对象,了解原系统。
- 明确用户各种需求,确定新系统功能,考虑扩充与改变。
- 重点:调查 “数据” 和 “处理”,获取用户对数据库的信息要求、处理要求、安全性与完整性要求。
- 难点:确定用户最终需求,因用户与设计人员知识差异,需深入交流。
- 方法
- 调查需求:通过多种方式协助用户明确新系统要求,确定系统边界。
- 达成共识:与用户沟通协商,确保需求理解一致。
- 分析表达需求:采用数据流图和数据字典描述需求。
- 数据流图(DFD)
- 基本成分:外部实体、处理、数据流、数据存储。
- 画法:合理划分层次,确保数据守恒、正确输入输出,提高易读性,确定系统边界。
- 数据字典(DD)
- 内容:数据项、数据结构、数据流、数据存储、处理过程。
- 作用:提供数据库数据描述的集中管理,是元数据,在需求分析阶段建立并不断完善。
三、概念设计
- 概念结构设计的定义:将需求分析得到的用户需求抽象为概念模型的过程,是数据库设计关键,是设计人员与用户交流的语言。
- 概念模型的用途与要求
- 用途:用于信息世界建模,是现实世界到机器世界的中间层次,是数据库设计有力工具。
- 要求:有较强语义表达能力,方便表达应用语义知识,简单清晰,易于用户理解。
- 信息世界中的基本概念
- 实体:客观存在并可相互区别的事物。
- 属性:实体具有的特性。
- 码:唯一标识实体的属性集。
- 域:属性的取值范围。
- 实体型:对同类实体的抽象刻画。
- 实体集:同一类型实体的集合。
- 联系:包括实体内部联系和实体之间联系。
- 两个实体型之间的联系
- 一对一联系(1:1)。
- 一对多联系(1:n)。
- 多对多联系(m:n)。
- 两个以上实体型之间的联系
- 一对多联系。
- 一对一(多对多)联系。
- 单个实体型内的联系
- 一对多联系。
- 一对一联系。
- 多对多联系。
- E-R 图
- 表示方法:用矩形表示实体型,椭圆形表示属性,菱形表示联系,联系与实体间用无向边连接并标注联系类型。
- 设计过程:确定实体类型、联系类型,组合成 E-R 图,确定属性和键。
- 概念结构设计的方法与步骤
- 常用策略:自顶向下需求分析,自底向上设计概念结构。
- 步骤
- 抽象数据并设计局部视图:选择局部应用,设计分 E-R 图,遵循属性和联系的设计准则。
- 集成局部视图,得到全局概念结构:合并分 E-R 图,消除冲突,修改和重构,消除冗余,验证整体概念结构。
四、逻辑设计
- 逻辑结构设计的任务:把概念结构设计阶段的基本 E-R 图转换为与 DBMS 支持的数据模型相符合的逻辑结构。
- E-R 图→关系模型的转换原则
- 实体:一个实体型转换为一个关系模式,实体属性对应关系属性,实体码对应关系码。
- 联系
- 1:1 联系:可转换为独立关系模式或与任意一端关系模式合并。
- 1:n 联系:可转换为独立关系模式或与 n 端关系模式合并。
- m:n 联系:转换为一个关系模式,相连实体码组合为关系码。
- 数据模型的优化
- 目的:提高数据库应用系统性能。
- 方法:以规范化理论为指导,分析关系模式中存在的问题,如插入异常、删除异常、数据冗余、更新异常等,通过分解关系模式解决,遵循无损连接、保持依赖原则,一般分解到 3NF。
- 设计用户子模式
- 注意问题:使用别名,针对不同用户定义 View 满足安全性要求,简化用户使用。
五、物理设计
- 数据库物理结构的定义:数据库在物理设备上的存储结构与存取方法,依赖于选定的 DBMS。
- 物理设计的定义:为给定逻辑数据模型选取适合应用环境的物理结构的过程。
- 内容和方法
- 存取方法
- 索引方法:如 B + 树索引法,选择索引存取方法时需考虑查询条件、聚集函数参数、连接操作等因素,确定索引类型(唯一索引、主键索引、聚集索引等)。
- 聚簇(Cluster)方法:将具有相同聚簇码值的元组集中存放,可提高查询速度,适用于单个关系或多个连接关系,但建立与维护开销大,聚簇码值应相对稳定。
- 存储结构:确定数据存放位置,如将易变与稳定部分、存取频率不同部分分开存放,可利用多磁盘提高 I/O 效率。
- 确定系统配置:根据 DBMS 提供的存储分配参数,如用户数、数据库对象数、内存分配参数等进行配置。
- 存取方法