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

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

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

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


文章目录

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

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

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第1张图片
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第2张图片
并;重复的去掉,其余的东西都要捞过来

交:只要重复的
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第3张图片
差呢就是干掉公共部分

这些都不是重点
重点还是后面的
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第4张图片
笛卡尔积,没用的,啥玩意都要组装一遍
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第5张图片
实际操作中,要避免出现笛卡尔积
因为这种爆炸,也没有意义

浪费空间

n*m
爆炸的

投影是选列【column】
选择是选行【row】
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第6张图片
连接
等值连接
内连接,连接
这些都是数据库中的骚操作,我讲过很多,你看我数据库那些文章
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第7张图片

等值连接,是保证同一个字段相等时,可以连接勾出来,把其他的字段挂在屁股,同一个字段保留一条。
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第8张图片

自然连接
你可以仨字段,134列,或者sno,sname,age啥的三同时满足条件
好说
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第9张图片

规范化理论——函数依赖

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第10张图片
不用读上面这段
给定x,一定映射为一个唯一的y
这波就是x能确定y
f就是函数依赖
y依赖于函数f,有x确定y

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

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

反过来不行,姓名同名的话,不见得就是同一个学号。
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第11张图片
学号A,课程号B,姓名C
知道了学号,和课程号,一定可以确定姓名
或者只需要学号,就知道姓名
这种就是部分依赖

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

传递函数依赖
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第12张图片
A确定B
B确定C
则A确定了C
但是B不能回退

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

考试中的重点知识点哦
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第13张图片
计算机系,其实没必要存这么多,我们可以重新搞一个表
把系号,拿来做map表的话,我们少存很多信息,节约空间
这就是规范化理论的价值

逆规范化?加数据冗余

规范化理论的键

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第14张图片
唯一标识元组,单属性,多属性组合?超建??????????
啥玩意

不懂

超建可能存在冗余

候选键不冗余

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

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

主键,只有一个,它就是一个最终的核心代表
数据库中主键就是唯一的代表,虽然身份证号,学号都能唯一确定人,但是只能设定一个
外键,是别的关系的主键,外表,需要关联,我们需要找到同一个人,挂接的相关的属性
比如部门号
员工很多都可以属于外键中的同一个部门。
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第15张图片
你先学数据库,再学这个玩意,其实轻松一点哦。

如何求候选键——考点哦

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第16张图片
很难哦
你怎么识别它是唯一标识一个人的字段

图示法!最方便

看题

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第17张图片
有了依赖有向图
入度A1没有一个箭头指向它,尝试遍历这个图
必须每个点遍历一遍

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

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第18张图片
不是联通图??????????????
这怎么玩!!!!!!

有办法,当无法联通时,或者单独一个点没法遍历整个图时
需要找集合,就是那些入度我0的所有点,有了这些点,才能遍历完所有的点
这些点的集合,就是候选键
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第19张图片

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第20张图片
这种呢?????
B入度为0????找中间节点,既有入度,也有出度
A同时决定BC组合键
可以
B也可以
所以A或者B都行
这么骚吗
这就是软考的题目哦

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

必考知识点
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第21张图片
3NF爆炸了已经很好了

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

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

属性已经不能再拆分了

高职还能再拆软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第22张图片

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

消除非主属性,对候选键的部分依赖。
【注意区分哦】这是消除非主属性,对候选键的部分依赖
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第23张图片
学号,课程号,联合才能决定成绩
但是课程号,能决定学分,一门课就是一个学分
非主属性学分,没有完全依赖主键
懂了吧,不符合2NF

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

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

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

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

消除非主属性,对候选键的传递依赖
【注意区分哦】这还是消除非主属性,对候选键的传递依赖
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第24张图片
一个字段做主键,一定满足2范式,它不会有部分依赖。

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

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

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

消除主属性,对候选键的传递依赖
【注意区分哦】这还是消除主属性,对候选键的传递依赖
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第25张图片
这个其实别管了
我们了解一波
满足3NF即可

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

它出发能遍历所有点
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第26张图片
SJ,ST都是候选键
相当于S,T,J都是主属性

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

这个就了解了,不管

范式例题

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第27张图片
现在表4中有部门
表3需要加部门

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

规范化理论中的模式分解

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第28张图片
A–>B
B–C
拆分
AB
BC
保持了上面的依赖
这种就是保持函数的依赖分解
OK
相当于拆表格
R3:AC
A–>C,A不能直接确定C,这种是不行的
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第29张图片
压缩时也会用到

数据压缩,然后还原
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第30张图片
数据库学完了你才能玩这个东西
很多连接操作,我都会的
只要能连接2个表,算是无损

软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第31张图片
很好拆分
主键自己带自己的属性
连接外键搞定好了就好办了
美滋滋。
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解_第32张图片

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

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

大致明白

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


总结

提示:重要经验:

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

你可能感兴趣的:(国考,软件工程,数据挖掘,软考,软件工程,数据库,范式,函数依赖)