当前位置: 首页 > news >正文

【从删库到跑路】MySQL数据库 — E-R图 | 关系模型

🎊专栏【MySQL】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【如愿】
大一同学小吉,欢迎并且感谢大家指出我的问题🥰

文章目录

  • 🌹简述什么是E-R图
    • ⭐核心概念
  • 🌹E-R图里面的基本概念
  • 🎄E-R图例题

在这里插入图片描述

🌹简述什么是E-R图

E-R图(Entity-Relationship Diagram)是一种图形化工具,常用于数据库设计和概念建模。它以图形的形式展示了实体、属性和它们之间的关系,帮助开发人员和数据库设计师理解和沟通实体之间的联系。

在数据库设计中,E-R图可以被视为一个概念模型,用于描述现实世界中的实体及其之间的关系。通过使用E-R图,我们可以更清晰地理解数据模型的结构和组成。

⭐核心概念

  • 实体(Entity):实体是现实世界中一个独立、具体的事物或对象。在E-R图中,实体用矩形框表示,框内写有实体的名称。每个实体都有一个唯一标识符(通常称为主键),用于区分不同的实体。例如,在一个学生管理系统中,"学生"可以是一个实体。
  • 属性(Attribute):属性用于描述实体的各个方面或特征。在E-R图中,属性使用椭圆形表示,并与实体相连。属性可以是简单的,如姓名、年龄等;也可以是复杂的,如日期、文本等。每个属性都有一个名称并指定其数据类型。例如,在"学生"实体中,属性可以包括"姓名"、"年龄"等。
  • 关系(Relationship):关系表示实体之间的联系和依赖关系。在E-R图中,关系使用菱形表示,并连接相关的实体。关系可以是一对一、一对多或多对多的。关系可以有自己的属性,称为关系属性。例如,在学生管理系统中,"课程"和"学生"之间可以存在一种关系,表示一个学生可以选择多门课程。
  • 基数性(Cardinality):基数性描述了实体之间关系的数量关系。常见的基数性有一对一(1:1)、一对多(1:N)和多对多(N:M)。在E-R图中,可以使用符号来表示基数性,例如用一个竖线(|)表示一对一关系,一个小箭头(->)表示一对多关系,两个小箭头(<->)表示多对多关系。

通过E-R图,我们可以更加直观地了解实体、属性和关系之间的联系,以及它们在数据库中的结构和组织方式。E-R图可以帮助开发人员和数据库设计师共同理解和沟通数据模型,从而更好地设计、创建和操作数据库。它是数据库设计过程中的重要工具,能够提高团队之间的协作效率,并确保数据库结构符合需求和规范。

🌹E-R图里面的基本概念

请添加图片描述

在E-R图中,1:n(一对多)和n:m(多对多)是常见的关系类型,用于描述实体之间的数量关系。

一对多(1:n)关系一对多关系表示一个实体与另一个实体之间存在单向的关联,其中一个实体可以具有多个相关联的实体。在E-R图中,一对多关系通常使用一个小箭头(->)来表示。箭头指向具有多个实体的一端。例如,一个“学院”实体与多个“学生”实体之间可以建立一对多关系,表示一个学院有多个学生。

多对多(n:m)关系多对多关系表示两个实体之间存在互相关联的情况,其中一个实体可以同时与多个另一个实体相关联,反之亦然。在E-R图中,多对多关系通常使用双向箭头(<->)来表示。箭头两端连接的实体之间可以相互关联。例如,一个“学生”实体可以选择多门“课程”,同时一个“课程”也可以被多个“学生”选择,这种情况下就存在多对多关系。

需要注意的是,在E-R图中,一对多和多对多关系都可以具有关系属性,用于描述关系本身的特征。关系属性可以包含关系的附加信息,如成绩、时间等。

在数据库的实际设计中,一对多关系可以通过在多的一方(例如,学生表)中添加外键来表示与一的一方(例如,学院表)的关联。而多对多关系则需要通过使用连接表(或称为关联表)来表示,该表包含两个实体的主键作为外键,用于建立它们之间的关联。

🎄E-R图例题

考虑某个IT公司的数据库信息:
①部门具有部门编号、部门名称、办公地点等属性;
②部门员工具有员工编号、姓名、级别等属性,员工只在一个部门工作;
③每个部门有唯一一个部门员工作为部门经理;
④实习生具有实习编号、姓名、年龄等属性,只在一个部门实习;
⑤项目具有项目编号、项目名称、开始日期、结束日期等属性;
⑥每个项目由一名员工负责,由多名员工、实习生参与;
⑦一名员工只负责一个项目,可以参与多个项目,在每个项目具有工作时间比;
⑧ 每个实习生只参与一个项目。
画出 E-R 图,并将 E-R 图转换为关系模型(包括关系名、属性名、码和完整性约朿条件)。

请添加图片描述
关系模型为:
部门(编号,名称,办公地点,经理编号),部门的经理编号参照员工的编号;
员工(编号,姓名,级别,部门编号),员工的部门编号参照部门的编号;
实习生(编号,姓名,年龄,部门编号),实习生的部门编号参照部门的编号;
项目(编号,名称,开始日期,结束日期,负责人编号),项目的负责人编号参照员工的编号;
实习参与(实习生编号,项目编号),实习生编号、项目编号分别参照实习生的编号、项目的编号;员工参与(员工编号,项目编号,时间比),员工编号、项目编号分别参照员工的编 号、项目的编号,且一个员工的所有时间比相加不超过100%。

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

相关文章:

【从删库到跑路】MySQL数据库 — E-R图 | 关系模型

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f339;简述什么是E-R图⭐核心概念 &#x1f339;E-R图…...

网工内推 | 美的、得力集团,包吃包住,IE认证优先,14薪

01 美的 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1.负责IT网络设备、IDC机房的日常维护巡检、监控和管理&#xff1b; 2.负责路由、交换、防火墙、无线控制器、AP等网络设备的开通、调整、优化升级&#xff1b; 3.负责公司OT、IT网络规划&#xff0c;项目实施以…...

java springboot在测试类中构建虚拟MVC环境并发送请求

好 上文java springboot在测试类中启动一个web环境我们在测试类中搭了一个web环境 那么 下面就要想办法弄一个接口的测试 这边 我们还是要在controller包下去创建一个 controller类 写一个访问接口 这里 我创建一个 TestWeb.java 这里 我们编写代码如下 package com.example.…...

python运算符重载之字符串显示和右侧加法

1 python运算符重载之字符串显示和右侧加法 1.1 重载字符串显示 1.1.1 str和repr python调用prin()t时&#xff0c;自动调用__str__和__repr__&#xff0c; python调用str()时&#xff0c;自动调用__str__和__repr__&#xff0c; python调用repr()时&#xff0c;自动调用_…...

卷积神经网络(AlexNet)鸟类识别

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、AlexNet (8层&#xff09;介绍四、构建AlexNet (8层&#xff09;网络模型五、…...

hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误&#xff0c;大家觉得应该怎么办&#xff1f;从哪方面入手呢&#xff1f; 1.百…...

Java Web——XML

1. XML概述 XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。XML是一种用于存储和传输数据的语言&#xff0c;它使用标签来标记数据&#xff0c;以便于计算机处理和我们人来阅读。 “可扩展”三个字表明XML可以根据需要进行扩展和定制。这意味…...

【.NET Core】Task应用详解

【.NET Core】Task应用详解 文章目录 【.NET Core】Task应用详解一、概述二、Task用法应用2.1 通过New实例化Task2.2 通过Factory中StartNew方法2.3 通过Run方法 三、让Task任务按顺序执行四、通过异步Run方法异步执行顺序Task五、创建带有返回值的Task<TResult>六、Task…...

convertRect:toView 方法注意事项

这是在网上找到的一张图 我们开发中有时候会用到左边转换&#xff0c;convertRect:toView 通常情况下&#xff0c;我们回这样使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同&#xff0c;只改变origin newRect.origin a…...

Java实现王者荣耀小游戏

主要功能 键盘W,A,S,D键&#xff1a;控制玩家上下左右移动。按钮一&#xff1a;控制英雄发射一个矩形攻击红方小兵。按钮控制英雄发射魅惑技能&#xff0c;伤害小兵并让小兵停止移动。技能三&#xff1a;攻击多个敌人并让小兵停止移动。普攻&#xff1a;对小兵造成基础伤害。小…...

【黑马甄选离线数仓day04_维度域开发】

1. 维度主题表数据导出 1.1 PostgreSQL介绍 PostgreSQL 是一个功能强大的开源对象关系数据库系统&#xff0c;它使用和扩展了 SQL 语言&#xff0c;并结合了许多安全存储和扩展最复杂数据工作负载的功能。 官方网址&#xff1a;PostgreSQL: The worlds most advanced open s…...

C# 中using关键字的使用

在C#中我们还是很有必要掌握using关键字的。 比如这样&#xff1a; string path “D:\data.txt”; if (!File.Exists(path )) {File.Create(path); File.WriteAllText(path,"OK"); } 首先我创建…...

16 redis高可用读写分离方案

在前面说的JedisSentinelPool只能实现主从的切换&#xff0c;而无法实现读写的分离。 1.哨兵的客户端实现主从切换方案 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</arti…...

Nginx模块开发之http handler实现流量统计(2)

文章目录 一、概述二、Nginx handler模块开发2.1、代码实现2.2、编写config文件2.3、编译模块到Nginx源码中2.4、修改conf文件2.5、执行效果 总结 一、概述 上一篇【Nginx模块开发之http handler实现流量统计&#xff08;1&#xff09;】使用数组在单进程实现了IP的流量统计&a…...

案例012:Java+SSM+uniapp基于微信小程序的科创微应用平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

vue3+elementPlus登录向后端服务器发起数据请求Ajax

后端的url登录接口 先修改main.js文件 // 导入Ajax 前后端数据传输 import axios from "axios"; const app createApp(App) //vue3.0使用app.config.globalProperties.$http app.config.globalProperties.$http axios app.mount(#app); login.vue 页面显示部分…...

存储区域

将应用程序加载到内存空间执行时&#xff0c;操作系统负责代码段、数据段和BSS段的加载&#xff0c;并在内存中为这些段分配空间。 栈段亦由操作系统分配和管理&#xff0c;而不需要程序员显示地管理&#xff1b;堆段由程序员自己管理&#xff0c;即显示地申请和释放空间。 进…...

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

前言 我们在开发串口通信程序时,有时候会遇到比如单片机或者传感器发送的数据速度特别快,比如10ms、20ms发送一次,并且每次发送的数据量还比较大,如果按照常规的写法,我们会发现接收的数据还没处理完,新的数据又发送过来了,这就会导致处理数据滞后,软件始终处理的不是…...

Redis-Redis高可用集群之水平扩展

Redis3.0以后的版本虽然有了集群功能&#xff0c;提供了比之前版本的哨兵模式更高的性能与可用性&#xff0c;但是集群的水平扩展却比较麻烦&#xff0c;今天就来带大家看看redis高可用集群如何做水平扩展&#xff0c;原始集群(见下图)由6个节点组成&#xff0c;6个节点分布在三…...

2023全球数字贸易创新大赛-人工智能元宇宙-4-10

目录 竞赛感悟: 创业的话 好的项目 数字工厂,智慧制造:集群控制的安全问题...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码&#xff0c;使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...