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