第2章关系数据库设计需求分析:准确了解与分析用户的需求(包括数据与处理)。概念结构设计:对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。(E-R图)逻辑结构设计:将概念模型转换为某个DBMS所支持的数据模型,并对其进行优化。物理结构设计(数据库实现):为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。数据库实施:建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。数据库运行和维护:对数据库系统进行评价、调整与修改。2.1需求分析阶段进行数据库设计首先必须准确了解与分析用户需求,包括数据与处理需求。需求分析是数据库设计的第一阶段,本阶段所得的结果是下一阶段——系统的概念结构设计的基础。如果需求分析有误,则以它为基础的整个数据库设计将成为毫无意义的工作。而需求分析也是数据库设计人员感觉最繁琐和困难的一步。2.1.1需求分析的任务获得用户对数据库的如下要求:信息要求:了解用户获得信息的内容、性质及其联系、存储哪些数据。处理要求:了解用户希望数据库应用系统对数据进行什么处理,对各种数据处理的响应时间,处理的频率,数据处理方式的要求。安全性要求:了解用户对数据库中存放的信息的安全保密要求。完整性要求:了解用户对数据库中存放的信息应满足什么样的约束条件。2.1.2需求分析步骤①收集资料②分析整理③数据流图(DFD)用数据流图来描述系统的功能。④数据字典对数据流图中的数据流和加工等进一步定义,从而完整地反映系统需求。⑤用户确认需求分析得到的数据流图和数据字典要返回给用户,通过反复完善,最终取得用户的认可。2.1.3阶段成果系统需求说明书。包括数据流图、数据字典、系统功能结构图以及必要的说明。1.数据流程图(DFD)数据流程图的符号说明如下:数据流代表数据流,箭头表示数据流动的方向加工或称为处理,代表数据的处理逻辑文件或称为数据库存储文件,代表数据存储外部实体代表系统之外的信息提供者或使用者(1)数据流:由一组确定的数据组成。数据流用带名字的箭头表示,名字表示流经的数据,箭头则表示流向。例如,“成绩单”数据流由学生名、课程名、学期、成绩等数据组成。(2)加工:是对数据进行的操作或处理。加工包括两方面的内容:一是变换数据的组成,即改变数据结构;二是在原有的数据内容基础上增加新的内容,形成新的数据。例如,在学生学习成绩管理系统中,“选课登记”是一个加工,它把学生信息和开课信息进行处理后生成学生的选课清单。(3)文件:数据暂时存储或永久保存的地方。如:学生表、开课计划表。(4)外部实体:指独立于系统而存在的,但又和系统有联系的实体。它表示数据的外部来源和最后的去向。确定系统与外部环境之间的界限,从而可确定系统的范围。外部实体可以是某种人员、组织、系统或某事物。例如,在学生学习成绩管理系统中,家长可作为外部实体存在,因为家长不是该系统要研究的实体,但它可以查询本系统中有关的学生成绩。构造DFD的目的是使系统分析师与用户进行明确的交流,指导系统设计,并为下一阶段的工作打下基础。所以DFD既要简单,又要容易被理解。构造DFD通常采用自顶向下、逐层分解,直到功能细化为止,形成若干层次的DFD。如下页图是学校成绩管理系统的第一层数据流程图。如果需要,还可以对其中的三个处理过程分别作第二层数据流程图。成绩管理的第一层数据流程图(部分)选课登记处理学生信息表开课计划表学号、班级开课号、班级选课清单课程成绩表重读、重修处理成绩录入处理选课清单成绩单成绩单重读、重修表重读、重修登记清单重读、重修成绩单教科办成绩重读、重修登记清单2.数据字典(DD)数据字典是以特定格式记录下来的,对数据流程图中各个基本要素(数据流、文件、加工等)的具体内容和特征所作的完整的对应和说明。数据字典是对数据流程图的注释和重要补充,它帮助系统分析师全面确定用户的要求,并为以后的系统设计提供参考依据。数据字典的内容包括:数据项、数据结构、数据流、加工、文件、外部实体等,一切在数据定义需求中出现的名称都必须有严格的说明。在数据库设计过程中,数据字典被不断地充实、修改、完善。下面以成绩管理数据流图中几个元素的定义加以说明:(1)数据项名:成绩别名:分数描述:课程考核的分数值定义:数值型,带一位小数取值范围:0~100(2)数据结构名:成绩单别名:考试成绩描述:学生每学期考试成绩单定义:成绩清单=学生号+开课号+学期+考试成绩(3)加工名:选课登记处理输入数据流:学期、学生号、开课号、课程号输出数据流:选课清单加工逻辑:把选课者的学生号、所处的学期号、以及所选的开课号、课程号记录进数据库中处理频率:根据学校的学生人数而定,具有集中性(4)文件名:学生信息表简述:用来记录学生的基本情况组成:记录学生各种情况的数据项,如学生号、姓名、性别、政治面貌、专业、班级号等读文件:提供各项数据的显示,提取学生的信息写文件:对学生情况的修改、增加或删除3、系统功能结构图如:教学管理系统功能模块图2.2概念结构设计阶段概念设计阶段的目标是产生整体数据库概念结构,即概念模式。概念模式是整个组织各个用户关心的信息结构。描述概念结构的有力工具是E-R图(也称实体-联系图,提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型)。1.E-R图的组成要素及其画法实体名联系名属性名实体表示属性表示联系表示2.实体间不同联系情况的E-R图表示法联系分为:一对一(1:1)、一对多(1:n)、多对多(m:n)例:假设某学院有若干个系,每个系只有一个主任。主任和系之间是一对一的关系。主任和系的属性分别如下:主任——编号,姓名,年龄,学历;系——系编号,系名主任和系之间是一个管理关系•描述主任和系之间的E-R图可如下图:1主任系管理1姓名年龄学历编号系编号系名例:两个实体集之间的一对多的联系的绘制方法。假设在某仓库管理系统中,有两个实体集:仓库和商品。仓库用来存放商品,且规定一类商品只能存放在一个仓库中,一个仓库可以存放多件商品。仓库和商品之间是一对多的联系。仓库和商品的属性分别如下:仓库——仓库号,地点,面积商品——商品号,商品名,价格在存放联系中要反映出存放商品的数量。描述仓库和商品之间的E-R图可如下图所示1仓库商品存放n地点面积仓库号商品号价格数量商品名例:两个实体集之间的多对多的联系的绘制方法。假设在某教务管理系统中,一个教师可以上多门课,一门课也可以由多个老师去上。教师和课程之间是多对多的联系。教师和课程可用以下属性来描述:教师——教师号,教师名,职称课程——课程号,课程名,班级在“讲授”联系中应能反映出教师的授课质量。描述教师和课程之间的E-R图可如下图所示。m教师课程讲授n教师名职称教师号课程号班级质量课程名E—R图的设计方法E-R图通常都应经过以下两个阶段:(1)针对每一用户画出该用户信息的局部E—R图,确定该用户视图的实体、属性和联系。需注意的是:能作为属性的就不要作为实体,这有利于E—R图的简化。(2)综合局部E—R图,生成总体E—R图。在综合过程中,同名实体只能出现一次,还要去掉不必要的联系,以便消除冗余。一般来说,从总体E—R图必须能导出原来的所有局部视图,包括实体、属性和联系。例:某学校管理系统中有三个部门:后勤部、学生处和财务处。后勤部用来管理学生的住宿;教务处用来管理学生选课和教师任课;财务处用来管理发放教师的工资。后勤部涉及到的实体及实体之间的联系如下:学生:属性有学号、姓名、性别、年龄、专业和入学时间宿舍:楼号、房间、档次学生与宿舍的联系是一个学生只能住在一个宿舍,一个宿舍能住多个学生,学生住宿要交租金。教务处涉及到的实体及实体之间的联系如下:学生:属性有学号、姓名、性别、年龄、专业和入学时间教师:属性有教师号、姓名、性别、职称、专业课程:属性有课程号、课程名、学时数、专业各实体关系描述如下:一个学生可以选多门课,一门课可以由多个学生选修;一个教师可以教多门课,一门课也可以由多个老师教;学生选修某门课有一个成绩;教师教某门课有一个质量评价。财务处涉及到的实体及实体之间的联系如下:教师:属性有教师号、姓名、性别、职称、专业工资:属性有基本工资、加班工资、扣税、工资编号教师和工资的联系是:一个教师只能领一份工资,一份工资只能由一个教师领,领工资时应注明是某月工资。解:先根据题意设计出各部门的局部E-R图n学生宿舍住1租金学生姓名专业学号宿舍楼号档次年龄性别入学时间房间号(a)后勤部的局部E-R图教师姓名职称教师号课程课程号学时数课程名性别专业专业m教师课程讲授n质量学生选修mn成绩(b)教务处的局部E-R图(学生同(a)图)工资扣税基本工资加班工资工资编号工资教师领11月份1m学生住宿舍n1教师课程选修mn讲授n领工资1(c)财务处的局部E-R图(教师同(b)图)某学校管理系统的全局E-R图2.3逻辑结构设计阶段E-R模型是数据库的一种概念模型,关系数据库采用的模型是关系模型,因此,必须将E-R模型转化为关系模型。逻辑模型设计阶段的任务是将概念模型转换为某个具体的数据库管理系统所支持的数据模型。E-R模型向关系模型转换一般遵循如下原则:(1)一个实体型(如:班级、学生、教师、课程)转换为一个关系模式。实体的属性就是关系的属性,实体的关键字就是关系的关键字。(2)一个1:1联系(如:领导)可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转化为一个独立的关系模式,则相连的每个实体的关键字及该联系的属性是该关系模式的属性,每个实体的关键字是该关系模式的候选关键字。(3)一个1:n联系(如:所属)可以转化为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转化为一个独立的关系模式,与该联系相连的各实体的关键字及联系本身的属性均转换为关系的属性,而关系的关键字为n端实体的关键字。(4)一个M:N联系(如:学习)转换为一个关系模式,与该联系相连的各实体的关键字以及联系本身的属性均转换为关系的属性,而关系的关键字为各实体关键字的组合。(5)三个以上(如:供应)的实体间的一个多元联系可以转化为一个关系模式,与该多元联系相连的各实体的关键字及联系本身的属性转化为关系的属性,而该关系的关键字为各实体关键字的组合。例,根据调查、分析构建了如下E-R图,要求将之转换为一组对应的关系模式。其对应的一组关系为:(1)实体转换结果:领导M供应商供应物资项目NP参加部门属于职工MN1N11天数供应量①供应商(供应商编号,供应商名称,电话,帐号…)②物资(物资编号,物资名称,型号规格,计量单位,价格…)③项目(项目编号,预算,开工日期,预计完成时间…)④职工(职工编号,姓名,出生日期,职称…)⑤部门(部门编号,部门名称…)(2)联系转换结果:①供应(供应商编号,项目编号,物资编号,供应量)②参加(职工编号,项目编号,参加天数)③领导,该联系并入“部门”实体,则“部门”的关系模式修改为:部门(部门编号,部门名称,领导者职工编号…)④属于,该联系并入“职工”实体,则“职工”的关系模式修改为:职工(职工编号,姓名,部门编号,出生日期,职称…)2.3.4函数依赖与范式1、函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。例如:有学生关系模式R(学号,姓名,性别)通过分析,学号→姓名,所以说姓名依赖于学号。性别→学号,性别→姓名,姓名→性别,姓名→学号的函数依赖关系都不成立。2、完全函数依赖在关系模式R(U)中,设X、Y是关系模式R(U)种不同的属性子集,若存在X→Y,且不存在X的任何真子集X’,使得X’→Y,则称Y完全函数依赖于X。例如:选修关系模式R(学号,课程号,成绩)是完全函数依赖。通过分析,一个学生的成绩完全依赖于学生的学号和课程号,因为只有学生的学号和他所选的课程号确定之后,该生这门课的成绩才是唯一的。所