E-R图与关系模式

1. E-R模型

英文全称:Entity-relationship model,即实体关系模型

把现实世界的 实体模型通过建模转换为信息世界的概念模型,这个概念模型就是E-R模型
在这里插入图片描述

2. 数据库设计流程

一般设计数据库分为三个步骤

  1. 把现实世界的实体模型,通过建模转换成信息世界的E-R模型;
  2. 信息世界的E-R模型,经过模型转化,得到数据库世界的数据模型;
  3. 把数据模型进一步规范化,得到最终的数据库结构模型;

数据库世界的数据模型按数据的组织形式而分为三种类型

  • 关系模型(在关系数据库设计中)
  • 层次模型()
  • 网状模型()

3. 关系模型

3.1 常用概念

  • 关系:可以理解为一张二维表,每个关系都具有一个关系名,也就是通常说的表名(table);
  • 元组:可以理解为二维表中的一行,在数据库中经常被称为记录(record);
  • 属性:可以理解为二维表中的一列,在数据库中经常被称为字段(colum);
  • 域:属性的取值范围,也就是数据库中某一列的取值限制;
  • 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成(key);
  • 关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,……,属性N),在数据库中成为表结构;

3.2 E-R图转关系模式

对于E-R图中每个实体,都应转换为一个关系(table)

该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性或哪几个属性组作为关键字,关键字用下划线标识;

3.2.1 一对一关系

比如:一个班级对应一个正班长,就是1:1联系
在这里插入图片描述
则可以创建两个关系(表),一个班级关系(表),一个学生关系(表);
然后我们需要一个联系(关联)来连接这两个关系(表)
有两种方案:

  1. 联系不单独对应一个关系(表):
    不单独创建一个关系(表)来存储联系,通俗讲就是在一个表中冗余一个字段存另外一个表的主键。
    比如在学生关系(表)中添加一个班级编号属性,用来存储班级关系中的班级编号属性值,
    或者在班级关系(表)中添加一个学号属性,用来存储学生关系中的学号属性值。
  2. 联系单独对应一个关系
    单独创建一个关系(表)来存储联系,通俗讲就是创建一个中间表用来存储两个或多个表的主键。
    比如创建一个联系关系(表)来存储班级编号属性和学号属性,并选择一个其他关系的主键(班级编号学号都行)作为联系关系的主键。

3.2.2 一對多关系

班级关系和学生关系之间的联系是1:n
在这里插入图片描述
同样地也有两种关系模式:

  1. 联系不单独对应一个关系
    在这种1:n的关系模式中,一般都是将1端的主键加入n端关系中,即在学生关系(表)中增加一个班级属性,存储对应的班级属性值。

  2. 联系单独对应一个关系
    单独创建一个联系关系(表)来存储班级属性和学号属性,并选择n端的主键(学号)作为联系关系的主键。

多对多关系

学生关系和课程关系之间的联系是m:n
在这里插入图片描述
这种m:n的关系只有一种关系模式:

  • 联系单独对应一个关系
    在这里就是单独创建一个联系关系(表)来存储课程号属性和学号属性和成绩属性,联系关系的主键是由双方的主键共同组成联合主键。

参考资料:【E-R图到关系模式的转换方式,你get到了吗】 https://www.bilibili.com/video/BV1Ju411e7Dr/?share_source=copy_web&vd_source=e22a75a6781804ee25ce46a2afc235ce

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

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

相关文章

手把手教你如何提交App备案

手把手教你如何提交App备案 随着工信部出台了《工业和信息化部关于开展移动互联网应用程序备案工作的通知》对于我司所使用的到的移动应用APP就需要做app备案,今天用游戏app手把手教你如何提交App备案。 基本操作流程 运营、市场 提供需要备案的APP名称、主体、A…

市场是变化的?这种悖论fpmarkets澳福一秒打破

你是不是始终认为市场是经常变化的,其实这是不对的,这种认识fpmarkets澳福今天一秒打破。 市场经常变化吗?众多投资者无需过多思考,就认为答案是肯定的。因为无论是在互联网的哪个角落,都可以看到这样的信息。即使我们没有深入研…

mysql查询统计最近12个月的数据

项目场景: mysql查询统计最近12个月的数据,按每个月纵向展示,效果图 sql语句 注意:count( v.uuid ) 这里的是被统计那张表的id SELECT m.month,count( v.uuid ) AS total FROM (SELECT DATE_FORMAT(( CURDATE()), %Y-%m ) AS mon…

【实用】mysql配置 及将线上数据导入本地 问题解决及记录

[ERR] 1292 - Incorrect datetime value: ‘0000-00-0000:00:00‘ for column ‘BIRTH_DATE‘ at row 1 此问题是mysql当前配置不支持日期为空,或者为‘0000-00-0000:00:00‘得情况 1、直接在数据库执行 # 修改全局 set global.sql_mode ONLY_FULL_GROUP_BY,STR…

vue2生命周期

前言 vue的生命周期其实可以分为两块,一个是vue实例的生命周期,一个是组件的生命周期。 vue实例的生命周期方法共有4个:$mout,$forceUpdate,$nextTick,$destroy vue组件的生命周期钩子共有8个:beforeCreate,created,beforeMount,mounted,beforeUpdate, updated,beforeDestr…

Element UI的Tabs 标签页位置导航栏去除线条

在实际开发中,我们调整了相关样式,导致导航栏的相关样式跟随不上,如下图所示: 因为我跳转了前边文字的样式并以在导航栏添加了相关头像,导致右边的线条定位出现问题,我在想,要不我继续调整右边…

抖音汽车租赁小程序技术指南:开发高效便捷的租赁系统

为了更好地满足用户需求,抖音汽车租赁小程序成为一个备受关注的技术解决方案。本文将深入探讨开发高效便捷的汽车租赁系统所需的技术要点,为开发者提供一份实用的技术指南。 小程序架构选择 在搭建抖音汽车租赁小程序时,选择合适的小程序架构…

TIDB拓扑结构

TiDB Server:SQL层,负责接受客户端的连接,执行SQL解析和优化,最终生成分布式执行计划。TiDB Server为无状态的,可增加节点负载均衡。 PD (Placement Driver) Server:整个TiDB集群的元信息管理模块&#xf…

露营管理系统预约小程序效果如何

旅游经济已经复苏,并且市场规模增速加快,近一年来远途/周边游客户增多,不少旅游景区在节假日常常面对客流爆满现象。同时露营作为近几年突然火热的项目,其需求也是日渐上升。 然而在高需求的同时,我们也看到露营经营痛…

修改QtCreator/QDesigner的对象指示器高亮颜色

一、前言 QtCreator的设计中,高亮颜色太接近了,在左边点一个对象后,很难在右边对上,体验极差。 二、解决方案 创建一份style.qss,写入以下的样式: /* for QtCreator */ QDockWidget #ObjectInspector …

线上问题排查实例分析|关于 Redis 内存泄漏

Redis 作为高性能的 key-value 内存型数据库,普遍使用在对性能要求较高的系统中,同时也是滴滴内部的内存使用大户。本文从 KV 团队对线上 Redis 内存泄漏定位的时间线维度,简要介绍 Linux 上内存泄漏的问题定位思路和工具。 16:30 问题暴露 业…

快来考试拿证书!KubeSphere 个人技能专业考试认证上线啦!

以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加。Kubernetes 无疑已经成为容器编排的事实基础,而依托于 Kubernetes 开发的开源容器平台 KubeSphere 也收获了一众拥趸。…

群晖NAS搭建WebDav服务做文件共享,可随时随地远程访问

文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选框 2. 局域网测试WebDav服务2.1 下载RaiDrive客户端2.2 打开RaiDrive,设置界面语言可以选择中文2.3 点击添加按钮,新建虚拟驱动区2…

论文《Unsupervised Dialog Structure Learning》笔记:详解DD-VRNN

D-VRNN模型和DD-VRNN模型 总体架构 离散-可变循环变分自编码器(D-VRNN)和直接-离散-可变循环变分自编码器(DD-VRNN)概述。D-VRNN和DD-VRNN使用不同的先验分布来建模 z t z_t zt​之间的转换,如红色实线所示。 x t x_t…

【Effective C++】 (六) 继承与面向对象设计

【六】继承与面向对象设计 条款32 : 确保public继承是"is a"的关系 Item 32: Make sure public inheritance models “is-a”. C面向对象程序设计中,最重要的规则便是:public继承应当是"is-a"的关系。当Derived public继…

设计师不能忽视的几个宝藏图标设计工具

在这个快速变化的时代,设计师对创新和实用工具的需求越来越大。这就要求我们及时跟上潮流,不断探索和尝试最新、最有价值的图标设计工具。只有这样,我们才能在竞争激烈的设计市场中脱颖而出。以下是我们精心挑选的2024年值得一试的图标设计工…

Linux C++ 服务器端这条线怎么走?一年半能做出什么?

Linux C 服务器端这条线怎么走?一年半能做出什么? 既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。 最…

ffmpeg播放器实战(播放器流程)

1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg…

vue中怎么根据选择的名称 生成印章图片

项目中需要根据选择的印章名称&#xff0c;动态生成印章 &#xff0c;印章下方显示当前的日期 代码如下 <template><div><label for"name">选择名称&#xff1a;</label><select id"name" v-model"selectedName">…

virtualbox 扩展磁盘后在win10 虚拟机看不到新扩展的空间

造成标题中问题的原因是&#xff0c;扩展的是win10.vdi 的空间&#xff0c;虚拟机使用使用的下边那个以uuid命名的空间&#xff0c;将这个磁盘的虚拟分配空间也调整到150G . 然后在win10的磁盘管理里就可以看到新加的空间了。之后再点相应的盘进行扩展卷操作即可。