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

【数据库设计】逻辑结构设计

E-R实体集的转换

概念结构设计之后就是对E-R图进行逻辑结构设计:即将E-R图转化成关系的过程。逻辑结构设计主要用于数据库管理系统上,为了让数据在计算机系统中更好地表示。

此设计过程用到的数据模型有:除了前面讲过的关系模型还有层次模型、网状模型;和属于基于对象的的逻辑模型的E-R模型不同,它们都属于基于记录的逻辑模型。

在转换过程中有些名词需要做一些“变更”:

实体(实体集)

实体(集)的属性

实体(集)的标识符

实体(集)之间的联系

关系模式(表头)

属性(列名)

键(主键、外键、复合键等)

关系表间的参照完整性约束

示例:

E-R联系的转换

根据E-R的联系类型:一元、二元、三元,需要分类进行转换。其中一元和二元的转换是类似的,而三元需要先变成二元联系而后根据二元的转换规则进行。故只进行二元联系转换的介绍:

注:在此之前,我们已经进行了第一步——E-R实体集的转换。

二元联系包括包括1:1、1:n(或n:1)、n:n。

二元联系转换

1:1联系转换

只需要在两个中任选一个关系加入另一个关系中的主键,并且加上该联系自带有的属性。比如:

假设有两个关系:

Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp)。

那么转换之后:

Student(Sno, Sname, Sgender, Sage, Sdept, StuCardID)、StuCard(StuCardID, Cardbalance, CardExp)

或者是:

Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp, Sno )

什么叫该联系自带有的属性?不是指原有的关系中就有的属性,而是关系之间的联系可能产生的新属性。比如这两个表之间的联系是“持有”,但这个并没有额外的属性产生,但也能实现转换。

1:n(或n:1)联系的转换

就是在n端加入1端的主键,并且加上该联系自带有的属性。

假如有两个关系:学校和学生的关系是1:n

Student(Sno, Sname, Sgender, Sage, Sdept)、School(SchoolID, SchoolName, SchoolLocation)

转换之后:

Student(Sno, Sname, Sgender, Sage, Sdept、SchoolID)、School(SchoolID, SchoolName, SchoolLocation)

倘若是1端加入n端的主键,将会出现1端(比如学校ID)重复冗余的情况。

这里的联系是“录取”,学校录取学生,同样地,这个联系也没有额外的属性产生。

n:m联系的转换

通过新建一个关系模式,并且这个关系模式的属性由原来两个关系模式的主键和它们的联系自带有属性构成。

假如有两个关系,分别是学生表和选课表,而转换之后就会是一个新的关系叫成绩表,由于原有的两个关系之间的联系是“选课”,即学生选课。则该联系所带有的属性可能是“学生的课程成绩”。那么就可以有如下的转换过程:

原先的两个关系:

Student(Sno, Sname, Sgender, Sage, Sdept)、Course(Cno, Cname, Cpno, Ccredit)

转换结果(新的关系模式):

SC(Sno, Cno, Grade)

其实上面的1:1和n:1类型都能使用类似于第三种的方式进行:即建立一个新的关系。

比如1:1

新的是Hold(Sno, StuCardID)此外还有Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp)

比如1:n

新的是Admission(Sno, SchoolID)此外还有Student(Sno, Sname, Sgender, Sage, Sdept)、School(SchoolID, SchoolName, SchoolLocation)

三元联系转换

E-R图可能是这样的:

同样地,我们先按照概念结构设计的步骤先完成到二元的转换,即生成一个新的实体集叫“修读计划”,如图所示。那么转换过程就是:

原先:

学生关系 Student(Sno, Sname, Sgender, Sage, Sdept)

课程关系 Course(Cno, Cname, Cpno, Ccredit)

学校关系 School(SchoolID, SchoolName, SchoolLocation)

先变成二元联系:

新的实体集:修读计划关系 Plan(PlanID, PlanName)

转成二元关系:遵循“包含原关系的主键和联系自带有属性”

包含关系 Contain(PlanID, Cno),

制定关系 MakePlan(PlanID, SchoolID)

选择关系 SelectPlan(PlanID, Sno)

相关文章:

【数据库设计】逻辑结构设计

E-R实体集的转换 概念结构设计之后就是对E-R图进行逻辑结构设计:即将E-R图转化成关系的过程。逻辑结构设计主要用于数据库管理系统上,为了让数据在计算机系统中更好地表示。 此设计过程用到的数据模型有:除了前面讲过的关系模型还有层次模型…...

uni-app之旅-day07-购物车页面

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 9.1 商品列表区域9.1.1 渲染购物车商品列表的标题区域9.1.2 渲染商品列表区域的基本结构9.1.3 为 my-goods 组件封装 radio 勾选状态9.1.4 为 my-goods 组件封装 ra…...

【机器学习】并行计算(parallel computation)Part2

Asynchronous Parallel Gradient Descent Using Parameter Server 用Parameter Server实现异步并行梯度下降 Parameter Server这种编程模型可以实现异步并行梯度下降,架构采用的是Client-Server,通信方式是Message-passing,同步方式是异步的…...

AI学习指南深度学习篇-迁移学习的应用场景

AI学习指南深度学习篇 - 迁移学习的应用场景 引言 迁移学习(Transfer Learning)是一种强有力的技术,尤其在深度学习领域的应用越来越广泛。通过在一个领域学到的知识来帮助另一个领域的学习,迁移学习尤其适用于数据稀缺的场景。…...

【web前端设计】jquery图标动画特效

学习目标 学习web前端设计技术(HTML、css、JavaScript、jQuery等),综合运用技术,将其与HTML元素结合,设计样式、监听事件、添加动画等,给用户呈现出更好的视觉交互效果。本文主要学习分页按钮自动放大、元…...

Linux——用户/用户组

创建用户组groupadd groupadd 用户组 删除用户组groupdel groupdel 用户组 创建用户useradd useradd 用户名 - g 用户组 useradd 用户名 -d HOME路径 删除用户userdel userdel 用户 userdel -r 用户 (删除用户的 HOME 目录,不使用 -r &#xff0…...

HDFS上传下载命令

hadoop <组件> -<操作> /path1/test.txt / path2 上传&#xff1a;hadoop fs -put /path1/test.txt / path2 下载&#xff1a;hadoop fs -get /path2/test.txt / path3 查看目录&#xff1a;hadoop fs -ls / 查看文件&#xff1a;hadoop fs -cat / path…...

Nodejs使用http模块创建Web服务器接收解析RFID读卡器刷卡数据

本示例使用设备&#xff1a; https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1buHvw58&ftt&id22173428704 Javascript源码 //引用http模块创建web服务器&#xff0c;监听指定的端口获取以GET、POST、JSON等方式上传的数据&#xff0c;并回应驱动读卡…...

基于python的《C语言程序设计》课程成绩分析

作者:Svan.声明&#xff1a;未经本人允许&#xff0c;不得对本文中的任何内容、数据进行转载&#xff0c;本人&#xff08;作者&#xff09;已经对本文内容申请撰写了论文&#xff0c;随意转载使用本文任何内容的&#xff0c;要追究其法律责任&#xff01;&#xff01;&#xf…...

@Component 和 @Bean 的区别与联系

相同点&#xff1a; Component 和 Bean 是两种使用注解来定义bean的方式。 Component和Bean的目的是一样的&#xff0c;都是注册bean到Spring容器中。 两者都可以通过Autowired装配 不同点&#xff1a; Component 和 它的子类型&#xff08;Controller, Service and Reposit…...

高手炒现货黄金短线的方法

现货黄金短线交易的精髓在于“计划你的交易”。短线交易不是临时起意的赌博&#xff0c;也不是盘口随意的追涨杀跌&#xff0c;而是所有因素分析以后的结果。新手进行短线操作容易流为频繁的随意操作&#xff0c;导致成功率不高。但当投资者有了准备&#xff0c;短线交易就再也…...

后端:唯一ID有哪些生成方式

文章目录 在后端开发中的ID生成策略1. 数字型 ID特点&#xff1a;优点&#xff1a;缺点&#xff1a;例子&#xff1a;常见用法&#xff1a; 2. UUID&#xff08;通用唯一标识符&#xff09;特点&#xff1a;优点&#xff1a;缺点&#xff1a;例子&#xff1a;常见用法&#xff…...

LabVIEW提高开发效率技巧----高精度延时

在LabVIEW开发中&#xff0c;时间控制是许多应用中的关键环节&#xff0c;尤其是高精度应用中&#xff0c;时钟漂移会严重影响程序的准确性。为此&#xff0c;使用Wait Until Next ms Multiple来代替简单的Wait (ms)&#xff0c;可以显著减少时钟漂移&#xff0c;确保高精度延时…...

<Link><Link> 和 <a> </a>标签的区别

1. Link (React Router)&#xff1a; 作用: Link 是 react-router-dom 提供的组件&#xff0c;用于在 React 应用中创建前端路由跳转。它不会导致页面重新加载。优点: 无刷新跳转: 使用 Link 进行导航时&#xff0c;React 的路由器会捕获并处理链接&#xff0c;避免浏览器的全…...

靶场战神为何会陨落?

我从第一个SQL注入漏洞原理学起,从sql-libas到DVWA,到pikachu再到breach系列,DC系列靶场,再到实战挖洞,发现靶场与实战的区别是极其大的。 我个人觉得在这种web环境下,难的不是怎么测一个漏洞点,而是怎么找一个漏洞点。靶场与实战最大的区别在于你不知道这个地方到底有没有漏洞…...

rpm 命令

rpm&#xff08;Red Hat Package Manager&#xff09;是 Red Hat Linux 及其衍生发行版&#xff08;如 CentOS、Fedora&#xff09;中用于管理软件包的系统。它允许用户安装、卸载、升级、查询和验证软件包。 一、安装软件包 &#xff08;1&#xff09;安装一个 RPM 软件包&a…...

录微课专用提词器,不会被录进视频中的提词器,还能显示PPT中备注的内容

不坑提词器&#xff0c;全称&#xff1a;不坑隐形提词器。是一款能够在截图、录屏、直播过程中隐藏界面的提词器软件。 系统要求&#xff1a;Win10 1024 以上&#xff08;特别提醒&#xff1a;Win7状态下不可隐身&#xff09; ⏬下载 提词器默认放在不坑盒子的安装目录下&…...

Ansible概述

目录 一、ansible简介 二、absible的特点 三、ansible的工作原理以及流程 四、ansible环境安装部署 五、ansible命令行模块 六、inventory 主机清单 一、ansible简介 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。…...

NTC 温度电阻计算方式

100K温度值列表 https://wenku.baidu.com/view/59565cba1a37f111f1855b38?aggId989bc39968d97f192279168884868762cbaebb44&frcatalogMain_text_ernie_recall_feed_index%3Awk_recommend_main1&wkts1729568234531&bdQuery100K%E6%B8%A9%E5%BA%A6%E7%94%B5%E9%98%B…...

Qt中自定义qDebug打印信息的宏(文件名,行数,函数名,日期,时间等前缀)并取消打印

使用qDebug()打印信息时&#xff0c;默认打印"<<"符号后面的信息。 通过自定义宏&#xff0c;可以额外打印文件名&#xff0c;行数&#xff0c;函数&#xff0c;日期、时间等前缀&#xff0c;方便快速定位调式信息的位置。 同时&#xff0c;可以定义宏取消打…...

【基于docker的深度学习训练环境】关键步骤记录

最近给公司搭建了一个小型的深度学习环境&#xff0c;实现了多人通过SSH对GPU资源的利用&#xff0c;下面对一些关键架构和易用性部分进行记录。 一、整体软硬件框架 1、硬件配置&#xff0c;采用的双GPU的方案&#xff0c;两块消费级显卡。 2、应用层架构 宿主机系统为ubunt…...

管理、情商、格局-冯唐讲资质通鉴-笔记

一、CEO职责 制定制度、维护制度&#xff0c;制度即礼&#xff0c;礼崩乐坏&#xff0c;万万不能制定战略找钱、找人 二、汇报线 不能向上越级汇报不能向上越级管理 三、领导 领导出错的情况&#xff0c;依然要服从领导的安排&#xff0c;领导的错轮不到我们来处理干预&am…...

摇人摇人, JD内推岗位(社招+校招)

摇人摇人, 有找工作的家人们看过来啊~ 虚位以待, 快到碗里来 算法开发工程师岗 京东云 北京|T7, 5-10年 岗位职责&#xff1a; 参与基于RAG知识库平台和ChatBI产品打造和商业化落地&#xff0c;进行相关技术&#xff1a;包括OCR、文档拆分、意图理解、多轮对话、NL2SQL、Embed…...

振弦式传感器在高边坡监测中发挥哪些优势?

振弦式传感器在高边坡监测中发挥哪些优势?在工程建设与地质灾害防治领域&#xff0c;高边坡监测至关重要。高边坡的稳定性直接关系到工程的安全以及周边环境和人员的生命财产安全。为了实现对高边坡的有效监测&#xff0c;各种先进的传感器技术被广泛应用&#xff0c;其中振弦…...

计算机网络基础进阶

三次握手四次挥手 三次握手 1------建立连接----------------------2 ACK1&#xff0c;seq0 2------传输数据&#xff0c;建立连接---------1 1------传输数据&#xff0c;建立连接---------2 三次握手用于建立TCP连接&#xff0c;确保通信双方都准备好进行数据传输。整个…...

什么是“钻石继承问题”

钻石继承问题&#xff08;Diamond Inheritance Problem&#xff09; 主要是指在多重继承中&#xff0c;由于继承关系的复杂性&#xff0c;子类可能通过多个路径继承到相同的基类&#xff0c;从而导致成员的多份副本或者方法调用的二义性。 C 通过 虚拟继承 来解决这个问题&…...

iOS 回到主线程刷新UI

在iOS 里面,项目打开就会运行一个主线程,所有的UI都在主线程里进行.其他网络请求或者耗时操作理论上也可以在主线程运行,但是如果太耗时,那么就会影响主线程其他UI.所以需要开字线程来进行耗时操作,子线程进行完耗时操作之后,如果项目需求有需要刷新UI,或者改变UI,一定得回到主…...

Spring Data 技术详解与最佳实践

引言 Spring Data 是 Spring 框架的一个模块&#xff0c;旨在简化数据访问层的开发。它提供了一种通用的方法来访问各种数据存储&#xff0c;包括关系型数据库、NoSQL 数据库、搜索引擎等。Spring Data 不仅简化了数据访问代码的编写&#xff0c;还提供了一系列强大的特性&…...

ubuntu下安装图片编辑工具shutter

ubuntu自带的截屏工具能够截图指定区域的图片&#xff0c;但是通常情况下&#xff0c;我们还需要对图片做一些编辑例如&#xff0c;下划线&#xff0c;方框标识&#xff0c;添加文本描述等&#xff0c;这时就需要强大的shutter软件了。 有人说直接在终端直接执行命令安装即可&…...

代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II

目录 62. 不同路径 63. 不同路径 II 62. 不同路径 题目 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到…...