数据库原理及MySQL应用 | 实体联系模型

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDSClaw,2核4GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: ER模型是数据库设计中被广泛用作数据建模的工具,通常用在“自顶向下”的设计方法中,是数据库应用的第一步。

01、实体联系模型的要素
ER模型中包括3个主要的要素,分别是实体(Entity)、联系(Relationship)和属性(Attribute),首先来看一下实体的概念和表示方法。

  1. 实体

现实世界中客观存在并可以相互区别的事物称为实体。实体可以是物理存在的,如一本书或一名学生,也可以是概念性的,如一次销售行为或一次面试等。实体概念的关键之处在于一个实体能够与另一个实体相互区别。例如一个班里有30名学生,即使这些学生中有重名的情况,任何一名学生也都能与其他学生区别开来(例如,每个学生都拥有一个唯一学号)。

实体型表示具有相同属性的同一类实体。实体型可以刻画出全部同质实体的共同特征和性质。例如学生具有共同的属性(学号、姓名、入学日期等),则这些属性构成一个“学生”实体型。

同一类实体的集合称为实体集,例如某学校的全体学生就是一个“学生”实体集。实体型表示抽象的实体集,

例如实体型“学生”表示全体学生的概念,并不具体指学生甲或学生乙等。在不引起混淆的情况下,可以将实体型简称为实体。

在ER图中,使用矩形框来表示实体型,框内标注实体型的名称。如图3-1所示,分别表示Books(图书)实体型和Orders(订单)实体型。
image.png
■ 图3-1实体型的表示方法

  1. 联系

现实世界中,事物内部以及事物之间通常存在着一定的联系,这些联系在信息世界中反映为实体型内部以及不同实体型之间的联系。

实体型之间全部联系的抽象称为联系型。在ER图中,联系型用菱形框表示,框内标注联系型的名称,并用连线将菱形框分别与对应的实体型相连接。联系型的名称通常为动词。在不引起混淆的情况下,可以将联系型简称为联系。如图3-2所示,由于订单中包含图书,所以在“订单”实体型和“图书”实体型之间存在着“包含”的联系。
image.png
■ 图3-2联系的表示方法

1) 联系的元(Degree)

联系的元是指参与联系的实体型的个数。在图3-2中,有两个实体型参与Include(包含)联系,所以称该联系为二元联系。有时,参与某个联系的实体型的个数可能更多。如图3-3所示,每名学生选修的每门课程都有一个授课教师,所以这个Study(选修)联系是一个三元联系。
image.png
■ 图3-3一个三元联系

2) 递归联系

同一实体型中的实体以不同的角色参与到一个联系上,这个联系被称为递归联系。Teachers(教师)实体型中的实体可以按角色分为教研室主任和普通教师,教研室主任管理(Supervise)教师。如图3-4所示,“教师”实体型以不同的角色两次参与到“管理”联系上,这个联系被称为递归联系。
image.png
图3-4递归联系

3) 实体在联系上的参与度

如果实体型中的每个实体都参与到一个联系上,则使用双线将该实体型与联系连接起来,称为完全参与。如果实体型中的实体不是全部参与到联系上,则使用单线将该实体型与联系连接起来,称为部分参与。

在图3-5中,因为所有的“订单”中都包含“图书”,但是并不是所有的“图书”都包含在“订单”中,所以Orders完全参与联系Include,而Books部分参与该联系。
image.png
■ 图3-5完全参与和部分参与

4) 基数映射

基数映射是建立在联系上的一种约束机制,表示某个实体型通过联系与另一个实体型中的一个实体产生联系时,可能涉及该实体型中的实体个数。对于二元联系来说,两个实体型产生联系的类型可能是一对一联系(1∶1)、一对多联系(1∶n)或多对多联系(m∶n)三种情况。

(1) 一对一联系:设A、B为两个实体型,若A中的每个实体最多和B中的一个实体有联系,反之亦然,则称A与B之间是一对一联系,记作1∶1。

图3-6是一个1∶1联系的例子。在Locate(位于)联系中,一个Bookstore(书店)只位于一个City(城市),而且一个“城市”也只开办一家“书店”。
image.png
■ 图3-61∶1联系

(2) 一对多联系:设A、B为两个实体型,若A中的每个实体可以和B中的多个实体有联系,而B中的每个实体最多和A中的一个实体有联系,则称A与B之间是一对多联系,记作1∶n。

图3-7中的Produce(生成)联系是一个1∶n联系,因为一位Customer(顾客)可以生成多张“订单”,但是一张“订单”只属于一位“顾客”。
image.png
■ 图3-71∶n联系

在一对多联系中,“一”的一方被称为父实体型,“多”的一方被称为子实体型。在如图3-7所示的例子中,“顾客”称为父实体型,“订单”被称为子实体型。

然而,在前面所讲到的一对一联系中,如果一方是部分参与,另一方是完全参与,那么可以将部分参与的一方视为父实体型,完全参与的一方视为子实体型。在如图3-6所示的例子中,“城市”可以被视为父实体型,“书店”可以被视为子实体型。

(3) 多对多联系:设A、B为两个实体型,若A中的每个实体可以和B中的多个实体有联系,反之亦然,则称A与B之间是m∶n联系。

图3-8中的Include联系是一个m∶n联系,因为一张“订单”可以包含多本“图书”,而且一本“图书”也可以包含在多张“订单”中。
image.png
5) 复杂联系的基数映射

二元联系基数映射的确定方法比较简单,如果参与一个联系的实体型的个数超过两个,那么确定其基数映射的过程稍微复杂一些。对于一个n元联系,可以首先确定n-1个实体型中的一组具体实体,然后分析第n个实体型的参与情况。再按照这个方法依次确定每个实体型在联系上的参与情况。

如图3-9所示,Study(选修)是一个三元联系。通过分析发现每名学生选修的每门课程有且仅有一位教师教授;每位教师可以教授每名学生0门或多门课程;每名教师教授的每门课程都会面对多名学生。
image.png

  1. 属性

属性用来描述实体或联系的特性。例如,“图书”实体的属性包括“书号”“书名”“isbn”“单价”等。

在ER图中,用椭圆形表示属性,并用连线与实体型或联系型连接起来。如果属性较多,为使图形更加简明,有时也将属性另外单独用列表表示。
image.png
图3-10是“图书”实体型的属性。

联系也可以有属性。例如图3-11所示的“选修”联系描述了学生选修教师的课程,在该联系上包含选修的学期、选修的成绩以及选修标志属性。如果将这些属性放在学生、课程或教师实体型上都无法正确地表达其含义。
image.png
■ 图3-11选修联系的属性

实体或联系的属性通常都有一个取值范围,这个取值范围称为该属性的域。例如学生的性别属性的域应该是一个只包含元素“男”或“女”的集合,选修的成绩属性的域应该是0~100的实数,成绩标志的域应该是包含元素“缺考”“缓考”“免考”“作弊”“通过”的集合等。

■ 图3-12简单属性与复合属性

1) 简单属性与复合属性

简单属性是原子的、不可再分的。复合属性可以细分为更小的部分。如图3-12所示,Customers(顾客)实体型的顾客编号、顾客姓名、邮编属性都是简单属性,而地址属性就是一个复合属性,因为地址还可以细分为城市、街道、门牌号等部分。

在设计ER图时,保持复合属性还是将复合属性分解为更小的属性取决于用户操作的需要。例如,在访问顾客的联系地址时,通常都使用完整的地址,这时就可以使用地址属性。如果还需要统计顾客所在城市的分布情况等信息,就可以选择将地址属性细分为城市、街道和门牌号三个属性。

2) 单值属性和多值属性

如果某个属性对于实体型中的任意一个实体只有一个值,则该属性为单值属性;如果某个属性对于实体型中的一个实体可能有多个值,则这个属性是多值属性。多值属性用双边椭圆形表示。

如图3-13所示,“顾客”实体型中的顾客编号、顾客姓名、邮编属性都是单值属性,因为每位顾客都只有一个顾客编号、一个姓名和一个邮编。而电话属性就是一个多值属性,因为一位顾客可以保留家庭电话、办公电话和移动电话等多个联系电话。
image.png
■ 图3-13单值属性与多值属性

在进行数据库逻辑结构设计时,由于多值属性无法表达为基本的关系,所以需要进行特殊的处理,例如将多值属性转换为单值属性或将多值属性去除并通过单独的关系来表示。

3) 派生属性

如果某个属性的值可以由其他属性导出,则称该属性为派生属性。派生属性用虚边椭圆形表示。如图3-14所示,因为顾客的年龄可以由其出生日期导出,所以顾客的年龄属性就是一个派生属性。
image.png
某些情况下,某个实体型的派生属性的值可能需要通过其他实体的属性值计算得出。有些实体型的派生属性的值可能需要计算实体型本身或其他实体型中实体的个数来导出,例如如果“班级”实体型中有一个班级人数属性,这个属性的值可以通过计算“学生”实体型中学生实体的个数来得出,这个属性就是一个派生属性。

02、码
码(Key)是实体型中用来标识每一个具体实体的重要工具。下面将介绍候选码和主码的概念。

  1. 候选码

候选码(Candidate Key,CK)是实体型中的属性或最小属性组,可以用来唯一标识实体型中的每个具体的实体。

例如在“图书”实体型中,因为每册图书都有一个唯一的书号,所以可以通过指定一个书号来确定唯一的一册图书,因此书号属性就是该实体型的候选码。这个例子说明候选码具有唯一标识性。

  1. 主码

主码(Primary Key,PK)是从候选码中选出的,用来唯一标识实体型中的每一个实体的一个候选码。在ER图中,可以使用下画线来标识主码,如图3-15所示。
image.png
■ 图3-15主码的表示方法

一个实体型中可能包含多个候选码,例如在“图书”实体型中,由于每本图书都有一个唯一的“书号”和唯一的isbn值,所以“书号”和isbn都是这个实体型的候选码。因为“书号”比isbn更简洁高效,所以可以选择“书号”作为“图书”实体型的主码。

  1. 组合码

如果一个实体型中的两个或两个以上的属性共同组成实体型的候选码,则称该候选码为组合码。

假设有一个Addresses(地址)实体型,该实体型中的每个实体表示一个联系地址,包括城市、街道和邮编3个属性。由于城市和街道两个属性组合的值能够唯一标识一个地址,所以城市和街道两个属性构成“地址”实体型的组合码,如图3-16所示。
image.png
■ 图3-16组合码

03、强实体型与弱实体型

  1. 强实体型

如果一个实体型中实体的存在不依赖于其他实体型,则称该实体型为强实体型。强实体型的特性是它有候选码,实体型中的每个实体可以通过候选码被唯一标识。如图3-17所示,Courses(课程)实体型是一个强实体型,课程编号是其主码,每门课程都可以通过课程编号来唯一标识。
image.png
■ 图3-17强实体与弱实体

  1. 弱实体型

弱实体型是指其实体的存在必须依赖于其他实体型。弱实体型的特性是它没有候选码。例如有一门课程“数据库开发”,需要分别在第3学期完成60学时,在第4学期完成80学时,则可以创建一个“课程提供”实体型,该实体型包含学期和学时两个属性,如图3-17所示。CourseOffering(课程提供)实体型就是一个弱实体型,因为该实体型中的属性不能构成候选码,也就是说学期、学时或这两个属性的组合都不能作为实体型的候选码。在ER图中,使用双边矩形来描述弱实体型。

如果要想标识出“课程提供”实体型中的实体,则必须借助于“课程”强实体型,使用“课程”强实体型中的课程编号属性以及“课程提供”弱实体型中的学期属性可以共同标识“课程提供”弱实体型中的每个实体。虽然弱实体型没有候选码,但是某个或某些属性可以结合强实体型中的属性来共同标识弱实体型中的实体,这样的属性或属性组称为分辨符,在ER图中使用虚线下画线来描述,如图3-17所示,“学期”属性就是一个分辨符。并不是所有的弱实体型都需要有分辨符,如果弱实体型中的每个实体都可以通过与其关联的强实体型来标识,则弱实体型不需要分辨符。

弱实体型所依赖的强实体型又称为标识实体型,每个弱实体型必须和标识实体型相关联,弱实体型与标识实体型之间的联系称为标识性联系。标识性联系是从弱实体型到标识实体型的多对一或一对一联系,并且弱实体型完全参与联系。在ER图中,使用双边菱形描述标识性联系。

弱实体型可以参与标识性联系以外的其他联系。弱实体型也可以作为标识实体型参与到与另一个弱实体型的标识性联系中。一个弱实体型也可能与不止一个标识实体型关联,这样一个特殊的弱实体型可以通过来自标识实体型的实体组合来标识。弱实体型的候选码可以由标识实体型的候选码的并集加上弱实体型的分辨符组成。

如果弱实体型只参与一个关联性联系,而且它的属性也不是很多,则建模时可以将其表述为强实体型的属性,如图3-18所示,将“课程提供”表述为“课程”实体型的一个多值复合属性。如果弱实体型参与到标识性联系以外的其他联系中,或其属性比较多时,则建模时将其表述为弱实体型更为恰当。

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
503 158
|
6月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1268 152
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
945 156
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
529 156
|
7月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
7月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
7月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
7月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
855 7
|
7月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。

推荐镜像

更多
下一篇
开通oss服务