数据库(五)数据库设计 | 实体关系模型ER model 映射基数 弱实体集 实体关系设计

news2024/12/24 8:20:31

文章目录

  • 1 实体关系模型 ER模型ER model
    • 1.1 E-R模型结构
      • 1.1.1 实体和实体集
      • 1.1.2 属性
      • 1.1.3 关系集合
    • 1.2 ER关系图绘制
      • 1.2.1 实体集绘制
      • 1.2.2 关系集绘制
  • 2 映射基数 Mapping Cardinalities
    • 2.1 映射基数类型
      • 2.1.1 一对一
      • 2.1.2 一对多
      • 2.1.3 多对一
      • 2.1.4 多对多
    • 2.2 全部或部分参与约束
    • 2.3 最小最大基数约束
  • 3 弱实体集
  • 4 ER模型转换为关系模式Relation Schema
    • 4.1 强实体集表示
    • 4.2 弱实体集表示
    • 4.3 关系集合表示
  • 5 实体关系设计
  • 6 扩展E-R特征
    • 6.1 IS-A 继承

参考

ER 图是什么?这一篇让你搞懂 ER 图! - 知乎 (zhihu.com)

数据库设计核心就是

1 理解用户需求

2 使用E-R关系模型,绘制E-R图

3 将E-R关系模型转换为数据库表

本节核心在第二部分到第三部分

1 实体关系模型 ER模型ER model

1.1 E-R模型结构

E-R模型实际上是由多个实体集(含有不同属性)和联系集组成

1.1.1 实体和实体集

实体 Entity 是一个物体,客观存在并且相互区别

​ 比如一个学生,一个公司

实体集合 Entity Sets 具有相同属性的实体的集合

​ 比如一群学生,一系列公司

1.1.2 属性

属性 Attributes

​ 比如ID,姓名,这些属性能够区别不同的实体

​ 就好比我们每个人都有自己的特征,这些特征区分了不同的实体

除了基本属性还有如下一些属性概念需要了解

**简单属性 Simple 和复合属性 composite **

  • 简单属性:不可再拆分,如数学成绩是一个简单属性
  • 复合属性:可以再拆分,即属性的嵌套组合,如名字这个属性可以拆分为姓这个属性和名这个属性

单值属性 Single-valued和多值属性 multi-valued

  • 单值属性:即只能是一个的属性,如一个人性别值只能是一个男或女 (排除个别特殊现象哈哈哈)
  • 多值属性:即可能有多个值的属性,如电话号码可以有多个

**派生属性 Derived attributes **

​ 可以从一个已知的属性的值推理出来,比如知道出生可以退出年龄

​ 所以年龄就是一个派生属性

描述属性 descriptive attributes

描述属性一般都是给关系集合的,

如学生实体集合Student和考试实体集合section通过take(参加)这一个关系集合联系起来,那么take这个关系集合可以用grade成绩这一属性来描述

1.1.3 关系集合

关系 Relationship 在一些实体中的关系

**关系集合 Relationship Sets ** 相同类型的关系的集合

关系集合往往要建立多个实体集的关系

递归关系集合 Recursive relationship set

​ 同一实体集以不同的角色多次参与关系集。

二元关系

​ 只包含两个实体集的关系

非二元关系集合

​ 含超过两个实体集的关系

1.2 ER关系图绘制

E-R diagram ER关系图

1.2.1 实体集绘制

1 矩形表示一个实体集,矩形上方写实体集的名字

2 实体集的属性一个一个列在矩形框内,用下横线标识主键

举例如下 Student表的关系图绘制

在这里插入图片描述

1.2.2 关系集绘制

1 用一个菱形方块代表关系集,连接多个实体集矩形

举例如下 advisor代表一个关系集

在这里插入图片描述

2 上面讲到描述性属性,用虚线表示,如下

在这里插入图片描述

上面我们讲完了实体集的一些初步介绍,接下来重点讲其中一些部分

2 映射基数 Mapping Cardinalities

Mapping Cardinalities 映射基数 表示另一个实体可以通过关系集与之关联的实体数。

有以下几种类型

一对一,一对多,多对一,多对多

在这里插入图片描述

2.1 映射基数类型

2.1.1 一对一

一对一 one to one:一个导师最多指导一个学生,一个学生最多被一个导师指导。说明导师可以不指导学生,学生也可以单干。

绘制E-R图如下 左右各一个箭头

在这里插入图片描述

2.1.2 一对多

一对多 one to many:一个导师可以指导任意多个学生,一个学生至多被一个导师指导。

绘制E-R图如下 只有one的那一侧有箭头

在这里插入图片描述

2.1.3 多对一

多对一 many to one:一个导师至多指导一个学生,一个学生可以被任意个导师指导。

绘制E-R图如下 只有one的那一侧有箭头

在这里插入图片描述

2.1.4 多对多

多对多 many to many:一个导师可以指导任意学生,一个学生可以被任意多个导师指导。
说明导师可以不指导学生,也可以指导好些个。学生可以单干,也可以多拜几个师傅

绘制E-R图如下两侧都没有箭头

在这里插入图片描述

总结:one指向的那一侧是箭头->

对于以上的各种关系,每一个advisor关系集合的超键都由各个实体集合的主键并集组成

但是超键却不太一样,一般选择many那一侧的主键做关系集合的主键

多对多

  • 主键和超键相同

一对多

  • 多的那一侧,当做主键

一对一

  • 任何一侧都可以当做主键

2.2 全部或部分参与约束

Total and Partial Participation 全部或部分参与

如下图所示,绘制E-R图时候 双线代表全部,单线代表部分

28748594)

学生一侧是全部,含义代表每一个学生必须有一个指导老师

导师一侧是部分,含义代表有些老师指导学生,有些老师不指导学生

2.3 最小最大基数约束

在之前的基础上,可以加数量上的范围约束

E-R关系图上用双点表示, *表示无限制

格式

最小值..最大值

举例如下

在这里插入图片描述

含义如下

左侧老师一侧:0…* 代表一个指导老师能够指导0个或者更多个学生,没有上限

右侧学生一侧:1…1 代表一个学生至少1 个老师,至多也只有1个指导老师

超键是都有的

但主键根据情况不同而不同

比如

3 弱实体集

他的存在依赖于另一个实体集(被依赖的那个称作标识实体集identifying entity sets)

比如 考试这个存在就是依赖于课程的存在,所以课程实体集叫做标识实体集identifying entity sets,考试这个实体集叫做弱实体集Weak Entity Sets

E-R图中,用双框矩形表示,关系集合由双框菱形组成,虚线代表辨别属性

如下图所示

在这里插入图片描述

该关系集合sec_course 的主键由标识实体集的主键和弱实体集的辨别属性(即虚线画出来的)一起构成

弱实体集那一侧一定是全部total participation

4 ER模型转换为关系模式Relation Schema

初步解决

4.1 强实体集表示

对于强实体集而言有着简单的属性,直接转即可

举例如下

在这里插入图片描述

对于强实体集有着复合属性,转换后成为一个一个简单属性(复合属性不会出现在其中)

举例如下

在这里插入图片描述

对于多值属性而言如电话号码,我们再创建一个新的表

在这里插入图片描述

派生属性不要出现在表中,直接计算得到

4.2 弱实体集表示

弱实体集形成新的表包含标识实体集的主键和它自己的属性

举例如下

在这里插入图片描述

4.3 关系集合表示

多对多

两个实体集的主键+他自己的描述属性

在这里插入图片描述

多对一

在这里插入图片描述

优化如下

在这里插入图片描述

一对一

8597)

优化如下

在这里插入图片描述

5 实体关系设计

问题一:假设一个部分可能有许多不同的分配。

解决:使用多值复合属性赋值

问题二:假设有关于作业的其他信息,例如最高分或截止日期

解决:将叶属性添加到分配属性

但是问题二有冗余问题

将赋值模型建模为由部分标识的弱实体集

6 扩展E-R特征

6.1 IS-A 继承

Person可以经过Specialization(特化)称为两个小的如学生也是雇员

实体集可以包括实体的子分组,这些实体在某种程度上与集中的其他实体不同。

较低级别的实体集继承(inheritance)了较高级别实体集的所有属性和关系参与。

多重继承 简单继承

例如 人员集包括子组——员工集和学生集

重叠(Overlapping)——一个实体可能属于多个专用实体集,约束要求一个实体可以属于多个较低级别的实体集如,一个人可能既是学生也是雇员

不相交(Disjointness)——一个实体最多必须属于一个专用实体集,约束要求一个实体只能属于一个较低级别的实体集,如一个人只能是雇员里的前台柜员或者秘书之一

通过架构表示 IS-A 关系

方式一

​ 建立一个高水平实体集的架构,建立一个低水平的架构。通过外键建立两个练习

缺点:获取有关的信息,一个员工需要访问两个关系(低级架构和高级架构)

方式二

​ 使用所有本地属性和继承属性为每个实体集形成架构

缺点:冗余

用聚合的方式

使用聚合 – 可以将聚合实体集视为单个单元,而不考虑其内部结构的细节。

聚合是一种抽象,通过该抽象,将关系视为更高级别的实体

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

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

相关文章

stable diffusion WebUI基础-安装

电脑配置要求 N卡显存6G起(建议直接上12G)内存建议16G,8G也可固态盘500G以上CPU i5即可魔法上网虚拟环境安装python 我非常不建议直接在自己的电脑里直接装python,因为现在很多项目的环境比较乱,对于stable diffusion 尽可能有一个干净的python 环境最好,所以我推荐使用mi…

SpingBoot的项目实战--模拟电商【3.购物车模块】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.功能需求 二.代码编写 …

国内的数据安全与隐私保护现状如何?

在过去的几年中,中国已经采取了一系列的措施来应对数据安全和隐私保护的挑战。 法律法规 中国已经出台了一系列的法律法规来保护数据安全和隐私。例如,《中华人民共和国数据安全法》和《中华人民共和国个人信息保护法》等法律已经在2021年颁布施行。此外…

在pbootcms中制作静态化的TAG标签列表

如果你使用pbootcms来管理你的网站,你可能会遇到这样的需求:将TAG标签列表改成静态化的类似于栏目结构的需求。下面是实现这个需求的步骤。 步骤1 修改PHP文件 打开 apps/home/controller/ParserController.php 并找到大约在1852行左右的代码段&#x…

数据库02-06 形式化

01. 03. 04. 05. 06. 07. 08. 09.

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代,网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而,随着网络的普及和技术的不断发展,网络安全问题也日益凸显,其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

odoo模型钩子函数,启动odoo执行自定义代码

在odoo的models模型基类中定义了这样一个方法_register_hook, 从方法的备注(表单注册以后执行的代码)可以看出这个方法的作用, 所以当我们想在odoo启动以后执行一些代码 比如队列监听等等事情的时候,就可以利用这个方法执行我们的代码 示例: class ModelName(models.Model):…

《动手学深度学习》学习笔记 第7章 现代卷积神经网络

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知识,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…

用PHP搭建一个绘画API

【腾讯云AI绘画】用PHP搭建一个绘画API 大家好!今天我要给大家推荐的是如何用PHP搭建一个绘画API,让你的网站或应用瞬间拥有强大的绘画能力!无论你是想要让用户在网页上绘制自己的创意,还是想要实现自动绘画生成特效,这…

关于简单的数据可视化

1. 安装数据可视化必要的openpyxl、pandas,matplotlib等软件包 使用清华源,命令如下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pandaspip install -i https://pypi.tuna.tsingh…

【ROS2】MOMO的鱼香ROS2(五)ROS2入门篇——ROS2接口与自定义

ROS2接口与自定义 引言1 ROS2自带接口1.1 ROS2通用标准消息包1.2 ROS2传感器消息包1.3 ROS2几何相关消息包 2 ROS2接口介绍2.1 常用CLI命令2.2 原始数据类型与包装类型 3 自定义接口示例3.1 接口定义3.2 自定义接口RCLPY 引言 笔者跟着鱼香ROS的ROS2学习之旅 学习参考&#xf…

微同城生活源码系统:专业搭建本地生活服务平台 附带完整的安装部署教程

随着移动互联网的普及,人们越来越依赖手机进行日常生活中的各种活动,包括购物、餐饮、娱乐等。而传统的本地生活服务平台往往存在着功能单一、用户体验差等问题,无法满足用户日益增长的需求。因此,开发一款功能强大、易用性强的本…

CDGA,CDGP,CDMP有啥区别?考哪个好?

🎯CDMP数据管理专业认证是由DAMA国际于2004推出,是一项涵盖学历教育、工作经验和专业知识考试在内的综合资格认证,也是目前全球为一数据管理方面权威性认证。 ✅CDGA:数据治理工程师,“DAMA中国”组织的数据治理方面的…

利用Ubuntu 20.04(WSL2)+ DevEco Device Tools搭建鸿蒙设备开发环境

小白一个,因为项目原因需要用到小熊派BearPi Nano做开发,决定使用WSL2上的Ubuntu 20.04进行开发环境的搭建,记录一下搭建的流程,过程难免有疏漏,望谅解。 过程中参考了随遇而安的dandelion 大佬的这一篇文章&#xff1…

【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程 课程地址:模型预测控制(2022春)lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC(…

MySQL--安装与配置与向日葵的基本操作使用

一.MySQL介绍 1.1 MySQL简介 MySQL是一个开源的关系型数据库管理系统,最早由瑞典MySQL AB公司开发。这个数据库系统有着高可靠性、高性能和易用性的特点,在互联网上得到了广泛的应用。MySQL支持SQL语言,可以运行在多种操作系统上&#xff0c…

数据结构【图篇】

数据结构【图篇】 文章目录 数据结构【图篇】前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、图(一)、图的存储(二)、图的基本操作(三)、最短路径问题 二、拓扑排序三、结语 前言 为什么突然想学算法了? > 用较为“官方…

Java中100==100为true,而1000==1000为false?

前言 今天跟大家聊一个有趣的话题,在Java中两个Integer对象做比较时,会产生意想不到的结果。 例如: Integer a 100; Integer b 100; System.out.println(ab);其运行结果是:true。 而如果改成下面这样: Integer …

八大算法排序@堆排序(C语言版本)

目录 堆排序大堆排序概念算法思想建堆建堆核心算法建堆的代码 排序代码实现 小堆排序代码实现时间复杂度空间复杂度 堆排序 堆排序借用的是堆的特性来实现排序功能的。大堆需要满足父节点大于子节点,因此堆顶是整个数组中的最大元素。小堆则相反,要求父节…

在Android设备上设置和使用隧道代理HTTP

随着互联网的深入发展,网络信息的传递已经成为人们日常生活中不可或缺的一部分。对于我们中国人来说,由于某些特殊的原因,访问国外网站时常常会遇到限制。为了解决这个问题,使用代理服务器成为了许多人的选择。而在Android设备上设…