本文主要是介绍实体-联系模型(Entity-Relationship),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实体-联系模型(Entity-Relationship)
简称为ER,实体联系模型是一种概念模型,用于对显示世界建模,概念简单易于理解,且与具体的数据模型无关,但容易转换成实际数据库管理系统所支持的数据模型
第二讲 实体-联系模型
- 实体-联系模型(Entity-Relationship)
- 2.1实体
- 2.2联系
- 2.3实体-联系图
- 2.4弱实体集
2.1实体
实体:客观存在并且可以互相区分的任何事物,可以是实际对象,也可以是抽象概念。
属性:实体所代表的事物具有的某种特性,每个实体都可以用一组属性来刻画。例如,我们可以用学号、姓名、性别、出生年月、专业等属性来刻画学生实体。对于同一个实体,刻画它的属性集可以有不同的选择。
实体集:
- 实体集是具有形同属性的实体的集合。实体和实体集的型都有其属性名的列表表示。例如,学生实体(集)的型可以用(学号,学生姓名明星别,出生年月,院系,专业)
- 实体的值是该实体诸属性值的列表。(201606198,江涛,1997.4,计算机)
- 实体集的值是对该实体集中所有实体值的集合。例: {(201605001,杨万里,男,1997.12,计算机),(201606198,江涛,1997.4,计算机),(…)…}
码:
- 超码:能够唯一确定实体集中每个实体的属性集成为该实体集的超码。
- 候选码:真子集都不是超码的极小超码是候选码。
- 主码:主码是指数据库的设计者选中的,用来区分同一实体集中不同实体的候选码。
- 码:表示主码或候选码,而超码是码的超集。
- 例子:对于学生实体集中,{学号}和{学号,姓名}都是超码,{学号}是极小超码,因为它的真子集是空集,不是超码,如果不允许重名的话,{姓名}也是极小超码,{学号},{姓名}都是候选码,可以选择{学号}作为主码。
注意:在数据库文献中,对于单个属性的集合常常不适用集合记法,而直接使用属性名。{学号}可直接写为学号。码是语义概念,需要根据显示世界的实际情况来确定。
属性分类:简单属性、复合属性、单值属性、多值属性、基本属性、派生属性
- 简单属性指的是不能划分成更小部分的属性。例如,供应商的性别、姓名、出生年月。
- 复合属性和简单属性相对应,是可以划分更小部分的属性。例如,供应商地址。
- 单值属性是特定的实体再该属性上只能取单个值的属性。例如,id、姓名、性别。
- 多值属性是特定的实体再改属性上可以取多个值的属性。例如,联系方式。
- 基本属性是不能通过其他属性的值来推导出来(即它的值必须存储在系统中)的属性。例如,年龄。
- 派生属性的值可以从其他相关属性或实体计算得到,因此派生属性又称计算属性。例如,年龄。
2.2联系
联系是多个实体之间的相互联系。
联系集是相同类型联系的集合。
- 形式的说,设E1,E2,······,En是n(n>=2)个实体集,它们不必互不相同。联系集R是{(e1,e2,······,en)| e1∈E1,e2∈E2,······,en∈En}的一个自己,其中(e1,e2,·······,en)∈R是一个联系,n是联系的度(元),联系集R的型可以用(E1,E2,···,En)表示
- 例如,学生和课程之间的一个联系是“选修”联系,他的型是(Students,Courses),“选修”联系集SC是(s,c)构成的二元组,且s∈Students∧c∈Courses。(s1,c1)表示学生s1选修了课程c1
联系的类型:
- 一对一联系(1:1):如果E1中的每个实体最多与E2中的一个实体相关联,并且E2中的每个实体也最多与E1中的一个尸体相关联,则称E1和E2之间的联系为一对一联系。例如,实体集“部门”和“经理”之间的联系“管理”可以是一对一联系的。
- 一对多联系(1:n):如果E1中的每个实体都可以与E2中任意多个实体相关联,而E2中的每个实体最多与E1中一个实体相关联,则称这种联系为E1到E2的一对多联系。例如,实体集“职工”到实体集“部门”的联系“属于”就可以是多对一联系。
- 多对多联系( m:n联系):如果E1中的每个实体都可以与E2中任意多个实体相关联,并且E2中的每个实体也可以与E1中任意多个实体相关联,则称E1和E2之间联系为多对多的联系。例如,学生和课程之间的联系“选修”就是多对多联系。
注意:一个联系到底属于哪种类型只能通过考察实际问题的语义来确定。例如,客户和贷款之间的联系“借贷”到底属于哪种类型完全取决于银行的信贷规定。有的银行规定一笔贷款只能属于一个客户,但允许一个客户有多笔贷款。在这种情况下,信贷就是多对一联系。然而,有的银行还允许一笔贷款属于多个客户(商业伙伴)。在这种情况下,借贷就是多对多联系
联系的属性:这种情况经常出现在多对多联系中,这种属性与参与联系的实体都相关。例如,考虑前面提到的实体集Students和Courses之间的联系SC。(s,c)∈SC表示学生s选修了课程c。成绩是与联系集SC的特定元组(s, c)相关联的,因此应当将成绩作为SC的属性
2.3实体-联系图
实体集:矩形框
实体集名写在框内,并用无向边吧实体集和它的属性连接起来。
联系的处理:
- 联系R是一对一的,则每条无向边旁均用1标记,如图(a)所示
- 如果联系R是实体集E2,…Ek到实体集E1的多对一联系,则R与E1之间的无向边用1标记,其余的无向边用小写字母m, n, p等标记,或都用“*”号标记,如图(b)所示
- 如果联系R是多对多的,则每条无向边都用小写字母m, n,p等标记,或都用“*”号标记,如图©所示
属性的处理:
2.4弱实体集
- 例子:考虑某公司的人事管理。由于公司将向职工的配偶和未成年子女(家属)提供一定的福利(如医疗保险等),因此公司的人事部门不仅需要管理每位职工,而且还要管理职工的家属。由于对职工和家属的管理是不一样的,因此需要两个实体集:职工和家属,它们所包含的属性如图所示
![家属
分析: - 对于这两个实体集中的任何一个,姓名都不适合作为码,因为既不能确保职工,也不能确保家属不会同姓同名
- 公司赋予每位职工一个惟一的职工号,它可以用作职工的码
- 公司一般不对家属赋予惟一编号(即使编号,也是对每位职工的家属都简单地从1开始顺序编号)
- 家属实体集就没有码
- 如果一个实体集的任何属性集都不足以形成该实体集的码,则称该实体集为弱实体集
- 存在码的实体集称为强实体集
标识实体集: 弱实体集必须与另一个称作标识实体集或属主实体集的强实体集相关联才有意义
标识性联系: 标识实体集与弱实体集相关联的联系称为标识性联系
分辨符: 如果一个属性可以惟一确定存在依赖于同一个强实体的弱实体,则称该属性集为弱实体集的分辨符
弱实体的码: 弱实体集的标识实体集的码和该弱实体集的分辨符共同形成弱实体集的码
部分码: 弱实体集的分辨符又称弱实体集的部分码
可以与多个标识实体集关联:有的弱实体集还可以与多个标识实体集关联,该弱实体集的码由诸标识实体集的码和弱实体集的分辨符的组合
另一种处理弱实体集的方法:把它作为其标识实体集的一个多值复合属性,例如可以把家属作为职工的一个多值属性
不好的设计: 方法将强实体集的码添加到弱实体集的属性集中,将弱实体集转化成强实体集
这篇关于实体-联系模型(Entity-Relationship)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!