第六章数据库设计第六章数据库设计6.1数据库设计概述6.2需求分析6.3概念结构设计6.4逻辑结构设计6.5数据库的物理设计6.6数据库实施6.7数据库运行与维护6.8小结6.1数据库设计的步骤(1)•目前主要采用以逻辑数据库设计和物理数据库设计为核心的规范设计方法。逻辑数据库设计-设计全局逻辑结构和每个用户的局部逻辑结构,将概念结构转换为某个DBMS支持的数据模型并优化物理数据库设计-为逻辑数据模型选一个最适合应用环境的物理结构,设计数据库的存储结构、存取方法及其他实现细节6.1数据库设计的步骤(2)•选定参加设计的人员:数据库分析设计人员-核心,自始至终用户-重要,需求分析(头),运行和维护(尾)程序员-编制程序操作员-准备软硬件环境数据库设计过程图需求分析概念结构设计数据库实施数据库运行和维护逻辑结构设计数据库物理设计6.2需求分析6.2.1任务•重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性和完整性要求信息要求-用户需从库中获得信息的内容和性质,存储哪些信息于库中处理要求-要求完成的功能、响应时间、方式是批处理还是联机处理6.2需求分析6.2.1任务•困难在:用户缺少计算机知识,无法准确表达自己的需求,需求往往不断变化设计人员缺乏用户的专业知识,不易理解甚至误解用户的需求。软硬件技术的出现会使用户需求发生变化6.2需求分析6.2.2需求分析的方法(1)•调查与初步分析用户需求需四步:调查组织机构情况:部门组成、职责,为分析信息流程做准备调查各部门业务活动情况:输入和使用什么数据,如何加工处理这些数据,输出什么信息、到哪里、输出结果的格式协助用户明确对新系统的要求确定新系统边界,哪些是计算机完成的功能6.2需求分析6.2.2需求分析的方法(2)•常用的调查方法:跟班作业开调查会-用户彼此启发请专人介绍询问-专人设计调查表请用户填写查阅记录-与原系统有关的数据记录6.2需求分析•分析和表达用户需求的方法主要包括:自顶向下(SA)和自底向上方法自顶向下(SA)方法从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并用数据流图和数据字典描述系统用SA方法做需求分析,设计人员需要把任何一个系统都抽象为如下形式数据存储数据流数据流数据来源处理数据输出•然后将处理功能分解,不停分解,直至系统工作过程被表达清楚;数据也逐级分解,形成若干层次的数据流图。•数据流图表达了数据和处理过程的关系数据借助数据字典描述处理过程的处理逻辑借助判定表或判定树来描述实例:开发学校管理系统•高层数据流图管理信息系统教师管理子系统后勤管理子系统学生管理子系统课程管理学籍管理实例(续)•学生管理子系统的主要功能:学籍管理和课程管理。包括:学生报到、入学、毕业、上课情况管理。通过详细的信息流程分析和数据收集后,生成该系统的数据流图。见188-1896.3概念结构设计6.3.1概念结构设计方法与步骤•概念结构设计--将需求分析得到的用户需求抽象为概念模型的过程•概念结构独立于数据库逻辑结构,也独立于DBMS•四类方法:自顶向下自底向上—经常采用。即自顶向下进行需求分析,再自底向上设计概念结构。逐步扩张-先定义核心概念,然后向外扩充混合策略6.3.2分E-R图设计(1)•在多层数据流图中选择一个适当层次的数据流图,让每一部分对应一个局部应用,因为中层的数据流图能较好地反映系统中各局部应用的子系统组成,所以一般作为分E-R图的依据•参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型。6.3.2设计分E-R图(2)•现实世界中一组具有共同特性和行为的对象可抽象为一个实体,例,张三、李斯、王五可抽象为学生实体•对象的组成成分可抽象为实体的属性,例,学号、姓名、年级等可抽象为学生实体的属性,其中学号为标识实体的码•实体与属性很难划分界限。例,系是学生实体的属性,在需要考虑系主任、教师人数、学生人数、办公地点时就需要作为实体了。6.3.2设计分E-R图(3)•属性和实体区别的原则:属性不能再具有需要描述的性质。即为不可再分的数据项属性不能与其他实体具有联系。联系只能发生在实体之间。能做属性对待尽量作属性。“职称”分别作为实体和属性教师教师职称住房姓名职称性别性别姓名评定分配学籍管理分E-R图草图班主任班级档案材料学生宿舍教室管理指导归档住宿组成上课对学籍管理E-R草图调整•一般,性别应作为学生实体的属性,本应用中由于宿舍分配与性别有关,依据准则2-属性不能与其他实体有联系,性别应作为实体对待•数据存储“学生登记表”由手工完成,有用部分转入学生档案材料中,因此这里不必作为实体。学籍管理分E-R图草图调整后班主任班级档案材料学生宿舍教室管理指导归档住宿组成上课性别拥有课程管理的E-R图教室课程教师教科书学生开设教学讲授选修成绩6.3.3E-R图的集成(1)•不同设计人员进行局部视图设计,这导致各分E-R图之间存在许多不一致的地方,因此着力消除冲突是主要工作与关键所在•1.属性冲突-讨论协商解决属性域冲突:属性值的类型、取值范围、取值集合不同属性取值单位冲突6.3.3E-R图的集成(2)•2.命名冲突-讨论协商解决同名异义异名同义•3.结构冲突同一对象在不同应用中具有不同的抽象-例,“课程”在某一局部应用中当作实体,另一局部应用中当作属性解决办法:使同一对象有相同的抽象,遵守前面的属性原则6.3.3E-R图的集成(3)•3.结构冲突同一实体在不同E-R图中所包含的属性不完全相同,或排列次序不完全相同解决办法:取分E-R图的并集,再适当设计属性的次序实体间联系在不同视图中呈现不同类型解决办法:根据应用的语义对实体联系的类型进行综合或调整学籍管理与课程管理E-R图的合并•存在的冲突:1.班主任也属于教师,两图存在异名同义,统一为教师实体,属性构成为:教师{职工号,姓名,性别,职称,优秀班主任否}2.班主任改为教师后,教室和学生之间的联系为两类,因为“指导”包含在“教学”中,所以综合为教学联系3.性别在学籍管理为实体,在课程管理中为属性,合并后只能作为实体,否则无法与宿舍实体发生联系4.二者中学生实体属性组成及次序都存在差异,应将所有属性综合并重新调整次序。6.3.3E-R图的修改与重构(1)•修改与重构-消除不必要的冗余信息,生成基本E-R图•冗余数据-可由基本数据导出•冗余的实体间联系-可由其它联系导出冗余信息易破坏数据库的完整性,给数据维护增加困难,但有时为了提高某些应用的效率不得不以冗余信息为代价。6.3.3E-R图的修改与重构(2)•消除冗余主要采用分析方法,例如教师工资单里的实发工资,可以推算•消除冗余还可采用规范化理论例,学生实体的年龄可由生日推算,属冗余数据教室实体与班级实体的上课联系可由教室与课程间的开设联系、课程与学生间的选修联系、学生与班级之间的组成联系推导出来,属于冗余联系学生实体中平均成绩可由选修联系中的成绩属性推算,但经常查询,为维护数据一致性,应设置触发器整体概念结构(总E-RT图)必须验证•整体概念结构内部必须具有一致性•整体概念结构能准确反映原来的每个视图结构•整体概念结构能满足需求分析阶段所确定的所有要求6.4逻辑结构设计•逻辑结构设计的任务–概念结构是各种数据模型的共同基础–为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。6.4逻辑结构设计•逻辑结构设计的步骤–将概念结构转化为一般的关系、网状、层次模型–将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换–对数据模型进行优化逻辑结构设计转化为一般数据模型转化为特定DBMS支持下的据模型优化模型概念结构设计数据库物理设计基本E-R图转换规则特定DBMS的特点与限制优化方法如规范化理论逻辑模型6.4逻辑结构设计6.4.1E-R图向关系模型的转换6.4.2向特定DBMS规定的模型进行转换6.4.3数据模型的优化6.4.4设计用户子模式6.4.1E-R图向关系模型的转换•转换内容•转换原则E-R图向关系模型的转换(续)•转换内容–E-R图由实体、实体的属性和实体之间的联系三个要素组成–关系模型的逻辑结构是一组关系模式的集合–将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。E-R图向关系模型的转换(续)•转换原则⒈一个实体型转换为一个关系模式。–关系的属性:实体型的属性–关系的码:实体型的码例,学生实体可以转换为如下关系模式:学生(学号,姓名,出生日期,所在系,年级,平均成绩)性别、宿舍、班级、档案材料、教师、课程、教室、教科书等实体都分别转换为一个关系模式。学生学号出生日期年级所在系平均成绩姓名E-R图向关系模型的转换(续)⒉一个m:n联系转换为一个关系模式。–关系的属性:与该联系相连的各实体的码以及联系本身的属性–关系的码:各实体码的组合例,“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码:选修(学号,课程号,成绩)学生选修成绩课程学生的码为学号,课程的码为课程号,选修的属性为成绩E-R图向关系模型的转换(续)⒊一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。–1)转换为一个独立的关系模式•关系的属性:与该联系相连的各实体的码以及联系本身的属性•关系的码:n端实体的码E-R图向关系模型的转换(续)⒊一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。–2)与n端对应的关系模式合并•合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性•合并后关系的码:不变–可以减少系统中的关系个数,一般情况下更倾向于采用这种方法E-R图向关系模型的转换(续)例,“组成”联系为1:n联系。将其转换为关系模式的两种方法:1)使其成为一个独立的关系模式:组成(学号,班级号)(见下页)2)将其与学生关系模式合并:学生(学号,姓名,出生日期,所在系,年级,班级号,平均成绩)班级1组成n学生学生的码为学号,班级的码为班级号,选修的属性为成绩E-R图向关系模型的转换(续)⒋一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。–1)转换为一个独立的关系模式•关系的属性:与该联系相连的各实体的码以及联系本身的属性•关系的候选码:每个实体的码均是该关系的候选码E-R图向关系模型的转换(续)⒋一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。–2)与某一端对应的关系模式合并•合并后关系的属性:加入对应关系的码和联系本身的属性•合并后关系的码:不变E-R图向关系模型的转换(续)例,“管理”联系为1:1联系,可以有三种转换方法:(1)转换为一个独立的关系模式:管理(职工号,班级号)或管理(职工号,班级号)(2)“管理”联系与班级关系模式合并,则只需在班级关系中加入教师关系的码,即职工号:班级(班级号,学生人数,职工号)(3)“管理”联系与教师关系模式合并,则只需在教师关系中加入班级关系的码,即班级号:教师(职工号,姓名,性别,职称,班级号,是否为优秀班主任)E-R图向关系模型的转换(续)注意:从理论上讲,1:1联系可以与任意一端对应的关系模式合并。但在一些情况下,与不同的关系模式合并效率会大不一样。因此究竟应该与哪端的关系模式合并需要依应用的具体情况而定。由于连接操作是最费时的操作,所以一般应以尽量减少连接操作为目标。例如,如果经常要查询某个班级的班主任姓名,则将管理联系与教师关系合并更好些。E-R图向关系模型的转换(续)⒌三个或三个以上实体间的一个多元联系转换为一个关系模式。–关系的属性:与该多元联系相连的各实体的码以及联系本身的属性–关系的码:各实体码的组合例,“讲授”联系是一个三元联系,可以将它转换为如下关系模式,其中课程号、职工号和书号为关系的组合码:讲授(课程号,职工号,书号)E-R图向关系模型的转换