《第8章 概念模型.ppt》由会员分享,可在线阅读,更多相关《第8章 概念模型.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第8章 概念模型概念模型建模-E/R图E/R图向关系模型转换小结1数据模型数据模型数据模型分成两个不同的层次(1)概念模型概念模型 也称信息模型,它是按用户的观点也称信息模型,它是按用户的观点对数据和信息建模。对数据和信息建模。(2)数据模型数据模型 主要包括网状模型、层次模型、关主要包括网状模型、层次模型、关系模型面向对象等,它是按计算机系统的观点对数系模型面向对象等,它是按计算机系统的观点对数据建模据建模。2数据模型数据模型(续)客观对象的抽象过程-两步抽象现实世界中的客观对象抽象为概念模型;现实世界中的客观对象抽象为概念模型;把概念模型转换为某把概念模型转换为某一一DBMS支持的数据模型
2、。支持的数据模型。概念模型是现实世界到机器世界的一个中间层次。3数据模型概念模型1.概念模型2.信息世界中的基本概念3.概念模型的表示方法4数据模型概念模型概念模型的用途概念模型的用途概念模型用于信息世界的建模是现实世界到机器世界的一个中间层次是数据库设计的有力工具数据库设计人员和用户之间进行交流的语言对概念模型的基本要求对概念模型的基本要求有丰富的语义表达能力,能表达用户的各种需求;简洁、明晰、独立于机器、容易理解;易于变动;易于向各种数据模型转换。5数据模型信息世界中的基本概念(1)实体(Entity)客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。(2)属性(At
3、tribute)实体所具有的某一特性称为属性,它是用来描述实体的某些特定性质。一个实体可以由若干个属性来刻画。简单属性简单属性:例如,姓、名、性别 复合属性复合属性:地址(城市、街道)单值属性单值属性:sex 多值属性多值属性:Colors存储属性存储属性:birthday 派生属性派生属性:age 6数据模型信息世界中的基本概念复杂属性:复杂属性:复合属性和多值属性能够以任意方式嵌套。可把复合属性复合属性的组成属性放在圆括号内(),用逗号分割,多值属性多值属性放在花括号内。StreetAddress(Number,Street,ApartmentNumber)Colors7数据模型信息世界中
4、的基本概念(3)码(Key)唯一标识实体的属性集称为码。唯一标识实体的属性集称为码。(4)域(Domain)属性的取值范围称为该属性的域属性的取值范围称为该属性的域。8数据模型信息世界中的基本概念(5)实体型(Entity Type)用实体名及其属性名集合来抽象和刻画用实体名及其属性名集合来抽象和刻画同类实体称为实体型同类实体称为实体型(6)实体集(Entity Set)同型实体的集合称为实体集同型实体的集合称为实体集9数据模型信息世界中的基本概念(续)(7)联系(Relationship)现实世界中事物内部以及事物之间的联系在信息世界现实世界中事物内部以及事物之间的联系在信息世界中反映为实体
5、内部的联系和实体之间的联系。中反映为实体内部的联系和实体之间的联系。通通常常,实实体体集集之之间间的的关关联联称称为为参参与与,而而实实体体在在联联系中的作用称为实体的角色。系中的作用称为实体的角色。10数据模型实体型间联系有有两两个个参参与与实实体体集集的的联联系系,通通常常称称为为二二元元联联系系;有有三三个个参参与与实实体体集集的的联系,称为三元联系;有多个参与实体集的联系,称为多元联系。联系,称为三元联系;有多个参与实体集的联系,称为多元联系。联联系系中中参参与与实实体体集集的的个个数数称称为为联联系系的的度度。二二元元联联系系度度为为2,三三元元联联系系度为度为3。两个实体型两个实体
6、型 一对一联系(一对一联系(1:1)三个实体型三个实体型 一对多联系(一对多联系(1:n)一个实体型一个实体型 多对多联系(多对多联系(m:n)11数据模型两个实体型间的联系 一对一联系 如如果果对对于于实实体体集集A中中的的每每一一个个实实体体,实实体体集集B中中至至多多有有一一个个实实体体与与之之联联系系,反反之之亦亦然然,则则称称实实体体集集A与与实体集实体集B具有一对一联系具有一对一联系。记为。记为1:1。实例班级与班长之间的联系:班级与班长之间的联系:一个班级只有一个正班长一个班级只有一个正班长一个班长只在一个班中任职一个班长只在一个班中任职12数据模型两个实体型间的联系(续)一对多
7、联系如如果果对对于于实实体体集集A中中的的每每一一个个实实体体,实实体体集集B中中有有n个个实实体体(n0)与与之之联联系系,反反之之,对对于于实实体体集集B中中的的每每一一个个实实体体,实实体体集集A中中至至多多只只有有一一个个实实体体与与之之联联系,则称系,则称实体实体集集A与实体集与实体集B有一对多联系有一对多联系 记为记为1:n实例班级与学生之间的联系:班级与学生之间的联系:一个班级中有若干名学生,一个班级中有若干名学生,每个学生只在一个班级中学习每个学生只在一个班级中学习13数据模型两个实体型间的联系(续)多对多联系(m:n)如如果果对对于于实实体体集集A中中的的每每一一个个实实体体
8、,实实体体集集B中中有有n个个实实体体(n0)与与之之联联系系,反反之之,对对于于实实体体集集B中中的的每每一一个个实实体体,实实体体集集A中中也也有有m个个实实体体(m0)与与之之联联系系,则则称称实实体体集集A与与实实体体B具具有有多多对对多多联联系系。记记为为m:n实例课程与学生之间的联系:课程与学生之间的联系:一门课程同时有若干个学生选修一门课程同时有若干个学生选修一个学生可以同时选修多门课程一个学生可以同时选修多门课程14数据模型多个实体型间的联系(续)多个实体型间的一对多联系若实体若实体集集E1,E2,.,En存在联系,对于存在联系,对于实体集实体集Ej(j=1,2,.,i-1,i
9、+1,.,n)中的给定实体,最多只和中的给定实体,最多只和Ei中的一个中的一个实体相联系,则我们实体相联系,则我们说说Ei与与E1,E2,.,Ei-1,Ei+1,.,En之间的联系是一对多的。之间的联系是一对多的。15数据模型多个实体型间的联系(续)实例 课程、教师与参考书三个实体型课程、教师与参考书三个实体型如果一门课程可以有若干个教师讲授,使用若干如果一门课程可以有若干个教师讲授,使用若干本参考书,每一个教师只讲授一门课程,每一本本参考书,每一个教师只讲授一门课程,每一本参考书只供一门课程使用参考书只供一门课程使用课程与教师、参考书之间的联系是一对多的课程与教师、参考书之间的联系是一对多的
10、多个实体型间的一对一联系多个实体型间的多对多联系16数据模型同一实体集内各实体间的联系一对多联系实例 职工实体集内部具有领导与被领导的联系职工实体集内部具有领导与被领导的联系某一职工(干部)某一职工(干部)“领导领导”若干名职工若干名职工一个职工仅被另外一个职工直接领导一个职工仅被另外一个职工直接领导这是一对多的联系这是一对多的联系一对一联系多对多联系17数据模型联系集的概念联系集:联系集:n个实体集E1、E2、E3、.En之间的联系集R 在这些实体集的实体之间定义了一个关联的集合,或者说联系集(relationship set)18数据模型联系集的数学表达联系集的数学表达联系集R是联系实体(
11、relationship instances)ri的一个集合,这里每个ri与n个单独的实体(e1,e2,e3,en)相关联,并且每个实体ej是实体集Ej的成员。因此,一个联系集是E1,E2,.En的一个数学关系。换句话说,它可以定义为笛卡尔积E1 X E2 X.En的一个子集。19数据模型联系集的数学表达联系集的数学表达(续续)例:例:联系集是同一类联系的集合。考虑两个联系集是同一类联系的集合。考虑两个实体集学生和课程,我们定义联系集实体集学生和课程,我们定义联系集选课选课来表示学生和课程之间的联系。来表示学生和课程之间的联系。20数据模型概念模型的表示方法概念模型的表示方法很多实体联系方法(
12、E-R方法)用E-R图来描述现实世界的概念模型E-R方法也称为E-R模型21数据模型E-R图实体型用矩形表示,矩形框内写明实体名。学生学生教师教师22数据模型E-R图(续)属性用椭圆形表示,并用无向边将其与相应的实体连接起来学生学生学号学号年龄年龄性别性别姓名姓名23数据模型E-R图(续)联系联系集联系集:在在ER 图中,联系集用图中,联系集用菱形框菱形框表示,并用表示,并用线段把菱形框和表示参与实体集的矩形框相连。线段把菱形框和表示参与实体集的矩形框相连。在在菱形框中注明联系名菱形框中注明联系名。箭头箭头表示用来表示联系的多重性。如果一个联系是从实体表示用来表示联系的多重性。如果一个联系是从
13、实体集集E到实体集到实体集 F的多对一联系,那么就用一个指向的多对一联系,那么就用一个指向F的箭头的箭头表示。表示。24数据模型联系的表示方法示例班级班级班级班级-班长班长班长班长111:1联系联系课程课程选修选修学生学生mnm:n联系联系班级班级组成组成学生学生1n1:n联系联系25数据模型二元联系示例【例例8-1】班级与学生之间的一对多二元联系E/R图表示26数据模型三元联系示例课程课程讲授讲授教师教师1m多个实体型间的多个实体型间的1:n联系联系参考书参考书n【例例8-2】如果一门课如果一门课程可以有若干个教程可以有若干个教师讲授,使用若干师讲授,使用若干本参考书,每一个本参考书,每一个
14、教师只讲授一门课教师只讲授一门课程,每一本参考书程,每一本参考书只供一门课程使用只供一门课程使用27数据模型三元联系示例【例例8-3】多元联系例二,实体集供应商,部件和项目之间存在多对多的三元联系28数据模型一元联系在某些情况下,同一个实体集可以以不同的角色不止一次地参与到一个联系集中。角色名称对于区别每次参与的不同含义来说是至关重要的。我们称这样的联系集为递归联系。一个实体集在联系中出现多少次,我们就从联一个实体集在联系中出现多少次,我们就从联系到这实体集画多少条线。到实体集的每一条系到这实体集画多少条线。到实体集的每一条线代表实体集所扮演的一个角色。线代表实体集所扮演的一个角色。29数据模
15、型一元联系联系集管理管理把员工和主管联系起来,实体员工和主管都来自同一个实体类型雇员。因此实体集雇员在联系集管理中参与了两次:一次是以管理者的角色,一次是以被管理者的角色出现的,其E/R图:30数据模型联系的属性【例例8-5】在学生选修课程时,由于选课联系产生了一个属性“成绩”,该属性就是联系集“选课”的属性,可以用E/R图表示如图:对于多对多的联系类型,某些属性是由联系实例中参与实体联合决定的,而非取决于任何单独的实体,这样的属性必须指定为联系的属性。31数据模型对于一对一和一对多的联系集的属性可以被转移到某个参与实体集上来。【例例8-6】例如员工为部门工作32数据模型多元联系与二元联系转换
16、多元联系与二元联系转换 多元联系可以转换成二元多对一的联系的聚集 方法:引入一个新的实体集(不妨叫做连接实体集),并把它的实体看作是多元联系所对应的联系集的联系。然后,引入从连接实体集到参与最初的多元联系的每个实体集的多对一联系。如果一个实体集扮演多个角色,那么它将是每个角色所对应的一个联系的目标。33数据模型多元联系与二元联系转换多元联系与二元联系转换例如,对于前面提到课程与教师、参考书之间的一对多三元联系,增加一个练习实体集“授课”,它与其他参与实体集形成一对多的二元联系,实现了把一个多元练习变成了用三个二元联系的E/R图表达:34数据模型特殊化特殊化 在实体集内部进行的分组过程称为特殊化
17、,在E-R图中,使用标记为“ISA”的三角形构件来表示特殊化。例如:实体集“学生”,可以进一步划分为多类学生:本科生、研究生。每一类学生都有“学生”实体集的所有属性和一些特定的附加属性构成的属性集来描述。例如研究生需要加入研究方向等属性来进一步描述。35数据模型特殊化特殊化关于特殊化的几点说明:特殊化所产生的高层实体集和低层实体集一个重要的特性是属性继承。高层实体集的属性被低层实体集所继承。同高层实体集相联系的所有属性和联系也适用于它的所有低层实体集低层实体集特有的性质仅适用于某个特定的低层实体集。如果一个实体集作为低层实体集能参与到多个ISA联系中,这时所产生的结构称为格。36数据模型37数
18、据模型对约束建模对约束建模 除了应用上述基本符号,还常用下列符号表示特定情况:双线椭圆表示多值属性,虚线椭圆表示派生属性,在属性名下用下划线表示键码属性,用双线表示一个实体全部参与到联系集中。38数据模型【例例8-7】学生实体集,其中学号是键码属性,电话是多值属性,年龄是派生属性,则可以用E/R图表示:39数据模型除了上述约束,用户也可以根据实际情况定义一般约束:例如,每个班级学生人数不能超过40,可以表示 40数据模型如果实体x的存在依赖于实体y的存在,那么就说x存在依赖于y。在操作上,如果y被删除,那么x也要被删除。实体y称作支配实体,实体x称作从属实体。例如,一个银行账户一定依赖于某一个
19、为之开户储蓄所,即所有的账户都要参与到联系中,所以可以用双线表示其依赖性:帐户储蓄所属于41数据模型 弱实体集 有一些实体集,其本身的属性不足以构成键码,这样的实体集称为弱实体集。对于弱实体集,组成其键码的属性中的一些或全部属于另一个实体集。产生弱实体集的原因主要有两个:实体集的层次结构引起的联系集引起的42数据模型在E/R图中,用双线的矩形双线的矩形表示弱实体集,用双线的菱形双线的菱形表示连接弱实体集以及为其提供键码的实体集之间的联系。43数据模型弱实体集可以从其他实体集得到键码属性,那么是不弱实体集可以从其他实体集得到键码属性,那么是不是什么属性都可以提供给弱实体集做键码属性呢?是什么属性
20、都可以提供给弱实体集做键码属性呢?如果E是一个弱实体集,那么为其提供键码属性的每一个实体集F必须通过联系R和E相连,满足的条件是:R必须是从E到F的二元的多对一联系。F为E的键码提供的属性必须是F的键码属性。如果F本身是弱实体集,那么F提供给E的键码属性可能是通过多对一的联系与F相关的某个实体集的属性。44数据模型【例例8-9】实体集社团、球队和队员。社团的名字是唯一的。一个社团不会有两个同名的球队。一个球队不会有两个同号的队员。然而,在不同的球队可以有同号的队员,在不同的社团可以有同名的球队。45数据模型设计原则真实性:设计应当忠于规范,即实体集和它们的属性应当反映现实。例如,不能给学生附加
21、不相干的属性,不能把学生与课程之间多对多的联系设计成一对多的联系或者一对一的联系。避免冗余对简单性的考虑选择合适的元素类型46数据模型避免冗余冗余的危险:占用更过的空间数据不一致学生班级学习于所在班级如果一名同学转到其他班级?47数据模型对简单性的考虑没有必要在设计中引入过多的元素例如:假设存在电影所有权电影所有权实体48数据模型选择合适的元素类型(1)可以把学生实体集设计成具有学生姓名和电话号码两个属性;也可以把电话号码作为一个单独的实体,它具有属性电话号码和位置,此时学生实体集就只有学生姓名属性了。这样的话就有了下面的设计:实体集:学生,具有属性学生姓名。实体集:电话,具有属性电话号码和位
22、置。联系集:拥有,学生与电话之间的多对多二元联系49数据模型学生实体集的这两次定义有什么差别呢?前一种情况隐含说明了每个学生只能有一个电话号码,而后一种情况则意味着每个学生可以有多个电话号码。但是属性学生姓名不能单独作为一个实体,它只能是实体集学生的一个属性。由此自然产生了两个问题:什么可以作为属性?什么可以作为实体集?建议建议:如果某个事物具有比它的名字更多的信息,那么可能需要一个实体集如果某个事物为设计提供的只有它的名字,作为属性可能更好50数据模型选择合适的元素类型(2)用实体集还是用联系?一个对象表述为实体集还是联系集并不总是非常清楚。例如,银行的贷款可以作为一个实体集来建模,也可以将
23、贷款作为客户和银行分支机构之间的一个联系。如果每一笔贷款正好为一个客户所有,可以发现用联系来表示贷款是能够满足要求的。但是如果允许一笔贷款有多个客户,则用联系来表示贷款就不能方便地表示几个客户共有一笔贷款的情况,必须为共有贷款的每个人分别定义一个联系,由于客户数量的不确定性,这几乎是做不到的事情。在后面这种情况下,如果将贷款视为实体集来建模,就可以很好的解决问题。在确定用实体集还是用联系集时,可以采用的一个原则是,当描述发生在实体之间的行为时采用联系集。51数据模型选择合适的元素类型(3)二元联系集与多元联系集 一个多元联系集总可以用一组不同的二元联系集来代替,并且学习了替换的基本方法。因此,
24、从理论上讲,可以限制E/R模型中只包含二元联系集,然而,这样限制并不总是令人满意。对于为表示联系集而创建的实体集,可能不得不为其创建一个标识属性。该标识属性和所需附加的那些联系集增加了设计的复杂程度以及对总的存储空间的需求。多元联系集可以更清晰地表示出几个实体集参与到一个联系集中,而在对应的使用二元联系的设计中,难以体现这样的参与性约束。另外,有些联系用二元联系表示更合适些,尤其是采用UML或者ODL建模,或者把E/R模型向这些建模方式转换时,联系必须是二元的,因为他们只支持二元的联系。52数据模型E/R图实例【例例8-10】一个学校进行课程安排,要求是一名教师每学期可以上多门课,每门课也可以
25、多个教师上。一名学生每学期都可以选多门课,每门课程可以供多名学生选择 53数据模型 E/R图到关系模型的转换1、实体集的转化实体集的转化对于E/R模型中的每个普通(强)实体集E,创建一个包括E的所有简单属性的关系R。如果实体集E中有复合属性,则关系R中只需要包括其简单成员属性。选择E 的一个码属性作为R的键码。如果所选择的E的码是复合属性,那么组成该复合属性的简单属性的集合将成为R 的键码。54数据模型E/R图到关系模型的转换1、实体集的转化实体集的转化按照上述原则,实体集教师、学生和课程转化为对应的关系教师(职工号,姓名,性别,职称,所在单位,简历)学生(学号,姓名,性别,专业班级,政治面貌
26、)课程(课程名称,学时,开课学期,简介)55数据模型E/R图到关系模型的转换2、弱实体集的转化、弱实体集的转化为E/R模型中与实体集E相关联的每个弱实体集W创建关系R,并把W的所有简单属作为R的属性。此外,把对应于E的关系的键码作为R的外码。因此,R的键码是对应于E的关系的键码和弱实体集W的部分码的组合。56数据模型按照上述原则,弱实体集授课计划转换为关系授课计划(课程名称,职工号,学期),其键码是课程名称+职工号+学期,其中课程名称、职工号分别参照了课程与教师关系的键码,在授课计划关系中是外码。57数据模型3、1:1二元联系的转化二元联系的转化对于E/R模型中的每个1:1二元联系集R,识别相
27、应于R的参与实体集的关系S和T。选择其中的一个关系,例如,S,把T的键码作为S的外码。对于1:1联系集的另外一种映射方法是:把两个实体集和该联系合并为一个单独的关系。58数据模型首先将实体集班级与班长转换成为对应的关系:班级(班级名称,专业,人数)班长(学号,性别,性别)对于1:1的二元联系“担任”进行转换,在这里,选择关系班级,在关系班级中加入一个属性学号,作为外码,参照关系班长中的键码“学号”。所以,就得到了最终的关系:班级(班级名称,专业,人数,学号)班长(学号,性别,性别)59数据模型1:N二元联系的转化二元联系的转化 对于每个1:N普通二元联系集R,识别表示联系集中N方参与实体集的关
28、系S。因为N方的每个实体至多和联系集中1方的一个实体实例相关,因此,把R中表示另外一个参与事体集的关系T的键码作为S的外码。S的属性外包括1:N联系类型中所有得简单属性(或复合属性的简单成员熟性)。60数据模型在转换时,首先将实体集学生和班级转换为对应的关系:班级(班级名称,专业,人数)学生(学号,姓名,性别,生日)然后处理它们之间的联系“组成”,在关系学生中加入一个属性“所在班级”,该属性参照了关系班级中的班级名称,在学生关系中是外码。所以得到了下面最终的关系:班级(班级名称,专业,人数)学生(学号,姓名,性别,生日,所在班级)61数据模型首先将实体集班级与学生转换为对应的关系:班级(班级名
29、称,所属专业,班容量)学生(学号,姓名,生日,性别)一对一的二元联系“任班长”,结果如下:班级(班级名称,所属专业,班容量,班长学号)注意,每一个班级在“任班长”联系中都要参与,而只有部分学生参与该联系,所以在班级关系中设外码比在学生关系中设外码要合理。一对多的二元联系“组成”,E/R图的最终转换结果为:学生(学号,姓名,生日,性别,所在班级)班级(班级名称,所属专业,班容量,班长学号)62数据模型M:N二元联系的转化二元联系的转化 对于每个M:N二元联系集R,创建一个新的关系S来表示R。把表示参与实体集的关系的键码作为S的外码,这些键码的组合形成S的键码。同时把M:N联系集的所有简单属性作为
30、S的属性。63数据模型该E/R图中的实体集与弱实体集转换为下面对应的关系:教师(职工号,姓名,性别,职称,所在单位,简历)教师(职工号,姓名,性别,职称,所在单位,简历)学生(学号,姓名,性别,专业班级,政治面貌)学生(学号,姓名,性别,专业班级,政治面貌)课程(课程名称,学时,开课学期,简介)课程(课程名称,学时,开课学期,简介)授课计划(课程名称,职工号,学期)授课计划(课程名称,职工号,学期)该图中有一个多对多的二元联系“选课”,在转换时,对这个联系创建一个新的关系“选课”来表示它,该关系中除了有该联系本身的属性成绩以外,还要引入学生与授课计划关系的键码作外码。所以,就得到了下面的关系模
31、式:选课(学号,课程名称,职工号,学期,成绩)选课(学号,课程名称,职工号,学期,成绩)64数据模型6、弱联系的转化、弱联系的转化为每个多值属性A创建一个新的关系R。关系R包括一个对应于A的属性和外码K。K是表示具有属性A 的实体集或联系集的关系的键码属性。R的键码是A和K的联合。【例例】假设学生实体集有一个多值属性“联系电话”,在转换该属性时,需要创建一个新的关系“联系电话”,该关系具有电话号码属性,还有一个外码属性学号,参照学生关系的学号。转换结果是:联系电话(学号,联系电话)65数据模型8、多元联系的转化、多元联系的转化对于多元联系的考虑,为每个多元联系集R创建一个新的关系S。把表示参与
32、实体集的关系的键码作为S的外码。同时把多元联系集的所有简单属性(或复合属性的简单成员属性)作为作为S的属性。S的键码通常是引用表示参与实体集的关系的所有外码的组合。66数据模型首先将三个实体集转换为对应的三个关系:课程课程(课程编号,课程名称,课程学时课程编号,课程名称,课程学时)教师教师(职工号,姓名,职称,学历职工号,姓名,职称,学历)参考书参考书(出版号,书籍名称,出版社,出版时间出版号,书籍名称,出版社,出版时间)由于作者是多值属性,所以需要为它创建一个新的关系:作者作者(出版号,作者姓名出版号,作者姓名)然后装换多元联系“讲授”为其创建一个新的关系“讲授”,在该关系中加入外码课程编号
33、,职工号,出版号,分别参照课程,教师和参考书三个关系的键码属性,这三个外码联合起来做该关系的键码:讲授(课程编号,职工号,出版号)讲授(课程编号,职工号,出版号)67数据模型9、ISA联系的转化联系的转化ISA联系虽然是一个联系转换,但是它与其他联系不同,它连接的是单个实体的分量,而不是不同的实体,因此,不能为ISA创建关系。但是参与ISA联系的实体集,如果不是层次的根,则其所对应的关系中要引入根实体集中的键码属性作外码。68数据模型图中的实体集研究生对应的关系“研究生”中,除了要其自身的属性研究方向以外,还要引入外码属性学号,该属性参照了学生关系中的键码属性:研究生(学号,研究方向)69数据模型