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

news2024/11/16 3:22:41

目录

前言

基本概念 

观点与模型

作用与要求 

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.coloradmin.cn/o/1717323.html

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

相关文章

12V升20V3.5A升压恒压WT3207

12V升20V3.5A升压恒压WT3207 WT3207是一款高效PWM升压控制器,采用SO-8封装设计,专为低输入电压应用优化。该控制器支持5V至36V的宽输入电压范围,使其能够有效提升12V、15V和19V系统的电压水平,特别适合于两节或三节锂离子电池供电…

kvm--安装启动

前期 使用vmware workstation 时 安装kvm yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install -y systemctl enable --now libvirtd

【JAVA SE】多态

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:JAVA 个人主页:Celias blog~ 目录 引言 一、多态 1.1 多态的概念 1.2 多态的实现条件 1.3…

【码银送书第二十期】《游戏运营与出海实战:策略、方法与技巧》

市面上的游戏品种繁杂,琳琅满目,它们是如何在历史的长河中逐步演变成今天的模式的呢?接下来,我们先回顾游戏的发展史,然后按照时间轴来叙述游戏运营的兴起。 作者:艾小米 本文经机械工业出版社授权转载&a…

Vue前端平台的搭建

文章目录 前端平台搭建(`Vue2.6`,App:`HBulderX`)创建`Vue2.6`项目下载相应插件方便开发路由配置对连接后端进行一些配置(`main.js`文件)导入ElementUI组件[组件 | Element](https://element.eleme.cn/#/zh-CN/component/icon)同步与异步`axios`异步请求框架前端平台搭建(Vue2.…

零基础入门学习Python第二阶04SQL详解01

SQL 和 MySQL 详解 SQL 详解 我们通常可以将 SQL 分为四类,分别是 DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和 DCL(数据控制语言)。DDL 主要用于创建…

正则匹配优化:匹配排除多个字符串的其他字符串

(^entity|^with|...)\w优化 (?!entity|with|has|index|associations|input)\w(?!): 匹配排除项 效果 继续优化 匹配会过滤掉带有关键字的字段,在过滤的时候是可以加上尾部结束匹配符的 效果:

pytorch+YOLOv8-1

1.工具开发 2.idea配置pytorch环境 默认安装新版本torch pip install torch 3.pytorch验证 4. print(torch.cuda.is_available()) 输出结果为 False 说明我只能用cpu

Docker搭建FRP内网穿透服务器

使用Docker搭建一个frp内网穿透 在现代网络环境中,由于防火墙和NAT等原因,内网设备无法直接被外网访问。FRP (Fast Reverse Proxy) 是一款非常流行的内网穿透工具,它能够帮助我们将内网服务暴露给外网。本文将介绍如何在Linux服务器上使用Do…

Java——面向对象初阶

前言: Java面向对象相关讲解 文章目录 一、面向对象二、类与对象三、封装四、构造方法及重载五、this关键字六、基本数据类型和引用数据类型七、JavaBean类 一、面向对象 面向对象(Object-Oriented Programming, OOP)是一种编程范式&#xff…

HarmonyOS 鸿蒙DevEco:导入无法运行提示Sync failed

场景:导入官网下载的案例后导入发现无法运行模拟机,Notifications提示Sync failed... 解决:查看Cause发现是版本问题,通过修改相关内容来解决该问题 1、打开案例地址找到hvigor文件夹 2、打开hvigor-config.json5,将&…

BUUCTF--[VN2020 公开赛]warmup

一开始直接告诉你libc基址。 有沙盒,分析了一下,write的count不等于0x10就可以,0x30什么的都可以。 嗯,还开了PIE。 很明显了,orw。 问题是开了PIE,bflag\x00不能写在BSS上了,同时也不能重复执…

5.30 学习总

刷题记录(Codeforces Round 947 (Div. 1 Div. 2)B,C题)和Codeforces Round 948 (Div. 2)B题 一.B. 378QAQ and Mochas Array B. 378QAQ and Mochas Array time limit per test 1 second memory limit per test 256 megabytes in…

Android 11 Audio strategy配置解析

在启动AudioPolicyService时,通过EngineBase的loadAudioPolicyEngineConfig函数去解析strategy配置。其调用流程如下 接下来就对loadAudioPolicyEngineConfig展开分析 1,解析volume标签 engineConfig::ParsingResult EngineBase::loadAudioPolicyEngine…

构建 VPC 并启动 Web 服务器

实验 2:构建 VPC 并启动 Web 服务器 目标 完成本实验后,您可以: 创建 VPC。创建子网。配置安全组。在 VPC 中启动 EC2 实例。任务 1:创建 VPC 在本任务中,您将使用 VPC 向导在单个可用区中创建一个 VPC、一个互联网网关…

【vueCms】vueCms后台管理系统安装问题集合

开源项目地址: https://www.vuecms.cn/ 开源代码地址: https://gitee.com/derekgo/vue-cms_xg 问题一 如果出现提示少了个index.html。如下图 解决办法: 重新安装前端(vue3_vite)项目依赖 问题二 npm版本高无法解析依赖树导致依赖下载失败 解决方案: npm install --legacy…

Web程序设计-实验05 DOM与BOM编程

题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面(详见参考资源,建议自行搜索更多后台页面)的主要元素构成和版面设计,借鉴并构思预期效果。 2、新建 index.h…

ODBC访问达梦数据库Ubuntu18.04 x86-x64(亲测有效)

ODBC访问达梦数据库Ubuntu18.04 x86-x64 第1步:安装unixodbc驱动,使用下面命令。第2步:拷贝已经安装好的达梦数据库驱动程序第3步:配置ODBC必要的参数文件,如下图第4步:设置环境变量第5步:连接测试 说明&am…

Linux实验六:进程间通信(二)

目录 一、实验目的二、实验内容三、实验环境四、参考代码五、实验步骤步骤1. 编辑源代码test6.c步骤2. 编译源代码test6.c步骤3. 运行可执行程序test6步骤4. 进一步调试源代码test6.c 六、实验结果七、实验总结 一、实验目的 1、理解 POSIX 和 System V 提供的 IPC 相关概念&a…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能

自定义房间区域功能 效果: 功能: 能够自定义房间的大小一键生成放置区域可控的放置网格点当物体放置到区域内可自动吸附物体是否可放置,放置时如果与其他物体交叉则不可放置(纯算法计算)管理房间内的物体&#xff0c…