软考:中级软件设计师:关系代数
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
(5)考网警的大佬,务必把软考:中级软件设计师的内容学好学透,学广,学多
文章目录
- 软考:中级软件设计师:关系代数
- @[TOC](文章目录)
- 软考:中级软件设计师:关系代数
- 规范化理论——函数依赖
- 规范化理论它的价值和用途
- 规范化理论的键
- 如何求候选键——考点哦
- 规范化里面的范式——年年必考
- 第一范式1NF:属性不可分的院子值
- 第二范式2NF:消除非主属性,对候选键的部分依赖
- 第三范式3NF:消除非主属性,对候选键的传递依赖
- 第BC范式BCNF:消除主属性,对候选键的传递依赖
- 范式例题
- 规范化理论中的模式分解
- 总结
文章目录
- 软考:中级软件设计师:关系代数
- @[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,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。