用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
图数据库
›
一篇搞懂数据库的ER模型设计
一篇搞懂数据库的ER模型设计
忿忿的泥巴坨
论坛元老
|
2024-10-6 17:33:23
|
显示全部楼层
|
阅读模式
楼主
主题
1919
|
帖子
1919
|
积分
5757
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
MUST(Macau University of Science and Technology) CS240
E-R
模型(E
ntity-Relationship Model)
实体关系模型(Entity-Relationship Model)
是一种盛行的概念数据模型。
该模型用于数据库应用步伐的设计。
E-R模型将现实天下视为
实体和实体之间关系的聚集
E-R模型的构建属于数据库设计的第二个步骤,即
数据库概念设计步骤
。
实体(Entity)
实体是现实天下中可与其他对象区分开来的对象,例如雇员、学生、教授、课程。
实体集(Entity set)是该类实体的聚集。
在E-R图中用
矩形
表示
雇员作为实体在E-R图中的表示
属性(Attribute)
一组属性可以用来描述一个实体,例如,一个雇员具有工号、姓名、地址、年龄、生日等属性。
在E-R图中用
椭圆
表示,用无向边与其描述的实体集相连。
雇员的年龄属性在E-R中的表示
雇员实体集和他的一组属性在E-R图中的表示
不同的属性类型
1、简单属性(simple attribute)
简单属性只有一个值。例如雇员中的年龄、姓名。
2、复合属性(composite attribute)
复合属性包含多个部分。例如雇员中的地址可以由国家、都会、街道构成。
复合属性可以再划分成更小的部分,不同的部分不在一个条理,例如上述提到的国家与都会属于包含关系,国家包含都会。
3、多元属性(multiple-valued attribute)
多元属性是指一个属性可以有多个值,区别与复合属性,多元属性的不同的值处于同一个条理。例如雇员的电话号码,一个雇员可以有多个电话号码,且这几个电话号码处于同一条理。
4、派生属性(derived attribute)
派生属性的值可以从别的相关属性或实体派生出来(也就是可通过别的属性计算出来)。例如雇员中的年龄可以通过生日推导出来。生日属性可以被称为基属性或存储的属性。
关键属性(Key Attributes)
定义:一组可以
唯一标识实体
的属性称为关键属性(Key Attributes)。例如雇员的工号,
一个员工的工号在公司里是唯一的
,不会与他人重复,雇员的其他属性没有这个功能,例如名字、生日、年龄和地址等都可能有重复。
关键属性在E-R图中的表示(在关键属性下面添加一个下划线)
复合关键属性(composite key)
定义:两个或多个属性构成一组复合关键属性(composite key)。例如雇员的姓名和地址单独分开是不能作为关键属性唯一标识雇员,但是姓名和地址可以一起作为一组复合关键属性。
复合关键属性在E-R图中的表示(复合关键属性中的每一个属性都要标注下划线) 一个实体可以有多个关键属性,例如雇员的{工号}和{姓名、地址}是唯一标识雇员的两个关键属性。
候选键(candidate key)
定义:唯一标识实体的最小属性集称为候选键(candidate key)。上述雇员的两个关键属性,只有{工号}是候选键。
候选键中的属性不多不少,不能含有多余属性;若再删除属性,也不构成候选键。
主键(primary key)
如果一个实体有多个候选键,我们应该选取一个作为主键(primary key)。
总结:key(键)
键(key)
:唯一标识实体的属性或属性组合。指定唯一性的关键方法。
超键(super key)
:可用于唯一标识实体的密钥,此中可能包含唯一标识实体所不需要的额外属性。
主键(primary key)
:主键是候选键的一种,当实体有多个候选键时需要选择一个作为主键。
候选键(candidate key)
:候选键可以唯一地用于标识实体,而无需任何无关数据。它是最小的超键。通常将candidate key缩写为just key。
关系
定义:关系是两个或多个实体之间的关联。
例如讲师与课程之间的关系就是 "教" 。
我们可以观察到,实体集 "讲师" 中可以有讲师与实体集 "课程" 中课程不产生"教"的关系。
多个具有相同属性的实体构成实体集,而一组由实体间产生的关系也可以构成关系集。
关系集在E-R图中用
菱形
表示。
度(degree)
定义:度(degree)描述到场到关系集的实体集个数。关系集包含两个实体集成为二元关系(binary relationship)。关系集包含凌驾两个实体集的比较少。
二元关系(Binary Relationship)
雇员可以在多个部分工作,反之亦然。
关系还可以具有用于描述有关关系的记录信息的属性,而不是每个实体的信息。
关系必须由到场实体唯一标识,而不参考描述性属性。
在前面的示例中,每个关系必须由雇员的 EmpID 和部分的 did 来唯一标识。因此,对于每一对 Employees-Departments 关系,我们不能有多个关联的 "Start_date" 值。
递归关系(Recursive Relationship)
关系的实体集可以是相同的。例如雇员中主管(supervisor)与部属(subordinate)的关系,主管与部属同属于雇员实体集,但他们之间又存在着 "汇报" 的关系。
在上述E-R图中,两条无向线标识了实体集中不同实体之间的关系。
上述E-R图就不能表示递归关系。
束缚(Constraints)
E-R模型描述了要存储的数据和对数据的束缚(Constraints)。二元关系的关联类型可以分为以下几种环境:
前面的讨论确定了两个方向的每种关系;也就是说,关系是双向的。
1-to-Many Relationship
A 中的实体与 B 中的恣意数目(零个或多个)实体相关联。但是,B 中的实体最多可以与 A 中的一个实体相关联。
示例:每个孩子最多可以出现在一个母子关系中
一个母亲可以有多个孩子,但是一个孩子只能有一个母亲
,类似于函数关系,一个自变量x只能对应一个因变量值y,而一个因变量y值可以由多个自变量x计算得到。
孩子在母子关系集中有一个
关键束缚(key constraint)
,这个束缚可以在E-R图中用
箭头
表示。
直观地,箭头指出,给定一个子实体,我们可以唯一地确定母体关系。
Many-to-1 Relationship
A 中的一个实体最多与 B 中的一个实体相关联。但是,实体 B 可以与 A 中恣意数目(零个或多个)实体相关联。
示例:每个雇员最多可以出现在一个雇佣关系里。
一个雇员只在一个部分里工作,一个部分里可以有多个雇员。
One-to-One Relationship
如果 A 和 B 之间的关系满足从 A 到 B 的一对一映射束缚,则A 中的一个实体最多与 B 中的一个实体相关,B 中的一个实体最多与 A 中的一个实体相关。
示例:雇员与部分的管理关系
员工最多通过管理关系与一个部分关联。一个部分最多与一个员工通过管理关系相关联。
Many-to-Many Relationship
A 中的实体与 B 中的恣意数目的实体相关联。B 中的实体与 A 中的恣意数目的实体相关联。究竟上,这个映射没有任何限定。
示例:顾客与贷款的关系
顾客可以通过乞贷人关联多笔贷款(可能为 0)。贷款可以通过乞贷人与多个顾客(可能为 0)相关联。
关系集的键(Keys for a Relationship set)
键的概念也用于标识关系,如实体。
一组属性(到场构成关系的实体集属性)可以唯一标识关系集R。设 R 是涉及实体集 E1、E2、...、En的关系集。设 主键(primary-key)(Ei) 表示构成实体集 Ei 主键的属性集。属性集:
构成了关系集的超键(super key)。
二进制关系集的主键的选择取决于关系集的映射基数,也就是上述提到的关系束缚类型。
1-to-Many和Many-to-1的关系, “Many” 一方的主键(primary key)是最小的超键(super key),用作主键。
从键的定义和逻辑关系来看,用键唯一标识一个关系,需要找到不确定中的确定,例如在母子关系中,如果选取母亲的主键作为关系集的主键,则无法确定一组关系,但如果选择 "Many" 一方也就是 "孩子" 方,每个孩子只有一个母亲,通过这个逻辑,可以唯一标识一组关系。
上图,母子关系可以用复合关键属性来标识,但这不是候选键,在这里,唯一标识母子关系集的最小属性集就是cid。
One-to-One关系,任一到场实体集的主键形成一个最小的超键,任一都可以选择此中任何一个作为关系集的主键。
在One-to-One关系中,恣意一方的主键都可以构成关系集的主键。所以上图雇员与部分管理关系集的主键就是{EmpID}或{did}。
在Many-to-Many关系中,两方的主键的并集是最小的超键,被选为主键。
上图,Many-to-Many关系中,用于唯一标识关系集的最小的属性集是两方主键的并集。
(最小的超键就是候选键(candidate key))
到场束缚(Participation Constraint)
前面提到的束缚(例如,工作所在关系集)告诉我们一个部分有一些员工。一个天然而然的问题是,是否每个部分都至少有一名员工。假设每个部分
至少
有一名员工。这种束缚称为
到场束缚
。
这种到场束缚,我们可以分为两类:
Total Participation(完全到场)
顾名思义,实体集中的每个实体都必须与到场关系集的另一个实体集产生至少一个关系。
Partial Participation(部分到场)
实体集中的实体可能到场到关系集中,也可能不会。
判定条件:
实体集中的实体到场接洽时是全体到场还是部分到场。
示例:每个员工都必须在部分工作,对于员工实体集来说,这种束缚是什么?
Total Participation(完全到场)
如果关系集中的实体集的到场是完全到场,则两者通过粗线(thick line)连接。独立地,箭头的存在表示关键束缚。
非二元关系(Non-binary relationship)
假设每个部分在多个所在设有办公室,我们希望记录每个员工工作的位置。(since是关系集的属性,标识员工在工作位置开始的时间)
强实体(Strong Entity)/弱实体(Weak Entity)
强实体(Strong Entity)
定义:实体可以通过与该实体相关的某些属性进行唯一标识
例如,员工有一个属性 EmplD(可以用于唯一标识每个员工)
弱实体(Weak Entity)
定义:一个实体不能由与该实体相关的所有属性唯一标识。
弱实体需要借助其他实体集标识自身。
例如,假设员工可以购买保险来覆盖其家属。家属实体集的属性是pname和age。 属性 pname 不能唯一标识家属实体集。 家属实体集是一个弱实体集。
家属实体集只能通过结合员工的主键(标识实体集/所有者实体集)思量其某些属性来辨认。
对于给定所有者实体唯一标识弱实体的属性集称为鉴别器(discriminator)或部分钥匙(partial key)。 一个所有者实体与弱实体关联的关系集称为辨认关系集(identifying relationship set)。
为了强调 Dependent 是一个弱实体,而 Policy 是它的辨认关系,我们用粗线画出两者。
上图中粗线、箭头都表示什么含义?
起首,用于表示
弱实体和辨认关系
的,粗线画出两者。
其次箭头表示家属与员工关系集存在束缚,属于
1-to-Many的关系
,一个员工可以有多个家属,而一个家属只能对应一个员工。
家属弱实体集到辨认关系用粗线连接,表示
完全到场(Total Participation)
,家属弱实体集中不能存在与员工没有关系的实体。
弱实体必须服从以下限定:
所有者实体集(Owner Entity)和弱实体集(Weak Entity)必须到场在1-to-Many关系集中(一个所有者,许多弱实体)。
弱实体集必须
完全到场(Total Participation)
此中标识关系集。
类继续(Class Hierarchy)
在一个实体集中,不同的实体之间也有区别,像上述提到的雇员中的 "羁系者" 和 "部属" 的区别,不过这种区别是有限的,因为他们的属性是相同的。
而有些实体之间区别过大,可能产生新的属性,就需要用到类继续(Class Hierarchy)。
雇员中也存在小时工(Hourly_Emps)和条约工(Contract_Emps),他们区别于其他的雇员,他们具有不同的属性。同时子类也拥有父类的属性,也就是说小时工(Hourly_Emps)有5个属性,条约工(Contract_Emps)有4个属性。
类继续中的束缚(Constraints on lSA Hierarchies)
可重叠束缚(Overlap Constraints)
父类中的一个实体可以同时属于一个或多个子类实体集。
不相交束缚(Disjoint Constraints)
父类中的一个实体只能属于一个子类实体集。
覆盖束缚(Covering Constraints)
父类中的一个实体是否必须属于至少一个子类实体集。
完全覆盖(Total covering)
父类中的实体必须属于子类实体集中的一个。
部分覆盖(Partial covering)
父类中的实体不必属于子类实体集之一。
聚合(Aggregation)
关系通常是实体集之间的关联。
有时,我们也需要建模一种关联在实体集与关系之间的关系。
聚合(Aggregation)答应我们将关系集视为实体集,以便到场(其他)关系。
示例:思量一个名为
project
的实体集。每个
project
实体集被一个或多个
departments
赞助。那么,
project
实体集与
departments
实体集之间就产生了资助关系(
sponsorship
),一个
departments
赞助一个
project
可能会设立雇员去羁系(
monitor
)赞助关系。直观地,
monitors
应该作为一种关系设立在雇员实体集与资助关系之间,所以这就需要用到聚合(Aggregation),将
project
实体集与
departments
实体集产生的资助关系(
sponsorship
)的关系集视为实体集,与雇员产生羁系关系。
E-R模型的概念设计
在设计一个E-R图之前我们应该思量以下几点:
1、应该将一个概念建模成一个实体集还是一个属性还是一种关系。
2、什么是关系集及其到场实体集?
3、我们应该使用二元关系还是三元关系?
4、我们应该使用聚合吗?
普通地讲,就是上述提到的这么多概念,例如实体集、描述实体集和关系集的属性、关系集,我们应该把要求中的概念建模成哪一项,要求中提到的概念与其他概念是什么关系,应该建模成哪一项才能符合要求,例子中提到的实体集的属性不是一成不变的,要根据实际环境,数据巨细,数据的重要性和数据与其他概念的关系做出调解。
(声明:图片非原创,源自教授PPT,无情的PPT翻译呆板罢了)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
忿忿的泥巴坨
论坛元老
这个人很懒什么都没写!
楼主热帖
axios 传递参数的方式(data 与 params ...
Swift字符串操作-持续更新-2022 ...
【iOS逆向与安全】frida-trace入门 ...
springmvc异常处理解析#ExceptionHandl ...
Kubernetes(K8S) Controller - Deploym ...
MVCC - Read View的可见性判断理解 ...
食品商城网站设计—食品商城购物网站(8 ...
隐匿自己的c2服务器(一)
PHP001
MySQL 并行复制方案演进历史及原理分析 ...
标签云
集成商
AI
运维
CIO
存储
服务器
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表