数据库系统概念(第七周 第一堂)(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模型向关系模型(可以理解为数据库中的表)的转化

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

allure测试报告用例数和 pytest执行用例数不相同问题

我出现的奇怪问题: pytest执行了9条用例,但是测试报告确只显示3条用例 我将其中的一个代码删除后,发现allure测试报告又正常了 我觉得很奇怪这个代码只是删除了二维数组的第一列,我检查了半天都找不到问题,只有降低版本…

优选算法一:双指针算法与练习(移动0)

目录 双指针算法讲解 移动零 双指针算法讲解 常见的双指针有两种形式,一种是对撞指针,一种是快慢指针。 对撞指针:一般用于顺序结构中,也称左右指针。 对撞指针从两端向中间移动。一个指针从最左端开始,另一个从最…

云计算与 openstack

文章目录 一、 虚拟化二、云计算2.1 IT系统架构的发展2.2 云计算2.3 云计算的服务类型 三、Openstack3.1 OpenStack核心组件 一、 虚拟化 虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之…

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

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

【香橙派 AIpro】新手保姆级开箱教程:Linux镜像+vscode远程连接

香橙派 AIpro 开发板 AI 应用部署测评 写在最前面一、开发板概述官方资料试用印象适用场景 二、详细开发前准备步骤1. 环境准备2. 环境搭建3. vscode安装ssh插件4. 香橙派 AIpro 添加连接配置5. 连接香橙派 AIpro6. SSH配置 二、详细开发步骤1. 登录 juypter lab2. 样例运行3. …

Windows11 安装Oracle11gR2

一、下载Oracle 11gR2 安装包下载地址:Database Software Downloads | Oracle 下载两个压缩包,下载完成后解压缩到同一个目录。 二、安装Oracle 11gR2 Oracle安装是单程票,因为Oracle卸载特别麻烦,因此最好一次通过。 2.1 安…

排八字软件有哪些?

排八字软件有哪些?在市面上有很多排八字的软件可供选择,其中一些比较知名的有: 无敌八字排盘软件:这是一款功能强大的八字排盘软件,提供详细的八字解析和命理分析服务,且完全免费。 网易星盘:网…

【JAVA |String类】JAVA中的String类常见用法详解

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

500元以内的蓝牙耳机哪个牌子好?首推四大热门品牌盘点

在500元以内的预算范围内,蓝牙耳机试市场上还是有很多可以选择的,它们以出色的音质、舒适的佩戴体验和稳定的连接性能赢得了消费者的青睐,作为一个蓝牙耳机的重度使用者,下也用过不少的500元以内的蓝牙耳机,下面就给大…

小白跟做江科大32单片机之光敏传感器控制蜂鸣器

代码部分 1.思路 通过光敏电阻,控制蜂鸣器的发声 2.butter.h代码 #ifndef _BUTTER__H #define _BUTTER__H void butter_Init(void); void butter_on(void); void butter_off(void); #endif 3.butter.c代码 #include "stm32f10x.h" void butter…

React-组件通信

组件通信 概念:组件通信就是组件之间的数据传递,根据组件嵌套关系的不同,有不同的通信方法 父传子 基础实现 实现步骤: 1.父组件传递数据-在子组件标签上绑定属性 2.子组件接收数据-子组件通过props参数接收数据 props说明 1.…

【C++题解】1446. 人口增长问题

问题:1446. 人口增长问题 类型:循环应用 题目描述: 我国现有 x 亿人口,按照每年 0.1% 的增长速度,n 年后将有多少人? 输入: 一行,包含两个整数 x 和 n ,分别是人口基…

Centos 7下的VulFocus靶场搭建详细教程

一、靶场介绍 自带 Flag 功能:每次启动 flag 都会自动更新,明确漏洞是否利用成功。带有计分功能。兼容 Vulhub、Vulapps 中所有漏洞镜像。 二、下载安装 下载 VMware 软件下载 centos镜像 三、Docker知识 学习链接:https://www.runoob.c…

lynis安全漏洞扫描工具

Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…

宏集JMobile Studio—实现HMI界面高自由度设计

一、简介 物联网HMI的组态软件是数据可视化的重要工具,工程师可以通过图形化界面来配置、监控和管理现场采集的数据。目前,市面上大多数的组态软件里的可视化控件库都由设计师预先部署,用户只能调用而不能完全自定义控件,导致可视…

Java时间类--JDK8

为什么JDK8会又新增时间相关类呢? ① JDK7的时间对象如果需要比较大小的话,必须都先转换成毫秒值;JDK8则不需要,可以直接比较。 ② JDK7的时间对象可以修改,在多线程环境下就会导致数据不安全;JDK8不能修改…

【哈希】用哈希桶封装unordered_map unordered_set

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 用哈希桶封装 unordered_map & unordered_set 的相关内容。 如…

【成品设计】基于STM32单片机的便携式防丢失设备

《基于STM32单片机的便携式防丢失设备》 所需器件: STM32最小系统板。角度传感器:做为运动检测模块。距离传感器:作为与监测物品(人)保持的距离监测。按键:短按切换模块,长按解除报警。红色LED灯蜂鸣器:作…

渗透课程第二阶段--Part1--信息收集

目录 一. 为什么要做信息收集? 渗透测试的流程 信息收集包括的内容 学习框架: 二. 分类 1. 域名相关信息 域名(Domain Name)是什么 域名的分类 域名联系人信息 子域名信息 域名DNS信息 2. IP相关信息 ping/nslookup …

网络安全||信息加解密技术以及密钥管理技术

一、信息加解密技术 对称加密 对称加密(又称为私人密钥加密/共享密钥加密):加密与解密使用同一密钥。特点:加密强度不高,但效率高;密钥分发困难。(大量明文为了保证加密效率一般使用对称加密&…