数据库系统概念(第七周 第二堂)(E-R模型转关系模式)

前言

前一堂课我们深入研究了E-R模型的画法和要点,学习E-R模型肯定是为了给数据库表格设计提供帮助。数据库表格设计就是关系模式设计,数据库表就是关系模式的实例化。所以本堂课,我们来看E-R模型如何转为关系模式。

转化原则 

转化步骤

转化原则

关系(关系模式/表格架构)=实体转关系+联系转关系(两种表格类型)

一、实体--->关系

1、强实体集:实体集名称就是表格名称;实体集属性就是表格列;主码和实体集相同

2、弱实体集:实体集名称就是表格名称;实体集属性+依赖强实体集主键作为表格列;主码为弱实体集部分码+强实体集主码

二、多样实体处理 

上述实体--->关系的处理原则在这里仍然适用,但是在遇到存在复合属性/多值属性的实体时。我们需要一些特殊的处理:

1、多值属性:创建新的关系;关系属性为所在实体主码+多值属性;主码为所在实体主码+多值属性

2、复合属性:复合属性最底层的所有属性就是关系模式的列

例如:

 

小练习:

三、联系--->关系

 1、联系转关系:每一个联系转为一张表也就是一个关系;表的属性为参与联系实体的主码+联系自身的属性

 2、特殊情况:a.如果在不同的实体集中出现了主码属性名称不唯一的情况,应该以实体的名字加上属性的名字形成唯一的属性名;b.如果一个实体集不止一次地参加了某个联系集,则角色名可代替实体集的名字形成唯一的属性名

合并原则

在把联系和实体集都转化为关系之后,我们需要利用合并原则把关系进一步简化。

合并只发生在联系的关系和实体集的关系之间

二元m:1联系(多对一联系)

原则:在二元多对一联系中,联系转化的表可以和“多端”实体转化成的表进行合并

示例:

二元1:1联系(一对一联系)

原则:联系转化的表可以与任一端实体转化成的表进行合并;二元一对一联系不能导致相关实体转化成的表合并

示例:

二元m:n联系(多对多联系) 

原则:将联系定义为新的关系,这个关系不能与实体转化成的关系进行合并

示例:

实体集内部联系

原则:只有一对多、一对一的联系能够进行合并;合并基本原则和前面的二元联系都是相同的;合并后属性的名称可能发生变化

示例:

多元联系 

原则:联系转化的表和实体转化的表不能进行合并

示例:

合并原则小练习

题目一

本题中有三个实体集,两个联系,所以一开始可以写出五个关系;讲授联系是多对多的联系,所以不能合并;上课联系是多元联系,所以不能合并。 

题目二

由于有两个联系都叫管理,本题将职工和职工间的联系“联系”改名为“领导”,该联系是能够合并到职工表中的 

总结

本文的所有知识点、图片均来自《数据库系统概念》(黑宝书)、山东大学李晖老师PPT。不可用于商业用途转发。

本篇已经码了三个多小时了,算是简单入门E-R模型转关系模式的文章,下节课第八周第一堂我们来深入讲讲E-R模型的拓展特性,以及如何通过E-R模型方法来设计数据库

如果能帮助到大家,大家可以点点赞、收收藏呀~ 

 

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

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

相关文章

深入理解指针(三)

目录 1.字符指针变量 2. 数组指针变量 2.1 数组指针变量是什么? 2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质 4. 函数指针变量 4.1 函数指针变量的创建 4.2 函数指针变量的使用 4.3 两段有趣的代码 4.3.1 typedef关键字 5. 函数指针数组 6. 转移表 1.字符指…

springboot与flowable(7):流程变量

一、启动时添加流程变量 拿第一个流程图举例,创建一个新的流程定义。 Testvoid contextLoads() {DeploymentBuilder deployment repositoryService.createDeployment();deployment.addClasspathResource("process01/FirstFlow.bpmn20.xml");deployment.…

【枚举】564. 寻找最近的回文数

本文涉及知识点 枚举 LeetCode564. 寻找最近的回文数 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: n “123”…

性能测试包括哪些方面?

性能测试、通过自动化测试工具模拟多种正常,峰值,以及异常的负载情况下对系统各项性能指标进行的测试。 负载测试、压力测试、容量测试都属于性能测试。 性能测试指标是衡量系统性能的评价标准 主要关注一些响应时间、并发用户/并发、点击率、吞吐量、…

【CDN】逆天 CDN !BootCDN 向 JS 文件中植入恶意代码

今天在调试代码,突然控制台出现了非常多报错。 这非常可疑,报错指向的域名也证实了这一点。 因为我的 HTML 中只有一个外部开源库(qrcode.min.js),因此只有可能是它出现了问题。 我翻看了请求记录,发现这…

房地产房型展示信息小程序的内容是什么

地产业规模之大且品牌众多,还有房屋租赁、中介等,无论开发商公司还是衍生行业商家都需要多渠道宣传品牌和客户触达沟通转化,除了线下各种传单,线上也是主要场景,通过各种连接来达到相应目标。 也因此需符合平台生态开…

【菜狗学前端】uniapp(vue3|微信小程序)实现外卖点餐的左右联动功能

记录,避免之后忘记...... 一、目的:实现左右联动 右->左 滚动(上拉/下拉)右侧,左侧对应品类选中左->右 点击左侧品类,右侧显示对应品类 二、实现右->左 滚动(上拉/下拉)右…

windows下的eclipse按Ctrl+Shift+F格式化代码不起作用的处理

1、先上张图: 上面Format:CtrlShiftF,按了以后不起作用。 2、这个快捷键不起作用的原因:可能是快捷键冲突了。 机器上装了Sougou输入法,将输入法切换为英文模式是起作用的。 那么应该就是这个原因了。 3、解决方法…

Golang——gRPC认证和拦截器

一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包,用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现,并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件: openssl:多用途的命…

VMware软件的安装与安装Win10系统

上一篇写了(虚拟机)VMware软件的安装及Ubuntu系统安装,这次续上部分,安装完Ubuntu系统后,又安装了win10,也记录一下。 事前准备好win10镜像文件,可在微软官网下载 入口地址:软件下…

flask部署mtcnn

目录 打印人脸检测信息 输出结果 保存检测结果 浏览器查看nginx(nginx配置这里就不多介绍了) url图片检测人脸 输出结果 Flask hello-world Flaskmtcnn python调flaskmtcnn 打印人脸检测信息 import cv2 from mtcnn.mtcnn import MTCNNimg cv2.c…

比特币全节点搭建

比特币全节点搭建 参考: https://www.cnblogs.com/elvi/p/10203927.html

基于单片机的太阳能无线 LED 灯设计

摘 要 : 文章设计一款太阳能 LED 灯 , 经过太阳能给锂电池充电 , 利用 51 单片机通过检测电路对整个系统施行管理和监控, 可以使用手机和 WIFI 作为通信工具 , 利用光敏电阻检测光照 , 进而控制灯的亮…

全面解析OpenStack架构:掌握云计算核心组件!

Web Frontends Horizon 技术原理:Horizon是OpenStack的基于Web的用户界面,利用Django框架开发,提供用户友好的界面来管理和使用OpenStack资源。应用场景:用于管理虚拟机、存储、网络等资源。举例:管理员通过Horizon界面…

【微信小程序开发实战项目】——如何去申请腾讯地图账号和在微信公众平台,配置request路径和添加地图插件

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

墨香戏韵,重塑经典

创意名称 墨香戏韵,重塑经典|基于AIGC对戏剧创新 创意概述 京剧作为中国传统戏曲之一,源远流长,承载了丰富的文化内涵和艺术特色。水墨画则是中国传统绘画的瑰宝,以其独特的墨色表达和极简的形式赢得了广泛的赞誉。我们的项目将…

Cheat Engine 学习

文章目录 Exact Value scanning任务实现步骤Unknown initial value任务实现步骤原理说明Floating points任务实现步骤原理说明Code finder任务实现步骤原理说明Pointers任务实现步骤原理说明Change Pointer 操作:Active(活跃状态)和数值修改:Code Injection任务概述实现步骤…

vue3:实现图片放大浏览功能组件

两种实现方式&#xff1a; 1.将原本的盒子与img标签放大至全屏浏览。 2.新建一个div和img标签进行全屏浏览。这样不会改变布局。 第一种&#xff1a; 效果&#xff1a; 组件代码&#xff1a; <template><div :class"isScreen ? fullImg : norImg">…

[Python学习篇] Python字符串

字符串是 Python 中最常用的数据类型&#xff0c;一般使用单引号或引号来创建字符串 语法&#xff1a; 字符串变量名A 字符串变量值A 字符串变量名B "字符串变量值B" 示例&#xff1a; a Hello A print(a) b "Hello B" print(b) 字符串特征 一对引号字…