第十二章 数据库设计方法
12.1 数据库设计概述
数据库设计
数据库设计是指利用现有的数据库管理系统,针对具体的应用对象构建合适的数据模式,建立数据库及其应用系统,使之能有效地收集、存储、操作和管理数据,满足企业中各类用户的应用要求。
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。
数据库设计基本步骤
1.需求分析阶段
进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理需求分析)。
2.概念设计阶段
它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
3.逻辑设计阶段
将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4.物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5.数据库实施阶段
设计人员运用DBMS提供的数据库语言(如SQL)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6.数据库运行和维护阶段
对数据库系统进行评价、调整与修改。
数据库设计过程中的各级模式
数据库设计工具
数据库设计更侧重于数据建模,而程序设计更侧重于业务建模。
在真实的软件开发环境中,数据建模与业务建模两者是相辅相成的,不可或缺。
在关系数据库数据建模时,数据库的开发人员经常使用ERwin、PowerDesigner、Rational Rose以及Visio等CASE工具创建E-R图,然后使用ERwin、PowerDesigner以及Visio等工具直接创建数据库或者直接生成SQL脚本文件。
12.2 系统需求分析
1.需求分析
需求分析是设计数据库的起点,需求分析的结果是否准确反映用户的实际需求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。
需求分析的任务是通过详细调查现实世界处理的对象(如组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
用户对数据库要求:
信息要求:了解用户获得信息的内容、性质及其联系、存储哪些数据
处理要求:了解用户希望数据库应用系统对数据进行什么处理,对各种数据处理的相应时间,处理的频率。数据处理方式的要求。
安全性要求:了解用户对数据库中存放的信息的安全保密要求。
完整性要求:了解用户对数据库中存放的信息应满足什么样的约束条件。
2.需求分析的方法
需求分析步骤:
收集资料:是数据库设计人员和用户共同完成。确定企业组织的目 标,从这些目标导出数据库的总体要求。
分析整理:对所收集到的数据进行抽象的过程。
分析整理:对所收集到的数据进行抽象的过程。
数据字典:是系统中各类数据描述的集合,包括数据项、数据结构、 数据流、数据存储和处理过程。
用户确认:需求分析得到的数据流图和数据字典要返回给用户,通过反复完善,最终取得用户的认可。
调查用户需求的方法
跟班作业
开调查会
请专人介绍
询问
问卷调查
查阅记录
3.数据流图
数据流图表达了数据和处理过程的关系。
在SA方法中,处理过程的处理逻辑常常借助于判定表或判定树来描述。
系统中的数据则借助于数据字典(Data Dictionary,DD)来描述。
对用户需求进行分析与表达后,必须提交给用户,征得用户的认可。
数据流图符号说明:
图书管理系统的数据流
(1) 注册。
(2) 借书。
(3)还书。
(4) 图书查询。
4.数据字典
数据字典是对数据流图的注释和重要补充,它帮助系统分析人员全面确定用户的要求,并为以后的系统设计提供参考依据。
数据字典的内容包括:数据项、数据结构、数据流、数据存储和处理过程5个部分。
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
1.数据项
数据项是不可再分的数据单位 】
对数据项的描述:
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}
取值范围、与其他数据项的逻辑关系定义了数据的完整性约束条件
2.数据结构
数据结构反映了数据之间的组合关系。
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
3.数据项
数据流是数据结构在系统内传输的路径。
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
数据流来源是说明该数据流来自哪个过程
数据流去向是说明该数据流将到哪个过程去
平均流量是指在单位时间(每天、每周、每月等)里的传输次数
高峰期流量则是指在高峰时期的数据流量
4.数据存储
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
数据存储描述={数据存储名,说明,编号,流入的数据流 ,流出的数据流,组成:{数据结构},数据量,存取方式}
流入的数据流:指出数据来源
流出的数据流:指出数据去向
数据量:每次存取多少数据,每天(或每小时、每周等)存取几次等信息
存取方法:批处理 / 联机处理;检索 / 更新;顺序检索 / 随机检索
5.处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息
处理过程描述={处理过程名,说明,输入:{数据流}, 输出:{数据流},处理:{简要说明}}
简要说明:主要说明该处理过程的功能及处理要求
功能:该处理过程用来做什么
处理要求:处理频度要求(如单位时间里处理多少事务,多少数据量);响应时间要求等
处理要求是后面物理设计的输入及性能评价的标准
成绩管理系统数据流图的应用举例
(1)数据项名:成绩。
说明:课程考核的分数值。
别名:分数。
数据类型:数值型,带一位小数。
取值范围:0~100。
(2)数据结构名:成绩单。
别名:考试成绩。
描述:学生每学期考试成绩单。
定义:成绩清单=学生号+课程号+学期+考试成绩。
(3)处理过程:选课登记处理。
输入数据流:学期、学生号、课程号。
输出数据流:选课清单。
说明:把选课学生的学生号、所处的学期号、所选的课程号记录在数据库中。
(4)数据存储名:学生信息表。
说明:用来记录学生的基本情况。
组成:记录学生各种情况的数据项,如学生号、姓名、性别、专业、班级等。
流入的数据流:提供各项数据的显示,提取学生的信息。
流出的数据流:对学生情况的修改、增加或删除。
12.3 概念结构设计
概念结构设计
概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模型。
(1)从逻辑设计中分离出概念设计以后,各阶段的任务相对单一化,设计复杂程度大大降低,便于组织管理。
(2)概念模型不受特定的DBMS的限制,也独立于存储安排和效率方面的考虑,因而比逻辑模型更为稳定。
(3)概念模型不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而更有可能准确反映用户的信息需求。
概念模型的特点
(1) 语义表达能力丰富
(2) 易于交流和理解
(3) 易于修改和扩充
(4) 易于向各种数据模型转换
概念结构设计的方法与步骤
1 设计方法:
⑴自顶向下。首先定义全局概念结构的框架,然后逐步细化。
⑵自底向上。首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。
⑶逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。
⑷混合策略。即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
2 设计步骤
(1)进行数据抽象,设计局部 E-R 模型。
(2)集成各局部 E-R 模型,形成全局 E-R 模型.
3 数据抽象和局部E-R模型设计
数据抽象
1.分类:将一类具有共同特性和行为的对象定义为一种类型,如E-R模型中的实体型。
2.聚集:定义某类型的组成成分,对应E-R模型中实体的属性。
3.概括:定义类型之间的子集联系,形成超(父)类、子类。
概括的重要性质:继承,即子类集成超类的所有抽象,是E-R模型的抽象机制的扩充。
局部 E-R 模型设计
选择局部应用:中层数据流图为依据
逐一设计局部E-R图
根据数据抽象后所得的DD,并参照DFD
标定局部应用中的实体、实体属性、实体码
确定实体间的联系及类型
属性确定原则:
不能再具有需要描述的性质。
不能与其他实体具有联系。
局部视图必须满足条件:
(1) 对用户需求是完整的。
(2) 所有实体、属性、联系都有唯一的名字。
(3) 不允许有异名同义、同名异义的现象。
(4) 无冗余的联系。
全局E-R模型设计
全局E-R模型设计两个步骤。
(1)合并,消除各局部 E-R 图之间的冲突,生成初步 E-R 图。
依靠协商或应用语义消除各局部E-R图之间的冲突
属性冲突:如属性的类型、取值范围冲突,或属性取值单位冲突
命名冲突:如同名异义,或一义多名 结构冲突:
如不同应用中,同一对象有不同的抽象或同一实体包含的属性不完全相同。
(2)优化,消除不必要的冗余,生成基本 E-R 图。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步