数据库SQL——什么是实体-联系模型(E-R模型)?

目录

什么是实体-联系模型?

1.实体集

2.联系集

3.映射基数

一对一(1:1)

一对多(1:n)

多对一(n:1)

多对多(m:n)

全部参与:

4.主码

弱实体集:

特点


什么是实体-联系模型?

        实体-联系模型是一种概念模型,用于对现实世界进行建模。它提供了一种不受任何数据库管理系统(DBMS)约束的面向用户的表达方法,用于描述现实世界的概念结构。实体-联系模型的主要构成要素包括实体、属性和联系。而E-R图可以通过图形的方式表示数据库的总体逻辑结构。这样直接理解比较晦涩。

1.实体集

  一个实体是现实世界中可区别于其他所有对象的一个“事物”或“对象”。他有两个特点。一个是现实世界中存在一个是可区别。

实体集是共享相同性质或属性的、具有相同类型的实体的集合。实体通过一组属性来表示。

属性是实体集中每个成员所拥有的描述性性质。每个实体在他的属性上都有一个值。

实体在E-R图中的表示:

上图是两个实体集的E-R图,阴影部分为E-R图的实体集名称。

2.联系集

联系是多个实体间的互相关联

联系集是在n>=2时(可能相同的)实体集上的数学关系。联系集在E-R图中用菱形表示

下图是一个实体的自身联系集:

下图是两个实体通过advisor的联系集:

带有附加属性加到联系集的E-R图(虚线):

3.映射基数

映射基数(Mapping Cardinalities)表示一个实体能通过一个联系集关联的另一些实体的数量。

一对一(1:1)

允许有没联系的,比如:部门-经理

一对一的E-R图: 

一对多(1:n)

一对多的E-R图:

多对一(n:1)

 

 多对一的E-R图:

多对多(m:n)

多对多的E-R图:

 

在ER图中,联系用菱形表示,菱形框内写联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。 

全部参与

每个实体集完全参与。在这个例子中即每个学生都有指导老师。否则被称为部分参与。

4.主码

主码是数据库表中用于唯一确定表中每一行的一个或一组列。它一定可以把这些实体区分出来。它具有以下特点:

  1. 唯一性:主码保证表中的每一行记录都是唯一的,不会有重复。
  2. 非空性:主码字段必须包含数据,不能为空。
  3. 数据完整性:通过主码,可以防止重复数据和不一致的数据进入数据库。
  4. 快速查询:数据库管理系统利用主码来快速定位和访问记录,提高查询性能。

注意在多对多的关系中要联系两边的主码才能区分出来。一对多&多对一的找“多”边的主码。一对一找任意一边的主码即可

弱实体集:

弱实体集是指那些没有足够的属性来唯一标识其实体的实体集合。这些实体需要依赖于其他实体集(称为强实体集)才能被完全标识和存储。

特点
  1. 存在依赖性:弱实体集的实体存在依赖于与其相关联的强实体。如果强实体不存在,那么与其相关联的弱实体也将不存在。
  2. 标识依赖性:弱实体集的标识依赖于与其相关联的强实体。弱实体的标识必须包含其所依赖的强实体的标识,通常与弱实体自身的部分标识组合在一起,形成弱实体的全局标识。
  3. 部分关键字:弱实体集的关键字只是部分的,它需要与强实体的关键字一起才能形成全关键字。这意味着,弱实体集不能单独通过其自身的属性来唯一标识其实体。

可能有点难懂。让我们来举个具体的例子:

例子1:

        在人事管理系统中,职工家属的信息(如子女、配偶等)可以以职工的存在为前提,因此家属实体集是一个弱实体集,它依赖于职工实体集。

例子2:

        在电子商务系统中,订单明细的实体集可以是一个弱实体集,因为它依赖于订单实体集。通过订单号可以确定对应的订单明细

 E-R图:下划线用虚线

 

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

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

相关文章

共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕

在这个技术革新日新月异的时代,开源精神如同点燃创新火焰的火种,照亮了无数技术探索者的征途。2024年11月9日,备受瞩目的2024 CCF中国开源大会在深圳这座充满活力的创新之城盛大开幕。这场开源领域的顶级盛事,以“湾区聚力 开源启…

[极客大挑战 2019]Secret File 1

[极客大挑战 2019]Secret File 1 审题 看到题目应该是一道简单的按照要求找flag的题目 知识点 跟着题目走 解题 一,查看源码 找到网站进入 点开发现 【注意它说没看清吗】 二,使用BP抓包试试 发现新出现了/action.php 抓到后放到Repeater中响应 得…

初识Electron 进程通信

概述 Electron chromium nodejs native API,也就是将node环境和浏览器环境整合到了一起,这样就构成了桌面端(chromium负责渲染、node负责操作系统API等) 流程模型 预加载脚本:运行在浏览器环境下,但是…

语义分割实战——基于DeepLabv3+神经网络头发分割系统源码

第一步:准备数据 头发分割数据,总共有1050张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 DeepLabV3的网络结构如下图所示,主要为Encoder-Decoder结构。其中&am…

c# 开发web服务 webserver

024-11-10<<<<<<<<<<<<<<<<<<<<<<<<<< 开始插件前Cyber_CallWeb acajax_dac_database_viewer 2024-11-10<<<<<<<<<<<<<<<<<<<<…

「C/C++」C/C++ 预处理 之 常用预处理宏

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

Javascript中如何实现函数缓存?函数缓存有哪些应用场景?

#一、是什么 函数缓存&#xff0c;就是将函数运算过的结果进行缓存 本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09; 常用于缓存数据计算结果和缓存对象 解释 const add (a,b) > ab; const calc memoize(add); // 函数缓存…

Maven的依赖管理、传递、冲突、父子工程的继承和聚合

目录 一、基于IDEA 进行Maven依赖管理 (一)依赖管理概念 (二)Maven工程核心信息配置和解读&#xff08;GAVP&#xff09; (三)Maven工程依赖管理配置 1.依赖管理和依赖添加 2.依赖版本统一提取和维护 (四)依赖范围 (五)Maven工程依赖下载失败错误解决&#xff08;重点…

iOS SmartCodable 替换 HandyJSON 适配记录

前言 HandyJSON群里说建议不要再使用HandyJSON&#xff0c;我最终选择了SmartCodable 来替换&#xff0c;原因如下&#xff1a; 首先按照 SmartCodable 官方教程替换 大概要替换的内容如图&#xff1a; 详细的替换教程请前往&#xff1a;使用SmartCodable 平替 HandyJSON …

1.2 图像处理基本操作

在本实战中&#xff0c;我们将学习如何使用OpenCV进行基本的图像处理操作。首先&#xff0c;我们将通过cv2.imread()函数读取图像&#xff0c;并使用cv2.imshow()在窗口中显示它。接着&#xff0c;我们将探索如何通过cv2.imwrite()保存图像&#xff0c;并设置不同的参数以控制图…

使用Python实现音频降噪

在音频处理领域&#xff0c;背景噪声是一个常见的问题。为了提高音频的质量&#xff0c;我们需要对音频进行降噪处理。本文将介绍如何使用 Python 实现音频降噪。 依赖库安装 在开始之前&#xff0c;我们需要安装以下依赖库&#xff1a; pydub&#xff1a;用于音频文件的读取…

与AMD GPU上的对比语言-图像预训练(CLIP)模型交互

Interacting with Contrastive Language-Image Pre-Training (CLIP) model on AMD GPU — ROCm Blogs 2024年4月16日&#xff0c;由Sean Song撰写. 引言 对比语言-图像预训练&#xff08;CLIP&#xff09;是一种多模态深度学习模型&#xff0c;连接视觉和自然语言。它在Open…

2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto- WriteUp

2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto-WriteUp Crypto&#xff1a;Crypto-2&#xff1a;Crypto-3&#xff1a; 前言&#xff1a;本次比赛已经结束&#xff0c;用于赛后复现&#xff0c;欢迎大家交流学习&#xff01; Crypto&#xff1a; Crypto-2&#xff1a; …

下载mysql的jar,添加至jmeter中,编写jdbc协议脚本1106

下载jar包&#xff1a; 步骤1&#xff1a;进入maven仓库官网https://mvnrepository.com/ 步骤2&#xff1a;搜索实际的数据库 步骤3&#xff1a;点击 Mysql connnector/J 步骤5、查看数据库的版本号&#xff0c;选择具体版本&#xff0c;我的是mysql 8.0.16,下图&#xff0c;…

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?

市场上测温产品让人眼花缭乱&#xff0c;通过调研分析&#xff0c;小编发现测温枪占很高比重。但是&#xff0c;测温枪局限于显示单一数值信息&#xff0c;无法直观地展示物体的整体温度分布情况&#xff0c;而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…

模型训练中GPU利用率低?

买了块魔改华硕猛禽2080ti&#xff0c;找了下没找到什么测试显存的软件&#xff0c;于是用训练模型来测试魔改后的显存稳定性&#xff0c;因为模型训练器没有资源监测&#xff0c;于是用了Windows任务管理器来查看显卡使用情况&#xff0c;却发现GPU的利用率怎么这么低&#xf…

开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 本文主要介绍如何在Linux CentOS8 中搭建GitLab私有仓库并且结合内网穿透工具实现在公网…

在vue3的vite网络请求报错 [vite] http proxy error:

在开发的过程中 代理proxy报错: [vite] http proxy error: /ranking/hostRank?dateType1 Error: connect ETIMEDOUT 43.xxx.xxx.xxx:443 网络请求是http的: // vite.config.ts import { Agent } from node:http;server: {host: 0.0.0.0,port: port,open: true,https: false,…

云计算 esxi 如何 部署iscsi ,配合windows 2012 iscsi 存储

1 windows 2012 如何创建iscsi 存储服务器&#xff0c;看前面的文章 iscsi 服务上的地址 192.168.10.196 192.168.10.196 2 如何在esxi 创建iscsi 注意地址是192.168.10.196 这是服务器的地址 很明显这是我们esxi 主机上发现的iscsi 磁盘 、

【Python爬虫实战】深入解锁 DrissionPage:ChromiumPage 自动化网页操作指南

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、ChromiumPage基础操作 &#xff08;一&#xff09;初始化Drission 和 ChromiumPage 对象 &#xff0…