第5章数据库设计••需求分析的任务:–通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。•需求分析的步骤:–分析用户活动–确定系统范围–分析用户活动所涉及的数据––分析系统数据•需求分析的方法:–面向数据流的结构化分析方法(SA)–采用自顶向下逐层分解的政策,画出应用系统的数据流图;–数据流图表达数据和处理过程的关系;–在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。–系统中的数据则借助数据词典(DataDictionary,DD)来描述。画数据流图的一般步骤:•画数据流应注意的问题:–命名不论数据流、数据文件还是加工,合适的命名使人们易于理解其含义。–每个加工至少有一个输入数据流和一个输出数据流;–编号子图编号是父图相应加工的编号,由子图号、小数点及局部号组成。–父图与子图的平衡子图的输入、输出流同父图相应加工的输入、输出流必须一致;数据词典(1)数据流表5.1在数据词典的定义式中出现的符号符号含义实例及说明=被定义为+与x=a+b,表示x由a和b组成,例借书单=读者编号+图书编号[…|…]或x=[a|b],表示x由或b组成,例读者要求=[借书|还书]{…}重复x={a}表示x由0个或多个a组成(…)可选x=(a),表示a可以在x中出现,也可不出现¨连接符x=1¨9,表示x可取1到9中的任意一个值(2)数据文件数据文件条目是对数据文件的定义,每个数据文件包括文件名、数据组成和数据组织等。例:图书借还管理系统文件名:读者文件数据组成:{读者编号+姓名+班号}数据组织:按读者编号递增排列(3)数据项条目数据项条目是不可再分的数据单位,包括数据项的名字、数据类型和长度等。例:读者编号=C(13)姓名=C(12)借书日期=D(8)借否=[.T.|.F.]罚款数=N(5,1)(4)加工条目•加工条目主要是说明加工的功能与处理要求。功能是指处理过程用来做什么,处理要求是指处理频度要求,如单位时间处理多少事务、多少数据量、响应时间要求等。•例如编号为2.1的加工条目说明如下:–加工编号2.1–加工名字借书查找–根据借书单中读者编号,确定是否为有效读者(是指在读者文件中能够找到该编号的读者记录);然后根据借书单中的图书编号,在图书文件中查找该编号且尚未借出的图书记录。5.3概念结构设计•概念结构设计阶段的目标:是产生整体数据库概念结构,即概念模式。•描述概念结构的有力工具是E-R模型。•设计概念结构的E-R模型可采用4种策略:–自顶向下–自底向上:首先定义各局部应用的概念结构E-R模型,然后将它们集成,得到全局概念E-R模型。–由里向外–混合策略5.3.1局部应用E-R模型设计利用数据流程图和数据词典、系统分析报告,建立对应于每一部门(或应用)的局部E-R模型。最关键的问题是:确定实体和实体属性。最大的困难是实体和属性的正确划分,在划分时,首先按现实世界中事物的自然划分来定义实体和属性,然后进行调整;调整原则:实体各描述它的属性间保持1:1或n:1的联系。描述实体的属性本身不能再有需要描述的性质。5.3.2总体概念E-R模型设计•综合局部E-R模型得到总体E-R模型,方法如下:–多个局部E-R图一次综合;–多个局部E-R图逐步综合,用累加的方式一次综合两个E-R图。•步骤:合并:解决各局部E-R图之间的冲突问题,生成初步的E-R图。–修改和重构,消除不必要的冗余,生成基本的E-R图。•1.消除冲突,合并局部E-R图–(1)属性冲突•属性域冲突,即属性值的类型、取值范围或取值集合不同。•属性的取值单位冲突,比如重量,可能用斤、公斤、克为单位。–(2)结构冲突•同一事物,不同的抽象;•同一实体在不同的应用中属性组成不同,包括个数、次序。•同一联系,在不同应用中呈现不同类型。–(3)命名冲突•同名异义,不同意义的事物具有相同的名字;•异名同义(一义多名),同一意义的事物具有不同的名字;–属性冲突和命名冲突可以通过协商来解决,结构冲突则要认真分析后通过技术手段解决。2.消除不必要的冗余冗余的数据:是指可由基本数据推导出的数据;冗余的联系:是由其他联系导出的。冗余存在的问题:容易破坏数据库的完整性,给数据库的维护增加困难,所以该消除。消除冗余的方法:分析方法。消除了冗余的初步E-R图称为基本的E-R图。5.4逻辑结构设计E-R模型表示的概念模型独立于任何一种数据模型,独立于任何一个具体的数据库管理系统(DBMS)。必须将E-R模型表示的概念模型转换为某个具体的数据库管理系统所支持的数据模型。E-R模型向关系模型的转换:若实体间的联系是1:1联系,可以在两个实体类型转换成的两个关系模式的任意一个中加入另一个关系模型的主码和联系类型的属性;若实体间的联系是1:n联系,则在n端实体类型转换成的关系模式中,加入1端实体类型转换成的关系模式的主码和联系类型的属性;若实体间的联系是m:n联系,则将联系类型也转换成关系模式,其属性为两端实体类型的主码加上联系类型的属性,而该主码为两端实体主码的组合。关系规范化:1.考查关系模式的函数依赖关系,确定范式等级。2.对关系模式进行合并和分解。实际应用中并非规范化程序越高越好。关系模式的优化:反复修改、调整和重构模式。5.5物理结构设计物理设计是在计算机的物理设计上确定应采取的数据存储结构和存取方法,以及如何分配存储空间等问题。目前使用的关系型DBMS将自动完成物理设计的主要工作;用户只要创建数据库、数据表,关心索引文件的创建即可。5.6数据库的实施与维护应用程序设计与编写:进行人机过程设计、建表、输入和输出设计、代码设计、对话设计、网络各和安全保护等程序模块设计及编写调试。组织数据入库:使用命令向数据库输入数据;一般设计一个数据录入子系统来完成数据入库工作。子系统包括数据录入、数据检验、代码转换、数据的完整性及安全性控制等。应用程序的调试与试运行:要尽可能多地发现和解决程序中存在的问题,把试运行的过程当作进一步调试程序的过程。数据库的运行和维护:数据库系统投入正式运行,标志着开发任务的基本完成和维护工作的开始,但并不意味设计过程已经结束;在运行和维护数据库的过程中,调整与修改数据库及其应用程序的事是常有的,因为应用程序环境发生改变、用户对信息的要求和处理方法也是发展着的,所以只要数据库存在一天,对系统的调整和修改就会继续一天。