《数据库原理教程2》由会员分享,可在线阅读,更多相关《数据库原理教程2(86页珍藏版)》请在金锄头文库上搜索。
1、普通高等教育十一五规划教材 数据库原理教程,范明、叶阳东、邱保志、职为梅 编著 科学出版社,2008,第2章 实体-联系模型,2018年10月20日星期六,数据库系统原理,3,第2章 实体-联系模型,2.1 基本概念 2.2 实体-联系图 2.3 一个例子 2.4 弱实体集 2.5 扩展的E-R图 2.6 小结,2018年10月20日星期六,数据库系统原理,4,实体-联系模型,实体-联系(Entity-Relationship,简记为E-R)模型是一种概念模型,用于对现实世界建模 在E-R模型下,现实世界由一些称为实体的基本对象和这些基本对象之间的联系组成 E-R模型概念简单,并具有很强的语义
2、表达能力 E-R 模型用E-R图描述现实世界,构造概念模型 E-R图描述清晰,易于用户理解,是数据库设计人员与用户之间交流、沟通的有效工具 E-R模型容易转换成实际数据库管理系统支持的数据模型(如关系模型),从而易于在计算机上最终实现 E-R模型一直是最广泛使用的对现实世界进行建模的工具,2.1 基本概念,2018年10月20日星期六,数据库系统原理,6,2.1 基本概念,2.1.1 实体 2.1.2 联系,2018年10月20日星期六,数据库系统原理,7,实体,1. 实体和属性 2. 实体集和码 3. 属性分类,2018年10月20日星期六,数据库系统原理,8,实体(续),1. 实体和属性
3、实体是客观存在并且可以相互区分的任何事物 实体可以是人,也可以是物;可以是实际对象,也可以是抽象概念 例如,一个职工、一个学生、一辆汽车、一个部门、一张订单、一门课程等都可以看作一个实体 属性是实体所代表的事物具有的某种特性 每个实体都可以用一组属性来刻画 例如,我们可以用职工号、职工姓名、性别、出生年月、部门、住址、电话号码等属性来刻画职工实体 对于学生实体,我们可以用学号、学生姓名、性别、出生年月、院系、专业等属性来刻画,2018年10月20日星期六,数据库系统原理,9,实体(续),1. 实体和属性(续) 对于同一个实体,刻画它的属性集可以有不同的选择 选择哪些属性来刻画一个实体取决于数据
4、管理的实际需要 每个属性都有一定的取值范围,称为该属性的值域 最常见的属性值域是整数、实数或字符串的集合 例如,学号的值域可以是长度为9的数字字符串的集合,姓名的值域可以是长度不超过4个汉字的字符串的集合,2018年10月20日星期六,数据库系统原理,10,实体(续),2. 实体集和码 实体集是具有相同属性的实体的集合 实体的属性也就是它所在的实体集的属性 每个属性都是一个函数,它将实体集中的每个实体映射到该属性值域上的一个具体值 通常对实体集命名,以便引用 命名的方法是任意的,但是采用助记忆的名称有助于理解 例如,我们可以用“学生”或Students表示所有学生的集合,用“职工”或Emplo
5、yees表示所有职工实体的集合,2018年10月20日星期六,数据库系统原理,11,实体(续),2. 实体集和码(续) 实体和实体集都具有型和值 实体和实体集的型都用其属性名的列表表示 例如,学生实体(集)的型可以用(学号,学生姓名,性别,出生年月,院系,专业)表示 实体的值是该实体诸属性值的列表 例如,(200505198,江涛,男,1987.4,信息工程学院,软件工程)就是一个名叫江涛的学生 实体集的值是该实体集中所有实体值的集合 在提到实体或实体集时,是指型还是指值,应当从上下文理解,2018年10月20日星期六,数据库系统原理,12,实体(续),2. 实体集和码(续) 其值可以惟一确定
6、实体集中每个实体的属性集称为该实体集的超码 例如,对于学生实体集,学号和学号,姓名都是超码 如果K是超码,则K的任意超集(即包含K的集合)也是超码 超码可能包含一些无关紧要的属性 那些真子集都不是超码的极小超码被称为候选码 例如,对于部门实体集,部门号和部门名称都是超码,并且也都是候选码,因为它们都是极小的 所谓主码是指数据库的设计者选中的,用来区分同一实体集中不同实体的候选码 例如,对于部门实体集,我们可以选择部门号为主码 在不需要特别强调主码时,本书使用“码”表示主码或候选码,而超码是码的超集,2018年10月20日星期六,数据库系统原理,13,实体(续),2. 实体集和码(续) 在数据库
7、的文献上,对于单个属性的集合,常常不使用集合记法,而直接用属性名 例如,习惯上,我们说学生实体集的码是学号 原则上讲,每个实体集都有一个码,因为实体是可以相互区分的,而E-R模型正是用实体的码值区分实体 注意:码是语义概念,是实体集的性质,因此一个属性集是否能够成为实体集的码,需要根据现实世界的实际情况来确定 例如,如果能够保证所有职工都不同名同姓,那么职工姓名就可以作为职工实体集的码;否则,即便职工实体集的当前值中不含同名同姓的职工,我们也不能用职工姓名作为职工实体集的码,2018年10月20日星期六,数据库系统原理,14,实体(续),3. 属性分类 一个属性是简单的,如果它不能划分成更小的
8、部分 一个属性是单值的,如果一个特定的实体在该属性上只能取单个值 一个属性是基本的,如果它的值不能通过其他属性的值推导出来(即它的值必须存储在系统中) E-R模型还允许更复杂的属性,包括复合属性、多值属性和派生属性,2018年10月20日星期六,数据库系统原理,15,实体(续),3. 属性分类(续) 与简单属性相对应的是复合属性 复合属性是可以划分成更小部分的属性(即可以分成一些其他属性) 例如,供应商地址就是一个复合属性,它可以划分成省(市)、城市(县)、街道和邮政编码等部分(称为成分属性) 如果实际应用既需要将供应商地址作为整体处理(如显示供应商的详细地址),也需要考虑供应商地址的一部分时
9、(如询问供应商所在城市),允许复合属性是方便的 复合属性将相关属性聚集起来,使得模型更清晰,2018年10月20日星期六,数据库系统原理,16,实体(续),3. 属性分类(续) 与单值属性相对应的是多值属性 多值属性是特定的实体在该属性上可以取多个值的属性 例如,如果一个供应商可以有多部电话(手机、家庭电话和多部办公电话),那么供应商电话号码就是一个多值属性,2018年10月20日星期六,数据库系统原理,17,实体(续),3. 属性分类(续) 与基本属性相对应的是派生属性 派生属性的值可以从其他相关属性或实体计算得到,因此派生属性又称计算属性 派生属性的值可以不存储 例如,职工的实发工资可以从
10、该职工的应发工资(包括基本工资、职务工资等)减去扣除部分(包括个人所得税、医疗保险、公积金等)得到 银行客户的贷款总额可以通过对该客户各笔贷款金额求和得到 尽管派生属性的值不存储在数据库中,但这种属性是用户关注的,在建立概念模型时应该体现,2018年10月20日星期六,数据库系统原理,18,联系,在现实世界中,事物之间常常是有联系的 例如,学生对课程的选修就是学生与课程之间的联系,而经理对部门的管理则是经理与部门之间的联系最常见的联系是两个实体之间的联系(二元联系),但是联系也可能存在于多个对象之间 例如,供应商、产品和客户之间的供应联系就是一个典型的例子不仅不同类型的对象之间存在联系,而且相
11、同类型的不同对象之间也可能存在联系 例如,职工内部上下级之间的领导关系就是同一类型的不同对象之间的联系,2018年10月20日星期六,数据库系统原理,19,联系,1. 联系与联系集 2. 联系的类型 3. 实体的参与类型 4. 联系的属性,2018年10月20日星期六,数据库系统原理,20,联系(续),1. 联系与联系集 在E-R模型中,现实世界对象之间的联系可以抽象为实体之间的联系 联系是多个实体之间的相互关联 联系集是相同类型联系的集合 形式地说,设E1, E2, , En是n(n 2)个实体集,它们不必互不相同。联系集R是(e1, e2, , en) | e1 E1, e2 E2, ,
12、en En的一个子集,其中(e1, e2, , en) R是一个联系,并称ei(1 i n)是该联系的参与者,n是联系的度(元) 联系集R的型可以用(E1, E2, , En)表示,它也是联系(e1, e2, , en) R的型 最常见的联系是二元联系 三个实体集之间的联系也会遇到 三个以上实体集之间的联系实践中很少见,2018年10月20日星期六,数据库系统原理,21,联系(续),1. 联系与联系集(续) 例2.1 让我们考虑实体集Students(学生)和实体集Courses(课程) 学生和课程之间的一个联系是“选修”联系,它的型是(Students,Courses) “选修”联系集SC是
13、(s, c) | s Studentsc Courses的子集,仅包含s Students,c Courses,并且学生s选修了课程c的二元组(s, c) 注意:在数据库的文献中,术语“联系”有时表示一个具体的联系,有时表示联系集,有时表示联系(集)的型,这需要从上下文区分,2018年10月20日星期六,数据库系统原理,22,联系(续),1. 联系与联系集(续) 实体在联系中的作用称为实体的角色 如果参与联系的实体来自不同的实体集,则实体的角色是不言而喻的 联系也可以是同一实体集诸实体之间的联系 当参与联系的多个实体来自同一个实体集时,就需要解释每个实体的角色 例如,我们可以在实体集职工Emp
14、loyees的实体之间定义“工作”联系Works_for,它的类型是实体集的有序列表(Employees, Employees)。Works_for的二元组(e1, e2)可以解释为e1是“工作人员”,e2是“经理”。即e1的角色是“工作人员”,而e2的角色“经理”,2018年10月20日星期六,数据库系统原理,23,联系(续),2. 联系的类型 联系的类型又称联系的函数性或映射基数 两个实体集E1和E2之间联系必然是如下四种类型之一 一对一 一对多 多对一 多对多 一对一联系(1:1联系):如果E1中的每个实体最多与E2中的一个实体相关联,并且E2中的每个实体也最多与E1中的一个实体相关联,
15、则称E1和E2之间联系为一对一联系。 注意:“最多”意味E1中的某些实体可以不与E2中的任何实体相关联, E2中的某些实体也可以不与E1中的任何实体相关联。 E1和E2之间的一对一联系R可以看作E1到E2的部分映射(或相反),2018年10月20日星期六,数据库系统原理,24,联系(续),2. 联系的类型(续) 例如,实体集“部门”和“经理”之间的联系“管理”可以是一对一联系 这意味每个部门只能有一个经理,并且每个经理都不能管理两个或两个以上部门 但是,可能某个部门目前尚无经理;也可能有人被任命为经理,但眼下尚未安排到具体部门,2018年10月20日星期六,数据库系统原理,25,联系(续),2
16、. 联系的类型(续) 一对多联系(1: n联系):如果E1中的每个实体都可以与E2中任意多个实体相关联,而E2中的每个实体最多与E1中一个实体相关联,则称这种联系为E1到E2的一对多联系。 多对一联系(n:1联系):如果E1中的每个实体最多与E2中的一个实体相关联,而E2中的每个实体都可以与E1中任意多个实体相关联,则称这种联系为E1到E2的多对一联系。 E1 到E2的多对一联系R可以看作E1到E2的部分映射 从一对多和多对一联系的定义可以看出 联系R是E1到E2的一对多联系,当且仅当R是E2到E1的多对一联系。,2018年10月20日星期六,数据库系统原理,26,联系(续),2. 联系的类型(续) 例如,实体集“职工”到实体集“部门”的联系“属于”就可以是多对一联系,意味每个职工只能属于一个部门,而每个部门可以有多个职工。但是,可能有些职工(如公司总裁)并不属于任何部门;也可能存在刚成立的部门,还没有职工,2018年10月20日星期六,数据库系统原理,27,联系(续),2. 联系的类型(续) 多对多联系(m:n联系):如果E1中的每个实体都可以与E2中任意多个实体相关联,并且E2中的每个实体也可以与E1中任意多个实体相关联,则称E1和E2之间联系为多对多联系。 例如,学生和课程之间的联系“选修”就是多对多联系,因为每个学生都可以选修多门课程,而每门课程都可以被多个学生选修,