一章数据库技术及应用.ppt
第4章 数据库技术及应用,计算机教学实验中心2006,软件开发技术基础,第2/共67页,问题的提出,如何创建数据库?创建数据库有哪些步骤?使用什么工具创建数据库?,第3/共67页,第二部分 数据库设计,需求分析概念设计逻辑结构设计物理结构设计数据库实施阶段,第4/共67页,一、需求分析与概念设计,1需求分析2概念设计,第5/共67页,1需求分析,任务:收集、分析、理解、确定用户的要求;再把用户的要求精确、完整地描述表达出来。目的:回答“要解决什么问题?”,既系统“做什么?”。具体:详细调查要处理的对象了解原系统工作概况确定新系统的功能考虑今后可能的扩充和改变,第6/共67页,了解用户需求有关的问题,什么是需求?希望,功能,限制,必需品,任何必要的东西;什么时候?从确定方案开始;为什么?用户的需求是开发需要的依据;来自哪里?来自用户,工业标准,和实践经验;如何实现?使所有相关的人参与需求分析活动,通过有效的交流实现;谁来做?用户,管理人员,开发人员,维护人员。,第7/共67页,用户参与需求分析的重要性,根据Standish Group 1994年发表的一份研究报告统计,延迟的、超出预算的、未完成工程的最普遍的原因是:缺少用户参与;不完备的需求规范;改变需求规范。,第8/共67页,需求分析的难点,问题的复杂性 涉及因素多而;如运行环境和系统功能等。交流障碍 涉及不同类型人员较多,知识背景、角度、角色的不同;不完备性和不一致性 用户对问题的陈述有矛盾、片面性等造成;需求易变性 需求是变化的。,第9/共67页,需求工作的重要性,IBM公司有关研究的结果表明:有效的需求管理可以降低开发成本。通常改正需求错误需要付出改正其他错误10倍以上的代价。需求错误通常导致软件工程中全部错误的25-40%。改正很少的需求错误可以避免大量耗费在返工上的成本和时间。,第10/共67页,获取用户对数据库的要求,信息要求要从数据库中获得信息的内容与性质。处理要求要完成什么处理功能,对处理的响应时间有什么要求。安全性与完整性要求 安全性:不同用户使用和操作数据库的情况;完整性:描述数据之间的关联以及数据的取值范围要求。,第11/共67页,案例分析教学管理,管理的对象:教师、学生、课程、上课和学习。功能:教师要了解学生、课程、学习的情况、学生要了解教师、课程、学习的情况。信息:教师、学生、课程、学习的有关信息;处理:查询、统计、排序、增加、删除、修改、浏览等。,第12/共67页,2概念设计,概念设计是数据库设计的核心环节。即将实际待求解的问题抽象相互关联又各自独立的实体。具体步骤:以需求分析的结果为依据;以数据流图DFD和数据字典DD提供的信息作为输入;运用信息模型工具对目标进行描述;以用户能够理解的形式表达信息。方法:用E-R方法得到概念模型E-R图。,第13/共67页,重点是“数据”和“处理”,信息要求要从数据库中获得信息的内容与性质,从而导出DB中需要存储的数据处理要求要完成什么处理功能,对处理的响应时间的要求 安全性 视图定义、访问控制、数据加密、跟踪审查完整性要求 主键不能为NULL,第14/共67页,二、概念设计,概念设计是DB设计的核心环节。概念数据模型是对现实世界的抽象和模拟。概念设计目前采用最广泛的是ER方法。将现实世界抽象为具有属性的实体及及联系。画出一张ER图,就得到了一个对系统信息的初步描述,进而形成数据库的概念模型。,第15/共67页,案例分析教学管理,教学由学生、课程、教师、学习、任课等实体组成。学生属性:学号、姓名、性别、年龄、班级课程属性:课程号、课程名称教师属性:姓名、课程号、课时学习属性:学号、课程号、分数任课属性:教师名、课程号、教室,第16/共67页,教学管理E-R图,第17/共67页,三、逻辑结构设计,设计逻辑结构分三步:将概念结构转化为一般的关系模型 将转化来的关系模型向特定DBMS支持下的数据模型转换 对数据模型进行优化,第18/共67页,1.数据库逻辑模型的产生,概念模型按一定规则可以转换成数据模型。这种转换的原则如下:一个实体转换成一个关系模式一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。一个m:n联系转换为一个 关系模式。三个或三个以上实体间的一个多元联系转换为一个关系模式。同一实体集的实体间的联系,也可以按1:1、1:n和m:n三种情况分别处理。,第19/共67页,一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的主码就是关系的主码。,学生(学号,姓名,年龄,性别),第20/共67页,一个1:1 联系转换为一个关系模式,若转换为一个独立的关系模式:各实体的主码以及联系本身的属性均转换为关系的属性,每个实体的主码均是该关系的候选码。若与一端的关系模式合并:则在该关系模式的属性中加入另一个关系模式的主码和联系本身的属性。,第21/共67页,举例,有3种方案可供选择。,第22/共67页,3种方案比较,方案1 职工(职工号,姓名,年龄)产品(产品号,产品名,价格)负责(职工号,产品号)方案2 职工(职工号,姓名,年龄,产品号)产品(产品号,产品名,价格)方案3 职工(职工号,姓名,年龄)产品(产品号,产品名,价格,职工号)方案1关系多,增加了系统的复杂性;方案2由于并非每个职工都负责产品,导致产品号属性出现NULL;方案3比较合理。,第23/共67页,1:n联系转换为关系模式,有2种方案可供选择。,第24/共67页,有2种方案,对应一个独立的关系模式:与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,而关系的主码为n端实体的主码。与n端对应的关系模式合并:联系本身的属性均换为关系的属性,再加1端实体的主码。,第25/共67页,2种方案比较,方案1 仓库(仓库号,地点,面积)产品(产品号,产品名,价格)仓储(仓库号,产品号,数量)方案2(与n端对应的关系合并)仓库(仓库号,地点,面积)产品(产品号,产品名,价格,仓库号,数量)方案1对仓储变化大的场合比较适用;方案2适应仓储变化小的应用场合。因此方案2较优。,第26/共67页,m:n联系,一个m:n联系转换为一个关系模式。与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主码的组合。,第27/共67页,m:n关系示意图,第28/共67页,转换的关系模型,学生(学号,姓名,年龄,性别)课程(课程号,课程名,学时数)选修(学号,课程号,成绩),第29/共67页,三个及以上实体间联系,三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主的组合。,第30/共67页,将多对多联系E-R图转换为关系模形,第31/共67页,举例,供应商(供应商号,供应商名,地址)零件(零件号,零件名,单价)产品(产品号,产品名,型号)供应(供应商号,零件号,产品号,数量),第32/共67页,同一实体集联系,可以按:1:1(一对一)1:n(一对多)m:n(多对多)三种情况分别处理,第33/共67页,将同实体集1:n联系转换为关系模型,方案1:转换为两个关系模式。职工(职工号,姓名,年龄)领导(领导工号,职工号)方案2:转换为一个关系模式。职工(职工号,姓名,年龄,领导工号)方案2关系少,且能充分表达原有的数据关系,故方案2较好。,第34/共67页,将同实体集m:n联系转换为关系模型,零件(零件号,名称,价格)组装(组装件号,零件号,数量)组装件号为组装后的组合零件号。,第35/共67页,2数据模型的优化,以规范化理论为指导 确定数据依赖。按需求分析,写出各属性之间的数据依赖。考查是否存在部分函数依赖、传递函数依赖等,确定各关系模式分别属于第几范式。按照需求分析对数据处理的要求,确定是否需要对它们进行合并或分解。,第36/共67页,3设计用户模式,对某一类数据的结构、联系和约束的描述称为数据模式。外模式是用逻辑数据模型对用户的数据的描述。利用视图功能设计更符合局部用户需要的用户外模式。(1)使用更符合用户习惯的别名(2)针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。,第37/共67页,三、数据库物理设计及实施,物理设备上的存储结构与存取方法称为数据库的物理结构 1确定数据的存储结构 综合考虑存取时间、存储空间利用率和维护代价3方面的因素。2设计数据的存取路径 在关系数据库中,选择存取路径主要是指确定如何建立索引。,第38/共67页,索引(Index),索引是数据库中独立的存储结构,其作用是提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。有两类索引:聚簇索引非聚簇索引,第39/共67页,(1)聚簇索引,以表格中的某个字段作为关键字建立聚簇索引时,表格中的数据会以该字段为排序依据。一个表只能建立一个聚簇索引。这种排序作用使得聚簇键相同的元组被放在同一个物理页中。如果元组过多,一个物理页放不下,则被链接到多个物理页中。,第40/共67页,(2)非聚簇索引,索引页上的顺序与物理数据页上的顺序一般不一致。建立非聚簇索引,不会引起数据物理存储位置的移动。检索速度不如聚簇索引快。,第41/共67页,建立索引原则,一个(组)属性经常在操作条件中出现。一个(组)属性经常在连接操作的连接条件中出现。一个(组)属性经常作为聚集函数的参数。,第42/共67页,建立聚簇索引原则,检索数据时,常以某个(组)属性作为排序、分组条件。检索数据时,常以某个(组)属性作为检索限制条件,并返回大量数据。表中某个(组)的值重复性较大。,第43/共67页,3确定数据的存放位置,数据库数据备份、日志文件备份等,可以考虑存放在磁带上。可以考虑将表和索引分别放在不同的磁盘上。在查询时,由于两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。,第44/共67页,4确定系统配置,同时使用数据库的用户数同时打开的数据库对象数使用的缓冲区长度、个数,第45/共67页,5数据库的实施,(1)定义数据库结构(2)数据装载,第46/共67页,例子:建立图书馆数据库,需求分析查询图书:通过书名和类别查询库中的图书,其中书名为模糊查询。借书处理:在查询的基础上完成借书登记处理。借书时需要输入书号和读者编号,修改图书表记录和增加借阅表记录。还书处理:实现还书处理操作。还书时需要先修改图书记录,改变其借出否标志,再删除相关的借阅记录。,第47/共67页,数据库设计,概念模型 读者,第48/共67页,图书,第49/共67页,借书,第50/共67页,数据库逻辑模型,读者(编号,姓名,单位,性别,电话),第51/共67页,图书的逻辑模型,图书(书号,类别,出版社,作者,书名,定价,借出否),第52/共67页,借阅的逻辑模型,借阅(书号,读者编号,借阅日期),第53/共67页,规范化,图书:书号类别,书号出版社,书号作者,书号书名,书号定价,书号借出否;读者:编号姓名,编号单位,编号性别,编号电话;借阅:(书号,读者编号)借阅日期;所有非主属性对主码完全并直接依赖。各表均为第三范式。,第54/共67页,完整性约束,主码约束:在“图书”表中,“书号”为主码;在“读者”表中,“读者编号”为主码;在“借阅”表中,“书号”和“读者编号”为主码。这些主码的属性值具有惟一性和非空性。,第55/共67页,借阅表和图书表间的外码约束,借阅中书号为外码(非本关系中的属性),参照表为图书,参照属性为书号。在借阅关系中插入元组(借阅图书)时,仅当图书表中有相应书号时,系统才执行插人操作,否则拒绝此操作。,第56/共67页,借阅表和读者表间的外码约束,借阅中读者编号为外码,参照表为读者,参照属性为编号。在借阅关系中插入元组(借阅图书)时,仅当读者表中有相应读者编号时,系统才执行插人操作,否则拒绝此操作。,第57/共67页,关系的属性设计,关系属性的设计包括属性名、数据类型、数据长度、该属性是否允许空值、是否为主码、是否为索引项及约束条件。,第58/共67页,读者表,第59/共67页,图书表,第60/共67页,借阅表,第61/共67页,数据库设计的步骤,分析建立数据库的目的确定数据库中的表确定表中的字段确定主关键字确定表之间的关系优化设计输入数据并新建其他DB对象,第62/共67页,分析建立数据库的目的,首先考虑“为什么要建立DB及建立DB要完成的任务”。这是DB设计的第一步,也是DB设计的基础。与DB的最终用户进行交流,了解现行工作的处理过程,讨论应保存及怎样保存要处理的数据。要尽量收集与当前处理有关的各种数据表格。,第63/共67页,例案分析,建立数据库的目的:例如,实现“教学管理”数据库应用。功能要求:实现“教师、学生、课程、学习成绩”四个方面的综合管理教师可以查看学生的简况、成绩、课程学生可以选择教师、课程和查看成绩,第64/共67页,确定数据库中的表,从确定的DB所要解决的问题和收集的各种表格中,不一定能够找出生成这些表格结构的线索。因此,不要急于建立表,而应先在纸上进行设计。为了能更合理地确定出DB中应包含的表,应按下列原则对信息进行分类:表中不应包含重复信息 每个表应该只包含关于一个主题的信息 可以独立于其他主题来维护每个主题的信息。,第65/共67页,分析要建立哪些数据表,为使DB的信息满足规范化要求,信息应按不同主题分开,单独立表。这样应建立“教师、学生、课程和成绩”四个表。建立下列数据表:学生简况表教师授课表课程名称表学生成绩表,第66/共67页,确定表中的字段,表确定后,就要确定表应该包含哪些字段。在确定所需字段时,要注意每个字段包含的内容应该与表的主题相关,而且应包含相关主题所需的全部信息。还要注意不要包含需要推导或计算的数据,一定要以最小逻辑部分作为字段来保存信息。,第67/共67页,教师授课表,分析:基本特征信息应包括:姓名、性别、职称、学历、专业特长其它特征信息:工作时间、政治面貌、联系电话、课程编号、所属院系综合分析:为满足管理目标基本要求,选取下列字段:教师序号、姓名、性别、职称、课程编号、电话,第68/共67页,学生简况表,分析:基本特征信息应包括:学号、姓名、性别、班级、出生日期其它特征信息:籍贯、政治面貌、宿舍、所属专业、特长综合分析:为满足管理目标基本要求,选取下列字段:学号、姓名、性别、班级、出生日期、简历,第69/共67页,课程名称表,分析:基本特征信息应包括:课程编号、教师序号、课程名称其它特征信息:学分、课时、课程先决条件、课时综合分析:为满足管理目标基本要求,选取下列字段:课程编号、课程名称、课时,第70/共67页,学生成绩表,分析:基本特征信息应包括:学号、课程编号、成绩其它特征信息:学分、教师序号、课程名称综合分析:为满足管理目标基本要求,选取下列字段:学号、课程编号、成绩,第71/共67页,确定主关键字,为保证在不同表中的信息发生联系,每个表都有一个能够唯一确定每条记录的字段或字段组,该字段或字段组被称为主关键字。如果表中没有可作为主关键字的字段,可在表中增加一个字段,该字段的值为序列号,以此来标识不同记录。,第72/共67页,例案中数据表的主关键字,根据上述确定表的字段分析:学生简况表的主关键字为“SNO”教师授课表的主关键字为“TID”“TID”是人为加入的主关键字课程名称表的主关键字为“CNO”学生成绩表的主关键字为“SNO”和“CNO”,第73/共67页,确定表之间的关系,在确定了DB的表、表中的字段以及主关键字之后,还需要确定表之间的关系。在DB中,可以存在一个以上的表,且表与表之间存在着一定的关系。只有分析并建立起表之间的关系,才能将表中的相关信息联系在一起。注:用工具栏中“关系”和“显示表”按钮实现关系的确定。,第74/共67页,优化设计,在设计完所需要的表、字段和关系之后,用户还应该检查一下所做的设计,找出设计中的不足加以改进。实际上,现在改变DB设计中的不足比表中填满了数据以后再修改要容易得多。,第75/共67页,优化设计案例分析,从以上设计中不难看出,教师库存在数据冗余。如果某教师讲授课程多于一门,他的相关信息就要重复多次,这是在表设计中要尽量避免的。,做如下分解:将课程信息分离出来,形成“教师课程表”,为了形成联系,在该表中增加“课程编号”字段。,教师序号,教师姓名,教师性别,课程编号,职称,电话号码,教师序号,教师姓名,教师性别,电话号码,职称,课程编号,教师序号,教师授课表,教师简况表,教师授课表,第76/共67页,优化后的数据表间的联系,学生情况表,教师简况表,课程名称表,学生成绩表,CNO,返回,SNO,CNO,教师授课表,TID,第77/共67页,优化后的数据表,最后得到的数据表共5个:教师简况表 教师序号、姓名、性别、职称、电话学生简况表 学号、姓名、性别、班级、出生日期、简历课程名称表 课程编号、课程名称、课时学生成绩表 学号、课程编号、分数教师授课表 课程编号、教师序号,第78/共67页,创建表之间的关系,操作步骤:单击“关系”按钮,设置关系单击“显示表”按钮,选择表,关系,显示表,“课程名称表”和“学生成绩表”之间的联系,需经“创建”才确立。,第79/共67页,结束语,欢迎参加到中心网站课程的学习讨论中来。中心网址:http:/我的E-mail地址:LZQ 谢谢!,