<数据库原理>DB3 数据库设计
本文最后更新于:2024年4月3日 晚上
DB3 数据库设计
在数据库领域,通常把使用了数据库的信息系统称为 数据库应用系统。好的数据库应用系统有以下表现:
- 数据访问效率高
- 减少数据冗余,节省存储空间,便于系统扩展
- 使应用程序开发容易
数据库设计应遵循以下原则:
-
使用索引
创建索引的目的有两个:维护索引列取值的唯一性;加快数据访问速度
大型数据库有两种索引:簇索引(数据按簇索引顺序存储);非簇索引(数据添加在表尾)
-
保证数据的一致性和完整性
通过主键、外键,增加表间关联,以保证数据一致性和完整性。
但表间关联会增加系统开销。为了缩短响应时间,保留合理的数据冗余是必要的。此时可以通过 **规则(Rule)**和 **约束(Check)**来防止误输入。
-
正确理解范式,合理遵循范式
在理解范式的基础上,有时为了提高运行效率,可以降低范式标准,适当保留数据冗余。
-
合理选择数据类型
-
信息隐藏
利用 DBMS 触发器、存储过程、函数等,将数据库无法简化的复杂表关系隐藏,以提高数据安全性。
-
结构设计与行为设计分离
结构设计:数据库的模式结构设计。包括概念结构,逻辑结构,物理结构。
行为设计:应用程序设计。包括功能组织,流程控制等方面的设计。
软件过程更注重处理过程设计,而数据库设计更注重数据结构的设计。
DB3.1 数据库系统的生存周期
数据库系统的生存周期:数据库系统从开始规划、设计、实现、维护,直至被新系统取代而停止使用的整个期间。
数据库系统的生存周期分为七个阶段:
-
系统规划
该阶段分为三个步骤:
- 系统规划。对需求进行调查,发现其存在的问题。
- 可行性分析。根据上一步发现的问题,从技术、经济、效益等方面进行可行性分析,生成 可行性分析研究报告,并组织专家讨论。
- 确定数据库系统的总目标,对需求方工作流程进行优化,指定项目开发计划,生成 项目可行性研究报告。
有时,数据库设计可以不包括该阶段。该阶段生成可行性研究报告。
-
需求分析
设计方与需求方全面沟通,收集数据库所有用户的信息内容和处理要求。注意确保用户目标的一致性。
该阶段获取用户信息要求。
-
概念结构设计
将需求分析阶段获得的用户信息要求,通过用户理解的语言,统一规划到一个整体逻辑结构中。
该阶段产生一个整体的概念模型。
-
逻辑结构设计
将概念模型转化为某个 DBMS 支持的数据模型,并对其进行优化。
该阶段产生逻辑结构模型。
-
物理结构设计
为逻辑结构模型选取最适合应用环境的物理结构。
-
系统实现
根据物理设计的结果产生具体的数据库应用程序,并加载初始数据。
-
系统运行和维护
收集、记录系统运行情况,根据用户需求变化对数据库进行修改和扩展。
DB3.2 需求分析
需求分析采用自顶向下的策略。主要由四步构成:
-
分析用户活动,产生 业务流程图
了解用户组织机构、部门职能、业务流程,并据此画出用户的业务流程图
(DB3_2_业务流程图)
-
确定系统范围,产生 系统功能图
确定系统的范围,明确用户业务流程中,哪些部分由计算机完成,哪些部分由人来完成
把客户提到的需求逐个转化为具体功能,给出系统功能图。该功能图就是人机界面,每个界面完成一个功能
(DB3_2_系统功能图)
-
分析用户业务活动涉及的数据,产生 数据流程图
深入分析每个功能需求,用数据流图(Data Flow Diagram,DFD)表示出数据的流向,以及对数据进行的加工
(DB3_2_数据流图)
-
分析系统数据,产生 数据字典
数据字典以特定格式记录系统中各数据名称、结构、意义、约束条件等
(DB3_2_数据字典图)
#数据字典
数据字典是需求分析阶段获得的重要成果,是概念设计阶段最详细的资料来源,也是系统验收的重要依据
数据字典包括五个部分:
-
数据项
数据项描述={数据项名,语义说明,数据类型,长度,取值范围,其他约束或关联}
-
数据结构
数据结构反映了数据间的组合关系。一个数据结构可由若干数据项或数据结构组成
数据结构={数据结构名称,含义说明,组成说明}
-
数据流
数据流是数据结构在系统内传输的路径
数据流={数据流名称,语义说明,数据流来源,数据流去向,组成说明,平均流量,高峰期流量}
-
数据存储(文件)
数据流程图中数据结构停留或保存的地方。
数据存储={数据存储名,说明,编号,流入数据流,流出数据流,组成:{数据结构},数据量,存取方式}
-
处理过程
数据流程图中,功能模块的说明。数据字典中只记录说明性信息
DB3.3 概念结构设计
概念设计的策略是自底向上。其主要分为三步:
-
进行数据抽象,设计局部概念模型
按功能模块化,从单一需求出发,建立相应局部概念模型。过程中,对需求分析结果进行细化、补充和修改
-
将局部概念模型综合为全局概念模型
将各功能模块的局部概念模型综合起来,得到反映所有用户需求的全局概念模型。
-
评审
#E-R 模型
**E-R 模型(实体-联系模型,Entity-Relationship Model)**提供了一种描述现实世界中数据组织和关联的图形化方法。
(DB3_3_E-R_图)
E-R 模型的基本元素包括:
-
实体(Entity):问题域中存在的客观事物在逻辑层面的数据抽象,如人、事、物、地点等。在 E-R 图中用矩形框表示。
-
属性(Attribute):用于描述实体的特征的数据项,每个实体都具有一个或多个属性。在 E-R 图中以椭圆框表示。
-
标识符(Identifier):用于标识不同实体实例的属性,可以是单个属性或多个属性的组合。
标识符与主键的区别在于,标识符是一个逻辑概念,而主键是一个物理概念。
-
联系(Relationship):实体之间的联系。在E-R图中用菱形框表示。
联系的类型包括一对一、一对多、多对多等,在联系中关联的实体数目称为联系度数。
DB3.4 逻辑结构设计
逻辑结构设计的任务,是把概念结构设计阶段获得的整体 E-R 模型,转变为具体的 DBMS 支持的数据模型。
以关系数据库为例。关系模型的逻辑是一组关系的集合,而 E-R 模型由 实体、属性、联系 组成。将 E-R 模型转变成关系模型,就是把 实体、属性、联系 转变为关系模式。
转换规则如下:
-
对于 E-R 图中的实体
每个实体类型转换为关系模型中的一个关系模式。实体的属性即关系模式的属性,实体的标识符即关系模式的关键码。
-
对于 E-R 图中的联系
E-R 图中的联系分为:一元联系、二元联系、多元联系。
其中,二元联系又分为:一对一联系、一对多联系、多对多联系。
-
一对多联系()
将 端关键码,加入到 端关系模式中,作为外键。
-
多对多联系()
将该联系类型转化为一个关系模式,其属性为两侧的实体关键码。也就是将该联系转化为了 1个实体 + 2个一对多联系
-
一对一联系()
在一个关系模式中添加另一关系模式的键即可
处理三元及以上关系时,参照上述二元关系处理方法即可
-
DB3.5 物理结构设计
通常分为两步:
-
确定数据库物理结构
在关系数据库中,主要指存储结构和存取方法
-
对数据库物理结构进行评价
主要评价时间和空间效率
DB3.6 数据库实施、运行和维护
数据库的实施包括两项工作:数据的载入;前台应用程序的编码和调试
所有功能模块经过调试后,要将他们联合起来进行调试,该阶段就是数据库的试运行。该阶段是数据库生命周期的第二个用户磨合期。
试运行取得满意后,数据库应用系统开发工作完成,可以投入正式运行。此后,系统进入维护阶段。维护阶段的工作为:
- 数据库性能监测、分析和改进
- 数据库的转储和恢复
- 数据库的完整性和安全性
- 二次修改问题