目录
前言
基本概念
观点与模型
作用与要求
E-R模型元素
实体(entity)
实体集(entity set)
属性(attribute)
域(domain)
码 (key)
联系 (relationship)
参与(participation)
角色(role)
映射基数( Mapping Cardinalities)
弱实体集(weak entity set)
总结
前言
本堂课重点来讲讲E-R模型,然后在下一堂课我们深入来探讨如何利用E-R模型进行数据库设计
E-R模型是1976年由P.P.S.Chen提出的,用来描述概念的模型
基本概念
观点与模型
观点:世界是由一组称作实体的基本对象和这些对象的联系构成的(世界=实体+实体联系)
模型:模型就是世界本质的一种反射,能够突出世界的某方面特征
作用与要求
作用:帮助澄清用户的数据需求、数据逻辑模型设计的基础(用于数据分析、数据库设计、数据关系研究)
要求:清晰、易懂、完整、准确、无二义
E-R模型元素
实体(entity)
定义:客观存在并且相互可以区分的事物叫实体(唯一标识)
例子:学生张三(具体的)、软件学院(抽象的)等等
E-R模型:
侧重点:实体集下的多个实体(Johnson等)
实体集(entity set)
定义:具有相同类型及属性的实体集合
例子:全体学生、全体课程、所有学院等
实体可以认为是实体集的外延(Extension)
E-R模型:
侧重点:实体集的属性
属性(attribute)
定义:实体集中所有实体所具有的描述性的性质
例如:学生的学号、姓名、年龄
1、实体集的属性是将实体集映射到域的函数(实体可以认为是高维度上的一个点)
2、实体的属性可以唯一标识一个实体
分类:
1、简单属性:不可再分的属性(性别、年龄等)
2、复合属性:可以划分为更小的属性(电话号码=区号+本地号码)
1、单值属性: 每一个实体在该属性上的取值唯一
2、多值属性:每一个实体在该属性上有多于一个的取值
1、基属性:除了派生属性外的所有属性都是基属性
2、派生属性:从基属性通过计算派生出来的属性
理论上只存基属性值,而派生属性只存其定义或依赖关系,使用时再从基属性中计算出来
同个框内的分类是对立的,不同框内的分类是可以并存的
小测试:
name:复合属性、单值属性、基属性
phone_number:复合属性、多值属性 、基属性
age():单值属性、简单属性、派生属性
域(domain)
定义:属性的取值范围
例如:性别的域为(‘0’,‘1’),月份的域为(‘1’-‘12’)
码 (key)
超码:能唯一标识实体的属性或属性组
候选码:任意真子集都不能成为超码的最小超码
主码:从所有候选码中任意选定一个用来区别同一实体集中不同实体的候选码(候选码中任意选)
E-R模型:实体集属性中作为主码的属性用下划线来标明
联系 (relationship)
定义:实体之间的相互关联称为联系
例如:老师与学生之间的授课关系
联系有自己的属性,在E-R模型图中不要把联系属性合并到实体中。但是在表格设计很多情况会把联系的属性合并到实体表中!!
元或度:参与联系的实体集的个数称为联系的元(或者度)
E-R模型:
菱形表示:实体集之间的联系
参与(participation)
定义:实体集之间的关联称为参与(实体与联系的关系就是参与关系)
例如:王军选修数据库=“王军”、“数据库”参与了联系“选修”
分类:全部参与、部分参与
E-R模型:
实线:实体集与联系之间的参与
一条实线:部分参与联系
两条实线:全部参与联系
角色(role)
定义:实体在联系中的作用称为实体的角色
E-R模型:
实体集不止一次参与某种联系时才需要显式指明其角色
映射基数( Mapping Cardinalities)
定义:实体之间联系的数量,即一个实体通过一个联系集能与另一个实体集相关联的实体的数目
例如:一个导师对应多个研究生、一个本科生上多门课程(一门课程同时给多个学生学习)等等
E-R模型:
箭头指向的实体集是一,线段的实体集是多(上图反映的是多对一的关系)
一对一的关系。一个导师对应一个学生,一个学生对应一个导师
多对多的关系。一个导师对应多个学生,一个学生对应多个导师
一个实体集内的二元联系同样需要指定映射基数
多个实体集间的联系情况
注意!绝对不是题目中出现三个实体集与联系就写成三元联系,也有可能是两个二元联系。具体要看三者之间是不是都有关系还是只有其中一者和另外两个有关系!!!
另外一种表示:
a..b:表示其对应的实体集参与联系的个数限制
例如:0..*是0到无上限?(即多);1..1是1到1(即一);20..*是学生参与选修至少20位
弱实体集(weak entity set)
定义:若一个实体所有属性合在一起都不足以形成主码,则称该实体是弱实体
原因:1、联系必须是实体之间的;2、想要属性参与联系则必须将属性实体化;3、有些场景下,属性必须参与某种联系
存在依赖:弱实体集必须存在依赖与一个强实体集,但是存在依赖不会导致一个弱实体集(如:信用卡依赖于客户实体,但是是一个强实体集)
分辨符:也叫部分码,能够与所依赖的强实体集中的主码共同唯一标识弱实体集(弱实体集主码=依赖强实体集主码+弱实体集分辨符)
标识性联系:与一般联系不同,标识性联系只存在与强实体集和弱实体集之间。用双边框的菱形表示
例如:
关键点:
1、实体集的表示与上面不同。这里的属性是利用圆圈连接实体来表示的。
2、transaction是指交易。交易额和interestRec(利息额)以及银行柜员必然存在关系 。每一笔交易都由一个柜员完成,都将计入利息额度中。但是这里交易是属性不能参与联系,所以这里需要将它实体化为弱实体集。
3、上图中transaction属性有两个圈表示其是多值属性,还未实体化
1、将交易记录、利息记录实体化
2、将这两个弱实体利用标识性联系与强实体集联系
3、弱实体集的分辨符用下划虚线表示
E-R模型:
总结
本文的所有知识点、图片均来自《数据库系统概念》(黑宝书)、山东大学李晖老师PPT。不可用于商业用途转发。
本篇已经码了三个多小时了,算是简单入门E-R模型的文章,下次我们来讲讲E-R模型向关系模型(可以理解为数据库中的表)的转化
如果能帮助到大家,大家可以点点赞、收收藏呀~