数据库系统概念(第七周 第一堂)(E-R模型)

目录

前言

基本概念 

观点与模型

作用与要求 

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模型向关系模型(可以理解为数据库中的表)的转化

如果能帮助到大家,大家可以点点赞、收收藏呀~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟现实环境下的远程教育和智能评估系统(五)

查阅相关VR眼动注意力联合教育学相关论文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR(IEEE VR 2020) 摘要:我们提出了一种架构,使VR教学代理能够响应眼动追踪监控…

Android HIDL接口添加

一.HIDL介绍 HIDL的全称是HAL interface definition language(硬件抽象层接口定义语言),是Android Framework 与Android HAL之间的接口。HIDL 旨在用于进程间通信 (IPC),进程之间的通信 采用 Binder 机制。 二.HIDL 与AIDL 的对…

JVM之【运行时数据区1】

JVM简图 运行时数据区简图 一、程序计数器(Program Counter Register) 1.程序计数器是什么? 程序计数器是JVM内存模型中的一部分,它可以看作是一个指针,指向当前线程所执行的字节码指令的地址。每个线程在执行过程中…

Python魔法之旅-魔法方法(04)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…

Tensorflow入门实战 P02-彩色图片分类

目录 1、序言 2、主要代码 3、运行结果展示 (1)展示cifar10里面的20张图片 (2)预测的图片 (3)模型评估 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K…

postgressql——ReadBuffer_common函数(7)

PostgreSQL中ReadBuffer_common函数 数据结构 BufferDesc 共享缓冲区的共享描述符(状态)数据 typedef struct BufferDesc {//buffer tagBufferTag tag; /* ID of page contained in buffer *///buffer索引编号(0开始)int buf_id; /* buffers i…

大语言模型(一)OLMo

一、简介 OLMo 是由AI2 发布的大语言模型以及构建框架,与大多数之前的尝试只发布模型权重和推理代码不同,OLMo 开源了整个框架,包括训练数据、训练代码以及模型评估代码。 OLMo框架包括构建和研究语言模型所需的工具和资源。对于训练和建模,它包括完整的模型权重、训练代…

SZJG-离线环境成功安装Python和pip

在离线环境下安装Python和pip,可以按照以下步骤进行。假设你已经下载了Python的安装包 (Python-3.10.13.tgz)。 步骤 1:准备安装包 将 Python-3.10.13.tgz 拷贝到目标机器上的一个目录中,例如 /home/user/。 步骤 2:解压安装包…

4万字长文让人看懂ElementUI面试题及参考答案

ElementUI是什么?请简述其主要特点。 ElementUI是一个基于Vue.js的桌面端组件库,由饿了么团队开发并维护。它旨在为开发人员提供一套用于构建网页应用程序的高质量UI组件。ElementUI遵循Vue.js的设计思想,使得开发者可以快速地构建出风格统一、功能丰富的界面。 主要特点:…

水经微图PC版4.3.10发布

让GIS更简单高效,让地图更丰富及时! 水经微图(以下简称“微图”)新版已上线,在该版本中主要新增了天地图历史影像查看功能,以及其它功能的优化。 当前版本 当前版本号为:4.3.10 如果你发现该…

Pytorch反向传播算法(Back Propagation)

一:revise 我们在最开始提出一个线性模型。 x为我们的输入,w为权重。相乘的结果是我们对y的预测值。 那我们在训练时就是对这个权重w进行更新,就需要用到上一章提到的梯度下降算法,不断更新w。但是此时注意不是用y的预测值对w进…

linux centos nfs挂载两台服务器挂载统一磁盘目录权限问题

查看用户id id 用户名另一台为 修改uid和gid为相同id,添加附加组 usermod -u500 -Gwheel epms groupmod -g500 epms

网络协议。

一、流程案例 接下来揭秘我要说的大事情,“双十一”。这和我们要讲的网络协议有什么关系呢? 在经济学领域,有个伦纳德里德(Leonard E. Read)创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程,来讲述…

[代码复现]Self-Attentive Sequential Recommendation(ing)

参考代码:SASRec.pytorch 可参考资料:SASRec代码解析 前言:文中有疑问的地方用?表示了。可以通过ctrlF搜索’?。 环境 conda create -n SASRec python3.9 pip install torch torchvision因为我是mac运行的,所以device是mps 下面…

算法(七)插入排序

文章目录 插入排序简介代码实现 插入排序简介 插入排序(insertion sort)是从第一个元素开始,该元素就认为已经被排序过了。然后取出下一个元素,从该元素的前一个索引下标开始往前扫描,比该值大的元素往后移动。直到遇到比它小的元…

Caliburn.Micro框架学习笔记——Action的参数传递机制

据此篇文章,我们继续来谈谈Caliburn.Mirco的Action参数传递机制。因此程序结构都是默认MVVM的形式。 基本机制 它的机制是—— Caliburn.Micro 的智能对象参数绑定机制通过约定和反射使得视图和视图模型之间的交互变得更加直观和简洁。通过 cal:Message.Attach 语…

【C语言】探索文件读写函数的全貌

🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 🔥引言 本章将介绍文件读取函数的相关知识和展示使用场景&am…

vue中如何进行Markdown文档展示与解析

vue中如何进行Markdown文档展示与解析 一、安装插件二、如何使用 需求&#xff1a;接口返回了一个政策详情页面&#xff0c;里面有图片&#xff0c;用v-html展示的是url&#xff0c;所以改用vue-markdown 一、安装插件 npm install vue-markdown --save二、如何使用 <vue-…

RabbitMQ 如何保证消息不丢失

开启消息确认机制&#xff1a; 在发布消息时&#xff0c;可以设置deliveryMode为2&#xff08;持久化&#xff09;&#xff0c;以确保消息不会因为RabbitMQ的崩溃而丢失。 使队列持久化&#xff1a; 通过设置durable为true&#xff0c;可以确保队列在RabbitMQ重启后依然存在。…

Python 实战:打造智能进销存系统

想象一下&#xff0c;在繁忙的商店里&#xff0c;每天都有数以百计的商品进进出出&#xff0c;库存在不断变化&#xff0c;销售数据涌入&#xff0c;而你却能轻松应对一切。是的&#xff0c;Python 可以帮你实现这一切。本文将教你如何使用 Python 构建一个智能的进销存系统&am…