数据库系统概论第七章.pptx
第7章 数据库设计数据库设计的基本步骤概念结构设计和逻辑结构设计的常用方法第1页/共62页7.1 数据库设计概述 数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。第2页/共62页7.1 数据库设计概述(续)1、数据库设计的特点 数据库建设的基本规律“三分技术,七分管理,十二分基础数据”结构设计与行为设计相结合目前许多计算机辅助软件工程(Computer Aided Software Engineering,简称CASE)工具已经把数据库设计作为软件工程设计的一部分。如ROSE,UML(Unified Modeling language)等。第3页/共62页第4页/共62页7.1 数据库设计概述(续)2、数据库设计方法 在过去相当长的一段时期内,数据库设计主要采用手工试凑法。长时间以来,人们努力探索,提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计方法。规范设计方法的基本思想是过程迭代和逐步求精。第5页/共62页7.1 数据库设计概述(续)2、数据库设计方法新奥尔良(New Orleans)方法把数据库设计分为四个阶段:需求分析(分析用户要求)概念设计(信息分析和定义)逻辑设计(设计实现)物理设计(物理数据库设计)第6页/共62页7.1 数据库设计概述(续)数据库设计方法基于E-R模型的数据库设计方法概念设计阶段广泛采用3NF(第三范式)的设计方法逻辑阶段可采用的有效方法 ODL(Object Definition Language)方法面向对象的数据库设计方法第7页/共62页7.1 数据库设计概述(续)3、数据库设计的基本步骤 需求分析 概念结构设计 逻辑结构设计 物理结构设计 数据库实施 数据库运行和维护 第8页/共62页第9页/共62页7.2 需求分析1、需求分析的任务 需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。第10页/共62页7.2 需求分析(续)调查的重点是“数据”和“处理”,通过调查、分析,获得用户对数据库的如下要求:(1)信息要求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。(2)处理要求。指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。(3)安全性与完整性要求。第11页/共62页7.2 需求分析(续)2、需求分析的方法(1)开展调查包括调查组织机构、调查业务活动、调查用户的各种要求等。调查方法:跟班作业、开调查会、调查表、查阅记录(2)采用结构化的分析方法进行分析第12页/共62页7.2 需求分析(续)3、数据流图与数据字典数据流图(Data Flow Diagram,DFD)是从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法。第13页/共62页7.2 需求分析(续)3、数据流图与数据字典数据字典(Data Dictionary,DD)是各类数据描述的集合。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。第14页/共62页7.2 需求分析(续)学生选课系统数据流图和数据字典示例分析:第15页/共62页第16页/共62页数据字典描述:数据字典描述:数据项名数据项名:学生编号:学生编号说明:说明:标识每个学生身份标识每个学生身份类型:类型:CHAR长度:长度:8别名:别名:学号学号取值范围:取值范围:970000979999 数据结构数据结构:学生个人信息:学生个人信息说明:说明:说明了学生的个人情况。说明了学生的个人情况。组成:组成:学号、姓名、性别学号、姓名、性别 密码密码第17页/共62页 数据流名:选课申请说明:由学生个人信息,欲选课程信息组成选课申请来自过程:无流至过程:身份验证输出数据流:课程上课时间数据描述:课程编号 上课时间数量:每学期200300个存取方式:随机存取数据存储:上课时间信息说明:说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。第18页/共62页处理过程:身份验证说明:对学生输入的帐号,密码进行验证,确定正确,得到相应的学生编号。输入:学生帐号;密码;选课的课程编号。输出:学生编号;选课的课程编号 程序提要说明:(1)对输入的学生个人信息,检查学号和密码是否正确?(2)对身份正确的学生检查要选修的课程是否允许?(3)检查是否正确返回信息。第19页/共62页7.2 需求分析(续)数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。明确地把需求收集和分析作为数据库设计的第一阶段是十分重要的。这一阶段收集到的基础数据(用数据字典来表达)和一组数据流程图(Data Flow Diagram,简称DFD)是下一步进行概念设计的基础。(1)要考虑到可扩充性(2)强调用户的参与第20页/共62页7.3 概念结构设计1、概念结构(1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。是对现实世界的一个真实模型。(2)易于理解。(3)易于更改和扩充。(4)易于向关系、网状、层次等各种数据模型转换。数据库设计的关键:形成独立于具体DBMS的概念模型描述概念模型的有力工具是E-R模型第21页/共62页7.3 概念结构设计(续)2、概念结构设计的方法与步骤自顶向下。首先定义全局概念结构的框架,然后逐步细化。自底向上。先定义各局部的应用的概念结构,然后将它们集成,得到全局概念结构。逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,直至总体概念结构。混合策略:自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。通常情况下,采用自顶向下进行需求分析、然后再自底向上地设计概念结构。第22页/共62页7.3 概念结构设计(续)概念结构设计的步骤:第23页/共62页7.3 概念结构设计(续)3、数据抽象与局部视图设计数据抽象 概念结构是对现实世界的一种抽象。所谓抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。第24页/共62页3、数据抽象与局部视图设计数据抽象 1)分类(classificatin)2)聚集(Aggregation)3)概括(Generalization)7.3 概念结构设计(续)定义某一类概念作为现实定义某一类概念作为现实世界中一组对象的类型,世界中一组对象的类型,这些对象具有某些共同的这些对象具有某些共同的特性和行为特性和行为定义某一类型的组成成分。定义某一类型的组成成分。它抽象了对象内部类型和它抽象了对象内部类型和成分之间的成分之间的“is part of”的语义。的语义。定义某一类型之间的一种定义某一类型之间的一种子集联系。它抽象了类型子集联系。它抽象了类型之间的之间的“is subset of”的语义。的语义。第25页/共62页7.3 概念结构设计(续)3、数据抽象与局部视图设计局部视图设计1)选择局部应用作为设计分E-R图的出发点2)逐个设计分E-R图在E-R图设计时,现实世界的事物能作为属性对待的,尽量作为属性对待。应遵循以下两个原则:属性是不可分的数据项,不能包含其他属性 属性不能与其他实体具有联系 第26页/共62页第27页/共62页7.3 概念结构设计(续)4、视图的集成视图集成方式:多个分E-R图一次集成;逐步集成;视图集成步骤合并修改和重构第28页/共62页7.3 概念结构设计(续)1)合并分E-R图,生成初步E-R图 合理消除各分E-R图的冲突是合并分E-R图的主要工作与关键所在。属性冲突属性域冲突,如学号的类型有的采用整型,有的采用字符型。属性取值单位的冲突,如身高采用米还是厘米。命名冲突同名异义,即不同对象在不同的E-R图中具有相同的名字异名同义,即同一对象在不同的E-R图中具有了不同的名字 结构冲突同一对象在一个视图中作为实体,在另一个视图中可能作为属性或联系。同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同不同的视图联系类型不一致 第29页/共62页7.3 概念结构设计(续)2)消除不必要的冗余,设计基本E-R图 冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其它联系导出的联系。消除了冗余后的初步E-R图称为基本E-R图。Q3=Q1*Q2Q3为冗余数据为冗余数据Q4=Q5Q4为冗余数据为冗余数据删除删除Q3,多余的联系也应删除,多余的联系也应删除Q4可视实际需要而定,若经常进行统计,可视实际需要而定,若经常进行统计,则可以保留,以提高系统查询效率则可以保留,以提高系统查询效率Q4第30页/共62页第31页/共62页第32页/共62页第33页/共62页第34页/共62页7.4 逻辑结构设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS所支持的数据模型相符合的逻辑结构。第35页/共62页7.4 逻辑结构设计(续)1、E-R图向关系模型的转换一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体的联系则有以下不同的情况:第36页/共62页或或E1(k,a,h,s)E2(h,b)E1(k,a)E2(h,b)R(k,h,s)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。1:1联系第37页/共62页1:N联系或或 E1(k,a)E2(h,b,k,s)E1(k,a)E2(h,b)R(h,k,s)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并,如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。第38页/共62页M:N联系 E1(k,a)E2(h,b)R(h,k,s)一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。第39页/共62页多元联系 E1(k,a)E2(h,b)E3(i,c)R(k,h,i,s)三个或三个以上实体间的一个多元联系可以转换为一个关系模式,与该多元联系相连的各实体间的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。第40页/共62页7.4 逻辑结构设计(续)具有相同的码的关系模式可合并。具有相同的码的关系模式可合并。课程-教师:课程号,课序号,教师号课程-教科书:课程号,课序号,教科书具有相同的主码,可以合并成一个关系教学:课程号,课序号,教师号,教科书 第41页/共62页7.4 逻辑结构设计(续)2、数据模型的优化确定数据依赖对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。按照数据依赖的理论对关系模式进行分析,确定属于第几范式。按照需求分析的处理要求,确定是否要对某些模式进行合并或分解。对关系模式进行必要的分解(水平分解、垂直分解)水平分解:将元组分为若干个子集合,把经常使用的数据分解成子集合,以提高系统的效率。垂直分解:把关系模式的属性分解为若干个子集合。第42页/共62页7.4 逻辑结构设计(续)3、设计用户子模式 将概念模型转换为全局逻辑模型后,还应根据局部应用需求、DBMS的特点,设计用户的外模式。通常利用视图设计用户的外模式。定义用户的外模式应注重考虑用户的习惯与方便。使用更符合用户习惯的别名可以对不同级别的用户定义不同的视图,以保证系统的安全性。简化用户对系统的使用。如将一些常用的复杂查询定义为视图。第43页/共62页示例:学生包括学号,姓名,性别,年龄等基本信息;课程包括课程编号,课程名等;教师包括教师代号,姓名,性别,职称等;上述实体存在如下联系:一个学生可以选修多门课程,一门课程可为多个学生选修;一个教师可讲授多门课程,一门课程由一个教师讲授;(1)试画出这个数据库的E-R图。(2)将E-R模型转化为适当的关系模型,并给出候选关键字。第44页/共62页学生课程教师选修讲授学号姓名性别年龄课程号课程名教师号姓名性别职称成绩学生(学生(学号学号,姓名,性别,年龄),姓名,性别,年龄)课程(课程(课程号课程号,课程名),课程名)教师(教师(教师号教师号,姓名,性别,职称),姓名,性别,职称)选修(选修(学号,课程号学号,课程号,成绩),成绩)讲授(讲授(课程号课程号,教师号),教师号)MN1P学生(学号,姓名,性别,年龄)课程(课程号,课程名,教师号)教师(教师号,姓名,性别,职称)选修(学号,课程号,成绩)相同码合并相同码合并第45页/共62页7.5 数据库的物理设计 数据库的物理设计就是为给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程。通常分为两步:确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;对物理结构进行评价,评价的重点是时间和空间效率。第46页/共62页7.5 数据库的物理设计(续)1、数据库物理设计的内容和方法主要内容包括:(1)为关系模式选择存取方法;(2)设计关系、索引等数据库文件的物理存储结构设计的原则:事务响应时间短、存储空间利用率高、事务吞吐率大第47页/共62页7.5 数据库的物理设计(续)2、关系模式存取方法选择存取方式是快速存取数据库中数据的技术。索引方法(B+树索引)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(这组)属性上建立索引;如果一个属性(一组)经常作为最大值或最小值等聚集函数的参数,则考虑在这个属性上建立索引;如果一个(一组)属性经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引;第48页/共62页7.5 数据库的物理设计(续)2、关系模式存取方法选择聚簇方法聚簇:为了提高某个属性(或属性组)的查询速度,把这个或这些属性(聚簇码)上具有相同值的元组集中存放在连续的物理块,称为聚簇。对于经常建立连接操作的多个关系也可按照连接属性聚集存放。连接属性称为聚簇码。一个数据库可以建立多个聚簇,但是一个关系只能加入一个聚簇。第49页/共62页7.5 数据库的物理设计(续)建立候选聚簇的设计原则:(1)对经常在一起进行连接操作的关系可以建立聚簇;(2)如果一个关系的一组属性经常建立在相等比较条件中,则该单个关系可建立聚簇;(3)如果一个关系的一个(或一组)属性上的值重复率很高,则此单个关系可建立聚簇。检查原则:(1)从聚簇中删除经常进行全表扫描的关系;(2)从聚簇中删除更新操作远多于连接操作的关系;(3)一个关系只能在一个聚簇中;第50页/共62页举例:CREATE CLUSTERED INDEX Stusname ON Student(Sname);在Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放。建立和维护聚簇的开销是非常大的。对于分组查询、排序查询等,使用聚簇索引可以提高查询效率。第51页/共62页7.5 数据库的物理设计(续)3、确定数据库的存储结构 确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价3个方面的因素。确定数据的存放位置将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放确定系统配置第52页/共62页7.5 数据库的物理设计(续)4、评价物理结构 主要从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。第53页/共62页7.6 数据库的实施和维护1、数据的载入和应用程序的调试2、数据库的试运行3、数据库的运行和维护第54页/共62页本章小结了解数据库设计的特点;数据库物理设计的内容和评价;数据库的实施和维护;掌握数据库设计的基本步骤;数据库设计过程中数据字典的内容;数据库设计各阶段的具体设计内容、设计方法;特别是E-R模型和逻辑模型设计;第55页/共62页1、某商业集团数据库中有三个实体。商店的属性有编号、商店名、地址等;商品属性有编号、商品名、规格、单价等;职工属性有编号、姓名、性别、业绩等。每个商店可销售多种商品,每种商品也可放在多个商店销售,有月销售量;每个商店有多名职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。2、学校管理系统设计。学校有若干个系,每个系有若干名教师和学生;每个教师可以担任若干门课程,并参加多项项目,一门课程可以有多个教师担任,一个项目也可以有多个教师参加,教师参加项目有排名属性;每个学生可以同时选修多门课程,一门课程可以被多个学生选修,学生选修课程有成绩属性。教师,学生与系之间有“领导”的关系。练习第56页/共62页商品商店职工销售聘用mnm1月销量聘期月薪名称地址编号编号名称规格单价编号姓名性别业绩第57页/共62页商店(商店编号,名称,地址)商品(商品编号,名称,规格,单价)职工(职工编号,姓名,性别,业绩)销售(商店号,商品编号,月销量)聘用(职工编号,月薪,聘期,商店编号)商店(商店编号,名称,地址)商品(商品编号,名称,规格,单价)职工(职工编号,姓名,性别,业绩,月薪,聘期,商店 编号)销售(商店号,商品编号,月销量)第58页/共62页第59页/共62页系(系号,系名,系主任)学生(学号,姓名,年龄,系号)教师(教师号,教师名,职称,系号)项目(项目号,名称)课程(课程号,课程名,学分)任课(教师号,课程号)参加项目(教师号,项目号)选修(学号,课程号,成绩)第60页/共62页练习(1)试画出这个数据库的E-R图。(2)转化为适当的关系模型,并给出候选关键字。第61页/共62页感谢您的观看。第62页/共62页