软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解

软考:中级软件设计师:关系代数

提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性

关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
(5)考网警的大佬,务必把软考:中级软件设计师的内容学好学透,学广,学多


文章目录

  • 软考:中级软件设计师:关系代数
    • @[TOC](文章目录)
  • 软考:中级软件设计师:关系代数
  • 规范化理论——函数依赖
  • 规范化理论它的价值和用途
  • 规范化理论的键
  • 如何求候选键——考点哦
  • 规范化里面的范式——年年必考
    • 第一范式1NF:属性不可分的院子值
    • 第二范式2NF:消除非主属性,对候选键的部分依赖
    • 第三范式3NF:消除非主属性,对候选键的传递依赖
    • 第BC范式BCNF:消除主属性,对候选键的传递依赖
  • 范式例题
  • 规范化理论中的模式分解
  • 总结

软考:中级软件设计师:关系代数

在这里插入图片描述
在这里插入图片描述
并;重复的去掉,其余的东西都要捞过来

交:只要重复的
在这里插入图片描述
差呢就是干掉公共部分

这些都不是重点
重点还是后面的
在这里插入图片描述
笛卡尔积,没用的,啥玩意都要组装一遍
在这里插入图片描述
实际操作中,要避免出现笛卡尔积
因为这种爆炸,也没有意义

浪费空间

n*m
爆炸的

投影是选列【column】
选择是选行【row】
在这里插入图片描述
连接
等值连接
内连接,连接
这些都是数据库中的骚操作,我讲过很多,你看我数据库那些文章
在这里插入图片描述

等值连接,是保证同一个字段相等时,可以连接勾出来,把其他的字段挂在屁股,同一个字段保留一条。
在这里插入图片描述

自然连接
你可以仨字段,134列,或者sno,sname,age啥的三同时满足条件
好说
在这里插入图片描述

规范化理论——函数依赖

在这里插入图片描述
不用读上面这段
给定x,一定映射为一个唯一的y
这波就是x能确定y
f就是函数依赖
y依赖于函数f,有x确定y

y不能确定x,因为多个x可以都得到y

学号,函数f,直接确定一个姓名
这是一对一的映射。
只要确定了学号,它一定对应唯一的名字,这是一个函数依赖。懂?

反过来不行,姓名同名的话,不见得就是同一个学号。
在这里插入图片描述
学号A,课程号B,姓名C
知道了学号,和课程号,一定可以确定姓名
或者只需要学号,就知道姓名
这种就是部分依赖

组件中的一部分,就可以唯一确定姓名

传递函数依赖
在这里插入图片描述
A确定B
B确定C
则A确定了C
但是B不能回退

规范化理论它的价值和用途

考试中的重点知识点哦
在这里插入图片描述
计算机系,其实没必要存这么多,我们可以重新搞一个表
把系号,拿来做map表的话,我们少存很多信息,节约空间
这就是规范化理论的价值

逆规范化?加数据冗余

规范化理论的键

在这里插入图片描述
唯一标识元组,单属性,多属性组合?超建??????????
啥玩意

不懂

超建可能存在冗余

候选键不冗余

比如,学号,姓名,性别
学号确定性别
学号+性别组合键确定性别

则学号+性别可以是超建
但是它不是候选键
因为它不是唯一确定
姓名,或者学号是候选键

主键,只有一个,它就是一个最终的核心代表
数据库中主键就是唯一的代表,虽然身份证号,学号都能唯一确定人,但是只能设定一个
外键,是别的关系的主键,外表,需要关联,我们需要找到同一个人,挂接的相关的属性
比如部门号
员工很多都可以属于外键中的同一个部门。
在这里插入图片描述
你先学数据库,再学这个玩意,其实轻松一点哦。

如何求候选键——考点哦

在这里插入图片描述
很难哦
你怎么识别它是唯一标识一个人的字段

图示法!最方便

看题

在这里插入图片描述
有了依赖有向图
入度A1没有一个箭头指向它,尝试遍历这个图
必须每个点遍历一遍

BFS可以遍历整个图,则,A1就是候选键。

在这里插入图片描述
不是联通图??????????????
这怎么玩!!!!!!

有办法,当无法联通时,或者单独一个点没法遍历整个图时
需要找集合,就是那些入度我0的所有点,有了这些点,才能遍历完所有的点
这些点的集合,就是候选键
在这里插入图片描述

在这里插入图片描述
这种呢?????
B入度为0????找中间节点,既有入度,也有出度
A同时决定BC组合键
可以
B也可以
所以A或者B都行
这么骚吗
这就是软考的题目哦

规范化里面的范式——年年必考

必考知识点
在这里插入图片描述
3NF爆炸了已经很好了

123依次变高。【之前考试我都不会】

第一范式1NF:属性不可分的院子值

属性已经不能再拆分了

高职还能再拆在这里插入图片描述

第二范式2NF:消除非主属性,对候选键的部分依赖

消除非主属性,对候选键的部分依赖。
【注意区分哦】这是消除非主属性,对候选键的部分依赖
在这里插入图片描述
学号,课程号,联合才能决定成绩
但是课程号,能决定学分,一门课就是一个学分
非主属性学分,没有完全依赖主键
懂了吧,不符合2NF

我们要把课程和学分固定再搞一个表
这样才能符合2范式

问题:
带来数据冗余,学分对应课程,压根不需要放这么多空间。
更新异常,更新学分时,需要全部更新
插入异常,新课程号来了,学分6分,现在你想录入学分
如果没人选课,则你6分的新课程,你没法插入啊
尴尬
删除异常
你删除学生,但是学分也被删除了,尴尬

解决方案,把学分单独列出一个表来。

第三范式3NF:消除非主属性,对候选键的传递依赖

消除非主属性,对候选键的传递依赖
【注意区分哦】这还是消除非主属性,对候选键的传递依赖
在这里插入图片描述
一个字段做主键,一定满足2范式,它不会有部分依赖。

问题:
数据冗余,计算机系,爆炸,楼号爆炸
更细姓名,爆炸
新加入学生也没法录入

解决方案
把dno后面仨字段重新独立出来,部门重新单独列一个表。

第BC范式BCNF:消除主属性,对候选键的传递依赖

消除主属性,对候选键的传递依赖
【注意区分哦】这还是消除主属性,对候选键的传递依赖
在这里插入图片描述
这个其实别管了
我们了解一波
满足3NF即可

主属性——属于候选键
非主属性——不是候选键。

它出发能遍历所有点
在这里插入图片描述
SJ,ST都是候选键
相当于S,T,J都是主属性

它满足3NF
所有函数依赖
左边时候选键——这样才是BCNF
但是现在SJ–>T,ST–>J,T–>J
T不是候选键,所以它不是BCNF

这个就了解了,不管

范式例题

在这里插入图片描述
现在表4中有部门
表3需要加部门

表4有月销售额
所以,需要把职工它销售了什么商品号,日期是啥,销量多少,就能算销售额了
A

规范化理论中的模式分解

在这里插入图片描述
A–>B
B–C
拆分
AB
BC
保持了上面的依赖
这种就是保持函数的依赖分解
OK
相当于拆表格
R3:AC
A–>C,A不能直接确定C,这种是不行的
在这里插入图片描述
压缩时也会用到

数据压缩,然后还原
在这里插入图片描述
数据库学完了你才能玩这个东西
很多连接操作,我都会的
只要能连接2个表,算是无损

在这里插入图片描述
很好拆分
主键自己带自己的属性
连接外键搞定好了就好办了
美滋滋。
在这里插入图片描述

分解出来的东西做交集
然后分别做差集

结果与交集是有依赖的,那就是无损

大致明白

表的某个键,一定与2个表都有挂接的


总结

提示:重要经验:

1)
2)
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R包开发1:RStudio 与 GitHub建立连接

目录 1.安装Git 2-配置Git(只需配置一次) 3-用SSH连接GitHub(只需配置一次) 4-创建Github远程仓库 5-克隆仓库到本地 目标:创建的R包,包含Git版本控制,并且能在远程Github仓库同步,相当于发布在Github。…

基于广义神经网络的网络入侵检测Matlab代码

1.案例背景 1.1 FCM 聚类算法 聚类方法是数据挖掘中经常使用的方法,它将物理的或抽象的对象分为几个种群,每个种群内部个体间具有较高的相似性,不同群体内部间个体相似性较低。模糊c均值聚类算法(Fuzzy C- Mean, FCM)是用隶属度确定每个元素属于某个类别程度的一种聚类算法&am…

卷积神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.10、⭐批量归一化5.10.1、理论部分5.10.2、代码部分 5.11、⭐残差网络(ResNet)5.11.1、理论部分5.11.2、代码部分 话题闲谈 5、卷积神经网络 5.10、⭐批量归一化 5.10.1、理论部分 批量归一化可以解决深层网络中梯度消失和…

深度学习经典检测方法的概述

深度学习经典的检测方法 two-stage(两阶段):Faster-rcnn Mask-Rcnn系列 两阶段(two-stage)是指先通过一个区域提取网络(region proposal network,RPN)生成候选框,再通过…

k8s 常用命令(四)

12、删除pod中的nginx服务及service [rootmaster ~]# kubectl delete deployment nginx -n kube-public [rootmaster ~]# kubectl delete svc -n kube-public nginx-service 13、查看endpoint的信息 [rootmaster ~]# kubectl get endpoints 14、修改/更新(镜像、…

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…

百度23Q2财报最新发布:营收利润加速增长,AI+生态战略渐显规模

百度集团-SW(9888.HK)Q2财报已于2023/08/22(美东)盘前发布,二季度百度集团整体收入实现341亿元,同比增长15%;归属百度的净利润(non-GAAP)达到80亿元,同比增长44%。营收和利润双双实现大幅增长,超市场预期。其中,百度核…

队列(Queue):先进先出的数据结构队列

栈与队列https://blog.csdn.net/qq_45467165/article/details/127958960?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127958960%22%2C%22source%22%3A%22qq_45467165%22%7D 队列(Queue)是一种常见的线…

CV:边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。

目录 1. 边缘检测(Prewitt) 2. 边缘检测(Sobel) 3. 边缘检测(Laplacian) 3. 边缘检测(Canny) 边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。 人在图像识别上具有难…

yolov3加上迁移学习和适度的数据增强形成的网络应用在输电线异物检测

Neural Detection of Foreign Objects for Transmission Lines in Power Systems Abstract. 输电线路为电能从一个地方输送到另一个地方提供了一条路径,确保输电线路的正常运行是向城市和企业供电的先决条件。主要威胁来自外来物,可能导致电力传输中断。…

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 模型…

亚马逊云科技 云技能孵化营 初识机器学习

目录 前言 一、课程介绍 二、什么是机器学习 三、机器学习算法进阶过程 四、亚马逊云科技能给我们什么 总结 前言 近期参加了“亚马逊云科技 云技能孵化营”,该孵化营的亚马逊云科技培训与认证团队为开发者准备了云从业者的精要知识及入门课程,帮助…

[PyTorch][chapter 51][Auto-Encoder -1]

目录: 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介: 自动编码器是一种神经网络,用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务: 1: 输入数据 …

一分钟学会用pygame制作棋盘背景

一分钟一个Pygame案例,这一集我们来学习一下如何生成一个视频中的棋盘背景效果,非常非常简单。 视频教程链接:https://www.bilibili.com/video/BV17G411d7Ah/ 当然我们这里是用来做页面的背景,你也可以拿来做别的效果&#xff0…

测试框架pytest教程(10)自定义命令行-pytest_addoption

pytest_addoption pytest_addoption是pytest插件系统中的一个钩子函数,用于向pytest添加自定义命令行选项。 在pytest中,可以使用命令行选项来控制测试的行为和配置。pytest_addoption钩子函数允许您在运行pytest时添加自定义的命令行选项,…

知识储备--基础算法篇-动态规划

1.前言 第一次接触动态规划,不知道具体什么意思,做了题才发现动态规划就是把大问题变成小问题,并解决了小问题重复计算的方法称为动态规划。比如上楼梯,一次上一阶或二阶,求有多少种算法,就可以拆成最后一…

使用Pytorch和OpenCV实现视频人脸替换

“DeepFaceLab”项目已经发布了很长时间了,作为研究的目的,本文将介绍他的原理,并使用Pytorch和OpenCV创建一个简化版本。 本文将分成3个部分,第一部分从两个视频中提取人脸并构建标准人脸数据集。第二部分使用数据集与神经网络一…

【C++】stack和queue

stack和queue 1. stack1.1 简单了解stack1.2 stack的常见接口1.3 练习1.4 模拟实现stack 2. queue2.1 简单了解queue2.2 queue的常见接口2.3 练习2.4 模拟实现queue 3. deque(了解)4. priority_queue4.1 优先级队列的介绍4.2 priority_queue的常见接口4.…

【80天学习完《深入理解计算机系统》】第十天 3.3 条件码寄存器【CF ZF SF OF】【set】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

Python Scrapy网络爬虫框架从入门到实战

Python Scrapy是一个强大的网络爬虫框架,它提供了丰富的功能和灵活的扩展性,使得爬取网页数据变得简单高效。本文将介绍Scrapy框架的基本概念、用法和实际案例,帮助你快速上手和应用Scrapy进行数据抓取。 Scrapy是一个基于Python的开源网络爬…