当前位置: 首页 > 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;可以定义宏取消打…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...