1、 9.1.1 数据库设计在软件开发中的地位和作用数据库设计在软件开发中的地位和作用 数据库设计是信息系统设计中最为关键的一项任务。一个数据库设计是信息系统设计中最为关键的一项任务。一个优优秀的数据库设计秀的数据库设计无疑能够帮助程序员减少业务逻辑操作,减无疑能够帮助程序员减少业务逻辑操作,减少出错的可能性,甚至有助于提高软件的性能;少出错的可能性,甚至有助于提高软件的性能;而一个糟糕而一个糟糕的数据库设计的数据库设计会在需要添加功能的时候无从扩展,或是大量会在需要添加功能的时候无从扩展,或是大量的冗余造成性能的瓶颈。的冗余造成性能的瓶颈。数据库设计的一般定义数据库设计的一般定义:数据库设计是针
2、对一个特定的应用:数据库设计是针对一个特定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。足各种用户的应用需求,包括信息管理要求和数据操作要求。用户需求在设计过程中扮演一个中心角色用户需求在设计过程中扮演一个中心角色,数据库设计必须,数据库设计必须与需求相对应,各种功能需求都要在数据库中予以体现。与需求相对应,各种功能需求都要在数据库中予以体现。9.1.2 数据库设计的基本步骤
3、数据库设计的基本步骤 依照规范设计的方法依照规范设计的方法,考虑到数据库及其应用系统开发全过,考虑到数据库及其应用系统开发全过程,将数据库设计分为以下程,将数据库设计分为以下5个阶段:个阶段:(1)需求收集与分析需求收集与分析阶段需要就系统功能、数据需求、数据完整阶段需要就系统功能、数据需求、数据完整性和安全性等诸多方面与应用领域专家和用户展开多种方式性和安全性等诸多方面与应用领域专家和用户展开多种方式的沟通,同时综合不同用户的应用需求。虽然存在图形方式的沟通,同时综合不同用户的应用需求。虽然存在图形方式的用户需求表示,但是在本章中仅限于采用文字方式描述。的用户需求表示,但是在本章中仅限于采用
4、文字方式描述。(2)概念结构设计概念结构设计阶段是将用户需求以概念模型的方式表达出来,阶段是将用户需求以概念模型的方式表达出来,独立于具体独立于具体DBMS产品,用以和用户沟通并确认需求。检查产品,用以和用户沟通并确认需求。检查概念模型,看该模型是不是包含了所有的数据;能不能满足概念模型,看该模型是不是包含了所有的数据;能不能满足对数据的各种操作(如查询和增删改等)。概念结构设计是对数据的各种操作(如查询和增删改等)。概念结构设计是整个数据库设计的关键。基于整个数据库设计的关键。基于E-R图的实体图的实体-联系模型(联系模型(E-R模型)是目前最为广泛使用的概念模型。模型)是目前最为广泛使用的
5、概念模型。9.1.2 数据库设计的基本步骤数据库设计的基本步骤(3)逻辑结构设计逻辑结构设计阶段将概念模型转换成具体的数据库产品支持阶段将概念模型转换成具体的数据库产品支持的逻辑模型(比如关系数据库模型),形成数据库的逻辑模的逻辑模型(比如关系数据库模型),形成数据库的逻辑模式并对它进行优化。然后根据用户处理的要求、安全性的考式并对它进行优化。然后根据用户处理的要求、安全性的考虑,在全局逻辑结构的基础上再建立必要的视图,形成数据虑,在全局逻辑结构的基础上再建立必要的视图,形成数据的外模式。的外模式。(4)物理结构设计物理结构设计阶段为逻辑模型选取一个最合适应用环境的物阶段为逻辑模型选取一个最合
6、适应用环境的物理结构,包括物理存储安排和索引结构的选择等,形成数据理结构,包括物理存储安排和索引结构的选择等,形成数据库内模式。库内模式。(5)实施、运行和维护实施、运行和维护阶段将组织数据入库,并进行试运行,之阶段将组织数据入库,并进行试运行,之后可投入正式运行,在数据库系统运行过程中必须不断地对后可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价、调整与修改。其进行评价、调整与修改。9.1.2 数据库设计的基本步骤数据库设计的基本步骤应用要求应用要求应用应用2应用应用1应用应用1应用应用2应用应用3综合综合转换转换映像映像映像映像内模式内模式外模式外模式应用应用3 概念概念 模式
7、模式 逻辑逻辑 模式模式数据库数据库应用系统应用系统应用要求应用要求应用要求应用要求外模式外模式外模式外模式需求收集与分析需求收集与分析 概念结构设计概念结构设计 逻辑结构设计逻辑结构设计 物理结构设计物理结构设计 实施运行维护实施运行维护 9.2.1 实体与用户需求实体与用户需求 对现实世界做需求分析得到用户需求,将它抽象为信息世界对现实世界做需求分析得到用户需求,将它抽象为信息世界即概念模型的过程就是即概念模型的过程就是概念结构设计概念结构设计。它。它是整个数据库设计是整个数据库设计的关键的关键。Peter Chen 1976年提出的年提出的E-R模型是用模型是用E-R图来描述现实世图来描
8、述现实世界的概念模型界的概念模型,Chen氏模型中使用的图形符号见表氏模型中使用的图形符号见表9.1。本章中谈到的实体,没特别说明的话都是指实体型。本章中谈到的实体,没特别说明的话都是指实体型。实体可以是具体的实体可以是具体的人、事、物,例如学生、教师、课程等,人、事、物,例如学生、教师、课程等,也可以是抽象的概念或联系也可以是抽象的概念或联系,如时间段、考试安排等。实体,如时间段、考试安排等。实体由实体名和属性名集合组成。由实体名和属性名集合组成。在实际开发中,实体的属性集在实际开发中,实体的属性集是由用户的实际需求决定的是由用户的实际需求决定的。学生学生(学号,姓名,性别,入学年月,出生日
9、期,年龄,学生来源,籍贯,学号,姓名,性别,入学年月,出生日期,年龄,学生来源,籍贯,民族,宗教信仰,健康状况,户籍地址,居住地址,电话号码,学籍状民族,宗教信仰,健康状况,户籍地址,居住地址,电话号码,学籍状态,特长态,特长)时间段时间段(节次,开始时间,结束时间,适用部门节次,开始时间,结束时间,适用部门)9.2.2 属性及其分类属性及其分类 属性是实体所具有的某一特性属性是实体所具有的某一特性,每个实体在每个属性上都有,每个实体在每个属性上都有各自的属性值,属性值有可取值的范围,称为各自的属性值,属性值有可取值的范围,称为属性的域属性的域。依照具体信息系统中的不同需求,依照具体信息系统中
10、的不同需求,E-R图中的属性可以按照属图中的属性可以按照属性类型进行多种划分,下面分别介绍。性类型进行多种划分,下面分别介绍。(1)简单属性简单属性:该属性是:该属性是不能再进行分割不能再进行分割的最小单位。如前面学生实体中的的最小单位。如前面学生实体中的学号、性别、学生来源、年龄、籍贯等都是简单属性。用椭圆节点表示。学号、性别、学生来源、年龄、籍贯等都是简单属性。用椭圆节点表示。(2)复合属性复合属性:可以再分割可以再分割为更小部分的属性。复合属性可以是有层次结构为更小部分的属性。复合属性可以是有层次结构的,此时用树状的简单属性图形符号来表示上下层次关系。的,此时用树状的简单属性图形符号来表
11、示上下层次关系。那么复合属性到底在什么场合下使用呢那么复合属性到底在什么场合下使用呢?如果一个用户希望在一些场景中?如果一个用户希望在一些场景中引用完整的属性,而在另外的场景中仅引用属性的一部分,这时候使用复引用完整的属性,而在另外的场景中仅引用属性的一部分,这时候使用复合属性是一个好的选择。合属性是一个好的选择。复合属性居住地址可以用树状层次化表示,如下图所示。复合属性居住地址可以用树状层次化表示,如下图所示。邮编邮编区名区名街道街道路名门牌路名门牌居住地址居住地址 9.2.2 属性及其分类属性及其分类(3)单值属性单值属性:对一个特定实体,一个属性只有单独的一个值,:对一个特定实体,一个属
12、性只有单独的一个值,如学号、姓名、籍贯等。如学号、姓名、籍贯等。(4)多值属性多值属性:对一个特定实体,一个属性可能对应一组值。用:对一个特定实体,一个属性可能对应一组值。用双线椭圆节点表示。双线椭圆节点表示。(5)派生属性派生属性:由其它属性计算得出的属性,使用虚线椭圆节点:由其它属性计算得出的属性,使用虚线椭圆节点表示。派生属性会造成数据冗余。表示。派生属性会造成数据冗余。(6)码属性码属性:如果属性是实体型中用来唯一标识实体的属性称为:如果属性是实体型中用来唯一标识实体的属性称为码属性。码属性在属性名的下面划一条线表示。学生实体中码属性。码属性在属性名的下面划一条线表示。学生实体中学号是
13、码属性。学号是码属性。各种属性的学生实体各种属性的学生实体E-R图表示图表示年龄年龄 学号学号 电话号码电话号码 学生学生出生日出生日期期年龄年龄居住地址居住地址宗教信仰宗教信仰学生来源学生来源电话号码电话号码学籍状态学籍状态区名区名邮编邮编街道街道路名门牌路名门牌学号学号说明说明:由于属性较多,在此只标:由于属性较多,在此只标出几个需要特别关注的属性。出几个需要特别关注的属性。9.2.3 联系及其分类联系及其分类 在现实世界中,事物内部以及事物之间是有联系的,在现实世界中,事物内部以及事物之间是有联系的,这些联这些联系在信息世界中反映为实体内部的联系和实体之间的联系系在信息世界中反映为实体内
14、部的联系和实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。体之间的联系通常是指不同实体集之间的联系。实体内部和实体之间实体内部和实体之间联系类型的不同联系类型的不同,将直接导致数据库不将直接导致数据库不同的逻辑结构设计同的逻辑结构设计,最后影响到用户功能的实现。,最后影响到用户功能的实现。所以区分所以区分联系类型是一项非常重要的工作联系类型是一项非常重要的工作。1、两个实体型之间的联系(、两个实体型之间的联系(二元联系二元联系)(1)一对一联系(一对一联系(1:1)(2)一对多联系
15、(一对多联系(1:n)(3)多对多联系(多对多联系(m:n)联系也是可以有属性的联系也是可以有属性的教师教师班级班级11负责负责员工员工房间房间1n负责负责职务职务教师教师mn任职开始时间任职开始时间任职结束时间任职结束时间任职任职 9.2.3 联系及其分类联系及其分类2、两个以上实体型之间的联系(、两个以上实体型之间的联系(多元联系多元联系)3、单个、单个实体型内部实体型内部的联系的联系4、两个实体型之间的、两个实体型之间的多种联系多种联系5、参与约束参与约束班级班级教师教师pn课程课程m学期学期学年学年任课任课学生学生n管理管理1员工员工房间房间1n1n办公办公负责负责员工员工房间房间1n
16、负责负责 9.2.4 弱实体类型弱实体类型 在现实世界中,有时某些实体对于另一些实体有很强的依赖在现实世界中,有时某些实体对于另一些实体有很强的依赖关系,即关系,即一个实体的存在必须以另一实体的存在为前提一个实体的存在必须以另一实体的存在为前提,该,该实体主码的全部或者部分从依赖的实体获得。前者称为实体主码的全部或者部分从依赖的实体获得。前者称为弱实弱实体体类型(简称弱实体),后者称为类型(简称弱实体),后者称为强实体强实体类型或类型或常规实体常规实体类类型(简称强实体或实体)。型(简称强实体或实体)。弱实体类型一定需要关联到一个强实体类型,以便识别其身弱实体类型一定需要关联到一个强实体类型,
17、以便识别其身份,该强实体类型称为份,该强实体类型称为“标识实体标识实体类型类型”,使用的联系类型,使用的联系类型称为称为“标识联系类型标识联系类型”,以双框菱形图形符号来表示,弱实,以双框菱形图形符号来表示,弱实体类型是使用双线矩形符号来表示。体类型是使用双线矩形符号来表示。弱实体必然是全部参与弱实体必然是全部参与联系联系。如下图所示。如下图所示。学生学生 简历简历拥有拥有起始日期起始日期所在学校所在学校终止日期终止日期学号学号1n 9.2.5 扩展的扩展的E-R特性特性E-R模型的一个局限性在于它不能表达联系间的联系模型的一个局限性在于它不能表达联系间的联系。比如首先教师入。比如首先教师入职
18、时登记所擅长的课程信息,如下图所示。以后教学负责人只能选择该职时登记所擅长的课程信息,如下图所示。以后教学负责人只能选择该课程登记的擅长教师任教,这时任课联系就是建立在擅长联系和班级之课程登记的擅长教师任教,这时任课联系就是建立在擅长联系和班级之间,而不再是教师、课程和班级三个实体上的多对多联系。对类似上述间,而不再是教师、课程和班级三个实体上的多对多联系。对类似上述情况建模的最好方法是使用聚集。情况建模的最好方法是使用聚集。聚集是一种抽象聚集是一种抽象,通过这种抽象,联系被看作是高层实体,从而和其它,通过这种抽象,联系被看作是高层实体,从而和其它实体或者聚集的高层实体建立联系。如下图所示。实
19、体或者聚集的高层实体建立联系。如下图所示。把擅长聚集为高层实把擅长聚集为高层实体与班级建立多对多联系,体现出班级只和某教师擅长的某门课建立任体与班级建立多对多联系,体现出班级只和某教师擅长的某门课建立任课联系课联系。教师教师课程课程n擅长擅长m教师教师课程课程nm擅长擅长班级班级任课任课mn学期学期学年学年 9.2.6 E-R图实例图实例 本节以基础教育学校背景为例,分析了实体、属性和联系的本节以基础教育学校背景为例,分析了实体、属性和联系的分类,现将分类,现将上面的各上面的各E-R子图综合起来子图综合起来,以便对实体间关联,以便对实体间关联关系有整体概念,如下图所示。该图中员工实体与教师实体
20、关系有整体概念,如下图所示。该图中员工实体与教师实体的区别在后面设计实例的区别在后面设计实例 9.6.5小节中有介绍,这里不做说明。小节中有介绍,这里不做说明。教师教师qn课程课程房间房间职务职务简历简历拥有拥有 任课任课负责负责2办公办公任职任职管理管理属于属于2属于属于1n1nnmn11n1n任职开始时任职开始时间间任职结束时任职结束时间间负责负责111111m学年学年学期学期员工员工班级班级学生学生 9.2.7 概念结构设计的方法和步骤概念结构设计的方法和步骤1、概念结构设计的方法、概念结构设计的方法(1)自顶向下自顶向下:首先定义全局概念结构的框架,然后逐步细化。:首先定义全局概念结构
21、的框架,然后逐步细化。(2)自底向上自底向上:首先定义各局部应用的概念结构,然后将它们集:首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。成起来,得到全局概念结构。(3)逐步扩张逐步扩张:首先定义最重要的核心概念结构,然后向外扩充,:首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。(4)混合策略混合策略:将自顶向下和自底向上相结合,用自顶向下策略:将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上设计一个全局概念结构的框架,以它
22、为骨架集成由自底向上策略中设计的各局部概念结构。策略中设计的各局部概念结构。其中其中经常采用的策略是自底向上方法经常采用的策略是自底向上方法,即自顶向下地进行需,即自顶向下地进行需求分析,然后自底向上地设计概念结构。求分析,然后自底向上地设计概念结构。9.2.7 概念结构设计的方法和步骤概念结构设计的方法和步骤2、概念结构设计的步骤、概念结构设计的步骤自底向上设计概念结构分为两步。自底向上设计概念结构分为两步。(1)抽象数据并设计局部视图抽象数据并设计局部视图。首先需要根据系统的具体情况,从某个层面为出发点,作为首先需要根据系统的具体情况,从某个层面为出发点,作为分分E-R图的分割依据。然后逐
23、一设计分图的分割依据。然后逐一设计分E-R图,标定局部应图,标定局部应用中的实体、属性、码和实体间的联系。用中的实体、属性、码和实体间的联系。(2)集成局部视图集成局部视图,得到全局概念结构得到全局概念结构。各个局部视图即分各个局部视图即分E-R图建立好后,还需要对它们进行合并,图建立好后,还需要对它们进行合并,集成为一个整体的概念结构即总集成为一个整体的概念结构即总E-R图。图。9.2.7 概念结构设计的方法和步骤概念结构设计的方法和步骤3、视图的集成、视图的集成集成局部集成局部E-R图时需要图时需要合并合并、修改和重构修改和重构两个步骤进行。两个步骤进行。(1)合并:各个局部应用所面向的问
24、题不同,而且可能由不同的设计人员进合并:各个局部应用所面向的问题不同,而且可能由不同的设计人员进行局部视图设计,导致各个分行局部视图设计,导致各个分E-R图之间必定会存在许多不一致的地方。图之间必定会存在许多不一致的地方。合并分合并分E-R图的主要工作就是合理消除各分图的主要工作就是合理消除各分E-R图的冲突图的冲突。属性冲突属性冲突属性域冲突,即属性值的类型、取值范围或取值集合不同属性域冲突,即属性值的类型、取值范围或取值集合不同属性取值单位冲突属性取值单位冲突 命名冲突命名冲突同名异义:不同意义的对象在不同的局部应用中具有相同的名字同名异义:不同意义的对象在不同的局部应用中具有相同的名字异
25、名同义:同一意义的对象在不同的局部应用中具有不同的名字异名同义:同一意义的对象在不同的局部应用中具有不同的名字 结构冲突结构冲突同一对象在不同应用中具有不同的抽象同一对象在不同应用中具有不同的抽象同一实体在不同局部视图中所包含的属性不完全相同或者属性的排同一实体在不同局部视图中所包含的属性不完全相同或者属性的排列次序不完全相同列次序不完全相同 9.2.7 概念结构设计的方法和步骤概念结构设计的方法和步骤3、视图的集成、视图的集成(2)修改与重构:修改与重构:消除不必要的冗余消除不必要的冗余(冗余数据或者冗余联系),(冗余数据或者冗余联系),设计生成基本设计生成基本E-R图。图。并不是所有的冗余
26、数据与冗余联系都必须加以消除,并不是所有的冗余数据与冗余联系都必须加以消除,有时为有时为了提高某些应用的效率,不得不以冗余信息作为代价了提高某些应用的效率,不得不以冗余信息作为代价。设计。设计数据库概念结构时,哪些冗余信息必须消除,哪些冗余信息数据库概念结构时,哪些冗余信息必须消除,哪些冗余信息允许存在,需要根据用户的整体需求来确定。允许存在,需要根据用户的整体需求来确定。最终,最终,整体概念结构还应该提交给用户,征求用户和有关人整体概念结构还应该提交给用户,征求用户和有关人员的意见,进行评审、修改和优化员的意见,进行评审、修改和优化,才能作为最终的数据库,才能作为最终的数据库概念结构,同时也
27、是下一步数据库逻辑结构设计的依据。概念结构,同时也是下一步数据库逻辑结构设计的依据。9.3.1 强实体的表示强实体的表示首先首先介绍介绍E-R图到关系模式的图到关系模式的转换原则转换原则,然后然后对转换后的逻对转换后的逻辑结构进行辑结构进行优化设计优化设计,至少,至少满足满足3NF的规范化形式,的规范化形式,最后最后根根据用户处理的要求、安全性的考虑,在基本表的基础上再建据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图,形成数据库的立必要的视图,形成数据库的外模式外模式(用户子模式)。(用户子模式)。E-R图中的图中的强实体转换成关系模式的规则强实体转换成关系模式的规则为:为:
28、(1)每个实体对应一个关系模式,实体的名称就是关系模式的名称。每个实体对应一个关系模式,实体的名称就是关系模式的名称。(2)实体的码属性就是关系模式的主码。实体的码属性就是关系模式的主码。(3)实体中的复合属性、多值属性和派生属性之外的属性,直接作为关系模实体中的复合属性、多值属性和派生属性之外的属性,直接作为关系模式的属性。式的属性。(4)对于复合属性对于复合属性,这种包含子属性违背了,这种包含子属性违背了1NF要求每个属性都是不可分割要求每个属性都是不可分割的要求,因此需要将的要求,因此需要将该复合属性的每个子属性变为关系模式中的一个属该复合属性的每个子属性变为关系模式中的一个属性性,关系
29、模式中不再保留原来的复合属性,以满足,关系模式中不再保留原来的复合属性,以满足1NF要求的原子性。要求的原子性。(5)对于多值属性对于多值属性,由于每个具体实体的属性值个数不同,为避免存储空间,由于每个具体实体的属性值个数不同,为避免存储空间的浪费,一般来说要为该的浪费,一般来说要为该多值属性创建一个新的关系模式多值属性创建一个新的关系模式。此关系模式。此关系模式包含原实体主码的属性和该多值属性。包含原实体主码的属性和该多值属性。9.3.1 强实体的表示强实体的表示(6)对于派生属性对于派生属性,它是由其他属性推导得出,存在对码的传递依赖,这是,它是由其他属性推导得出,存在对码的传递依赖,这是
30、一种冗余,同时也违背了一种冗余,同时也违背了3NF的要求。但冗余数据并不总是不好的,的要求。但冗余数据并不总是不好的,是是否保留派生属性要分析实际情况决定否保留派生属性要分析实际情况决定,不能一概而论。,不能一概而论。学生实体的学生实体的E-R图图,转换关系模式的分析过程为,转换关系模式的分析过程为:居住地址居住地址属性是复合属性,属性是复合属性,不再保留不再保留,换做区名、邮编、街道、路名门,换做区名、邮编、街道、路名门牌四个属性;牌四个属性;派生属性年龄也不再保留派生属性年龄也不再保留;多值属性电话号码多值属性电话号码从学生实体从学生实体中分离出来,中分离出来,单独成为关系模式单独成为关系
31、模式电话号码。电话号码。转换后的关系模式转换后的关系模式如下:如下:学生学生(学号学号,出生日期,区名,邮编,街道,路名门牌,学籍状态,学,出生日期,区名,邮编,街道,路名门牌,学籍状态,学生来源,宗教信仰生来源,宗教信仰)电话号码电话号码(学号学号,电话号码电话号码)学号是外码,参照学生的学号。学号是外码,参照学生的学号。每位学生有几个电话号码就对应几行数据,避免了存储空间的浪费。每位学生有几个电话号码就对应几行数据,避免了存储空间的浪费。说明说明:学生实体属性较多,上图:学生实体属性较多,上图(图图9.5)没有标出学生实体全部的属性,没有标出学生实体全部的属性,转换关系模式为保证清晰,只依
32、照该图中标注的属性进行转换。转换关系模式为保证清晰,只依照该图中标注的属性进行转换。学生学生出生日出生日期期年龄年龄居住地址居住地址宗教信仰宗教信仰学生来源学生来源电话号码电话号码学籍状态学籍状态区名区名邮编邮编街道街道路名门牌路名门牌学号学号 9.3.2 联系的表示联系的表示下面分别介绍各种类型的联系到关系模式的转换规则下面分别介绍各种类型的联系到关系模式的转换规则1、一对一联系、一对一联系可以把可以把任一方的主码纳入另一方任一方的主码纳入另一方或者或者建立一个新的关系模式(包括双方建立一个新的关系模式(包括双方的主码)的主码),根据双方实体完全参与约束还是部分参与约束,采取不同处,根据双方
33、实体完全参与约束还是部分参与约束,采取不同处理方式。理方式。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:教师的转换:教师(工号工号,姓名,性别,出生日期,民族,职称,姓名,性别,出生日期,民族,职称)班级班级(班级号班级号,班级名称,班级类型,班级名称,班级类型)第二步第二步联系联系的转换:班级的转换:班级(班级号班级号,班级名称,班级类型,班级名称,班级类型,班主任工号班主任工号)班主任工号作为班级的外码,必须非空班主任工号作为班级的外码,必须非空(班级实体是完全参与约束班级实体是完全参与约束),参,参照教师的工号。照教师的工号。教师实体是部分参与约束,班级实体是
34、完全参与约束,因此若把班级的教师实体是部分参与约束,班级实体是完全参与约束,因此若把班级的主码班级号加入到教师关系模式中,不是每个教师都担任班主任,且教主码班级号加入到教师关系模式中,不是每个教师都担任班主任,且教师的数量远大于班级的数量,会占用更多的存储空间。因此师的数量远大于班级的数量,会占用更多的存储空间。因此将教师主码将教师主码加入到班级关系模式中更为合适加入到班级关系模式中更为合适。教师教师班级班级11负责负责 9.3.2 联系的表示联系的表示2、一对多联系、一对多联系将将“1”方的主码纳入方的主码纳入“n”方实体对应的关系模式方实体对应的关系模式中,同时中,同时把联系的属性也纳入把
35、联系的属性也纳入“n”方的关系中。方的关系中。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:的转换:员工员工(工号工号,姓名,性别,出生日期,民族,入校年月,工龄,姓名,性别,出生日期,民族,入校年月,工龄)房间房间(房间号房间号,房间名称,使用类别,建筑面积,房间名称,使用类别,建筑面积)第二步第二步联系联系的转换:的转换:房间房间(房间号房间号,房间名称,使用类别,建筑面积,房间名称,使用类别,建筑面积,工号工号)工号作为房间的外码,必须非空工号作为房间的外码,必须非空(房间实体是完全参与约束房间实体是完全参与约束),参照员工的工号。参照员工的工号。员工员工房间房
36、间1n负责负责 9.3.2 联系的表示联系的表示3、多对多联系、多对多联系对对联系单独建立一个关系模式联系单独建立一个关系模式,该关系模式包括两实体的码,该关系模式包括两实体的码及联系的属性。及联系的属性。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:教师的转换:教师(工号工号,姓名,性别,民族,出生日期,职称,姓名,性别,民族,出生日期,职称)职务职务(职务编号职务编号,职务名称,职务类别,职务名称,职务类别)第二步第二步联系联系的转换:的转换:任职任职(工号工号,职务编号职务编号,任职开始时间,职务结束时间,任职开始时间,职务结束时间)工号、职务编号作为任职的外码
37、,分别参照教师的工号和职工号、职务编号作为任职的外码,分别参照教师的工号和职务的职务编号。这两个外码同时又是任职关系的主属性,不务的职务编号。这两个外码同时又是任职关系的主属性,不可为空。可为空。职务职务教师教师mn任职开始时间任职开始时间任职结束时间任职结束时间任职任职 9.3.2 联系的表示联系的表示4、两个以上实体型之间的联系、两个以上实体型之间的联系对对联系单独建立一个关系模式联系单独建立一个关系模式,该关系模式包括各个实体的,该关系模式包括各个实体的码及联系的属性。码及联系的属性。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:的转换:教师教师(工号工号,姓名
38、,性别,出生日期,民族,职称,姓名,性别,出生日期,民族,职称)班级班级(班级号班级号,班级名称,班级类型,班级名称,班级类型)课程课程(课程号课程号,课程名称,总学时,类别,课程名称,总学时,类别)第二步第二步联系联系的转换:的转换:任课任课(工号工号,班级号班级号,课程号课程号,学年,学期,学年,学期)工号、班级号、课程号作为任课的外码,分别参照教师、班工号、班级号、课程号作为任课的外码,分别参照教师、班级和课程中相应的属性列,外码同时也是任课的主属性,不级和课程中相应的属性列,外码同时也是任课的主属性,不可为空。可为空。班级班级教师教师pn课程课程m学期学期学年学年任课任课 9.3.2
39、联系的表示联系的表示5、单个实体型内部的联系、单个实体型内部的联系对于一对一或一对多单个对于一对一或一对多单个实体型内部联系的转换就是在这个实体型内部联系的转换就是在这个实体对应的关系模式中多设一个属性实体对应的关系模式中多设一个属性,该属性与主码属性的,该属性与主码属性的类型、长度相同,并作为外码列指向实体本身。类型、长度相同,并作为外码列指向实体本身。该属性的命该属性的命名需与主码属性不同,表明其用意名需与主码属性不同,表明其用意。外码的约束根据实际需。外码的约束根据实际需求进行确定。求进行确定。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:学生的转换:学生(学号
40、学号,出生日期,区名,邮编,街道,出生日期,区名,邮编,街道,路名门牌,学籍状态,学生来源,宗教信仰路名门牌,学籍状态,学生来源,宗教信仰)第二步第二步联系的联系的转换:学生转换:学生(学号学号,出生日期,区名,邮编,街道,出生日期,区名,邮编,街道,路名门牌,学籍状态,学生来源,宗教信仰,路名门牌,学籍状态,学生来源,宗教信仰,班长学号班长学号)班长学号作为学生的外码,参照自身的学号。根据实际情况班长学号作为学生的外码,参照自身的学号。根据实际情况一个班级可以暂时没有班长。所以允许为空。一个班级可以暂时没有班长。所以允许为空。学生学生n管理管理1 9.3.3 弱实体的表示弱实体的表示弱实体如
41、同强实体一样也是要转换成关系模式弱实体如同强实体一样也是要转换成关系模式。只是弱实体。只是弱实体一定拥有一个对应的标识实体类型一定拥有一个对应的标识实体类型(强实体类型强实体类型)。将。将标识实标识实体的主码加入到弱实体的关系模式中作为外码体的主码加入到弱实体的关系模式中作为外码。弱实体的。弱实体的部部分码加上外码分码加上外码,构成新关系模式的,构成新关系模式的主码主码。上图转换关系模式如下:上图转换关系模式如下:第一步第一步实体实体的转换:学生的转换:学生(学号学号,出生日期,区名,邮编,街道,出生日期,区名,邮编,街道,路名门牌,学籍状态,学生来源,宗教信仰路名门牌,学籍状态,学生来源,宗
42、教信仰)简历简历(起始日期,终止日期,所在学校起始日期,终止日期,所在学校)第二步第二步联系联系的转换:简历的转换:简历(学号学号,起始日期起始日期,终止日期,所在学校,终止日期,所在学校)学号是简历的外码,参照学生的学号,弱实体对应的关系模学号是简历的外码,参照学生的学号,弱实体对应的关系模式中外码同时也是主属性,不可取空。式中外码同时也是主属性,不可取空。学生学生 简历简历拥有拥有起始日期起始日期所在学校所在学校终止日期终止日期学号学号1n 9.3.4 聚集的表示聚集的表示把聚集看作是一般实体一样对待,此时把聚集看作是一般实体一样对待,此时对聚集无需用单独的对聚集无需用单独的关系模式表示关
43、系模式表示,直接将定义该聚集的联系看作高层实体即可。,直接将定义该聚集的联系看作高层实体即可。此前介绍的联系集上主码和外码的设置规则,也同样适用于此前介绍的联系集上主码和外码的设置规则,也同样适用于与聚集相关联的联系集。与聚集相关联的联系集。上图转换关系模式如下:上图转换关系模式如下:教师教师(工号工号,姓名,性别,出生日期,民族,职称,姓名,性别,出生日期,民族,职称)课程课程(课程号课程号,课程名称,总学时,类别,课程名称,总学时,类别)擅长擅长(工号工号,课程号课程号)班级班级(班级号班级号,班级名称,班级类型,班级名称,班级类型)任课任课(工号工号,课程号课程号,班级号班级号,学年学年
44、,学期学期)教师教师课程课程nm擅长擅长班级班级任课任课mn学期学期学年学年 9.3.5 逻辑结构设计的步骤逻辑结构设计的步骤1.E-R图向关系模型的转换图向关系模型的转换 关系模型的逻辑结构是一组关系模式的集合。关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体、实体图则是由实体、实体的属性和实体之间的联系三个要素组成。所以将的属性和实体之间的联系三个要素组成。所以将E-R图转换为关系模型图转换为关系模型实际上就是将实际上就是将实体及其联系转换为关系模式实体及其联系转换为关系模式,其转换原则上面几个小节,其转换原则上面几个小节已做介绍。已做介绍。2.数据模型的优化处理数据模型的优化处
45、理 数据库逻辑结构设计的结果不是唯一的。为了进一步提高数据库应用系数据库逻辑结构设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的逻辑结构,统的性能,还应该根据应用需要适当地修改、调整数据模型的逻辑结构,即做优化处理。通常以规范化理论为指导。即做优化处理。通常以规范化理论为指导。规范化到什么程度,是否保规范化到什么程度,是否保留冗余,要根据具体应用系统而定留冗余,要根据具体应用系统而定,最后形成全局逻辑模型。,最后形成全局逻辑模型。3.设计外模式(用户子模式)设计外模式(用户子模式)根据局部应用需求,结合具体根据局部应用需求,结合具体DBMS
46、的特点,设计外模式(用户子模的特点,设计外模式(用户子模式)。定义数据库全局模式主要是从系统的时间效率、空间效率、易维式)。定义数据库全局模式主要是从系统的时间效率、空间效率、易维护等角度出发。由于外模式与模式是相对独立的,因此在定义外模式时护等角度出发。由于外模式与模式是相对独立的,因此在定义外模式时可以注重考虑用户的习惯与方便及安全性等多方面需求。可以注重考虑用户的习惯与方便及安全性等多方面需求。9.4 E-R模型设计问题模型设计问题 1、E-R模型和规范化模型和规范化好的数据库设计者能够在建立好的数据库设计者能够在建立E-R模型时靠直觉经验识别实模型时靠直觉经验识别实体、属性和联系,直接
47、得到规范化的关系模式或只需稍许修体、属性和联系,直接得到规范化的关系模式或只需稍许修改即为规范化的关系模式,从而减少后期逻辑结构设计中规改即为规范化的关系模式,从而减少后期逻辑结构设计中规范化的工作。而范化的工作。而E-R模型设计不好就会在转换后的逻辑结构模型设计不好就会在转换后的逻辑结构中出现不合理的数据依赖中出现不合理的数据依赖,此时就要分析数据依赖关系进行,此时就要分析数据依赖关系进行规范化处理,避免冗余和异常。设计规范化处理,避免冗余和异常。设计E-R模型的重要性也正模型的重要性也正体现在这里,它从一开始就潜移默化地引导着设计者走向规体现在这里,它从一开始就潜移默化地引导着设计者走向规
48、范化的数据库设计。范化的数据库设计。例如:在建立例如:在建立E-R模型时,模型时,识别学生实体的属性时把班号和识别学生实体的属性时把班号和班主任老师作为刻画学生的属性班主任老师作为刻画学生的属性,那么学生实体对应的关系,那么学生实体对应的关系模式为:模式为:学生学生(学号学号,姓名,性别,入学年月,姓名,性别,入学年月,班级号,班主任老师,班级号,班主任老师)这里存在这里存在“学号学号班级号,班级号班级号,班级号班主任老师班主任老师”这一传递这一传递依赖从而导致冗余的发生,依赖从而导致冗余的发生,根源在于根源在于E-R模型设计不好模型设计不好。9.4 E-R模型设计问题模型设计问题 2、用实体
49、还是用属性、用实体还是用属性作为实体要包含刻画它的属性信息,而属性不能再包含刻画作为实体要包含刻画它的属性信息,而属性不能再包含刻画它的属性信息,即若有属性还有刻画它的属性,则该属性作它的属性信息,即若有属性还有刻画它的属性,则该属性作为实体来处理更为合适为实体来处理更为合适。例如,需求要求例如,需求要求“每位员工只在一个办公室办公每位员工只在一个办公室办公”,仅此要,仅此要求的话就可以把办公室房间号作为员工的属性,描述员工的求的话就可以把办公室房间号作为员工的属性,描述员工的办公地点信息,即可满足需求。办公地点信息,即可满足需求。但但若需求还要求记录房间的房间号、房间名称、使用类别、若需求还
50、要求记录房间的房间号、房间名称、使用类别、建筑面积等信息建筑面积等信息,并且学校每个房间都必须指定一个员工负,并且学校每个房间都必须指定一个员工负责。这种需求下,房间不仅是房间号单个属性,还有刻画它责。这种需求下,房间不仅是房间号单个属性,还有刻画它的其他属性存在,因此必须作为实体,并且和员工实体建立的其他属性存在,因此必须作为实体,并且和员工实体建立关联。关联。9.4 E-R模型设计问题模型设计问题 3、二元还是多元联系、二元还是多元联系三元联系关联三个实体,当二元联系无法准确描述关联的语义三元联系关联三个实体,当二元联系无法准确描述关联的语义时,就需时,就需要使用三元联系。要使用三元联系。