🌟博主:命运之光 🦄专栏:离散数学考前复习(知识点+题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 🦚专栏:数据库系统概述
前言: 身为大学生考前复习一定十分痛苦,你有没有过以下这些经历: 1.啊明天要考试了,关键这知识点它不进脑子啊。 2.小朋友,你是否有很多问号,为什么,快考试了你还啥也不会。 3.你们复习的时候,也是学着学着,手机就自动跳到手里了吗? 4.真正的大学生敢于直面崭新的课本。 5.睡也不敢睡,学也不想学。 6.监考老师+地理位置+附近战友友善度=考试分数。 🍓🍓当然以上都是开些玩笑,看看下面这些题,它可以让零基础未开始学习的你以最快的速度突击期末考试,知识点+练习题,突击起来效率嘎嘎快。
本章内容:规范化、数据依赖的公里系统、模式分解
本章主要考点:函数依赖、多值依赖的概念、■范式判定、Armstrong公理系统
A.关系规范化理论
B.关系运算理论
C.关系代数理论
D.数理逻辑
A.数据的不一致性
B.结构不合理
C.冗余度大
D.数据丢失
A.它一定消除了插入和删除异常
B.仍存在一定的插入和删除异常
C.一定属于BCNF D.A和B都是
A.1NF
B.2NF
C.3NF
D.BCNF
A.2NF
B.3NF
C.4NF
D.BCNF
部门(部门号,部门名,部门成员,部门总经理)
A.部门总经理
B.部门成员
C.部门名
D.部门号
函数依赖的定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。即只要 X 上的属性值相等,Y 上的值一定相等。
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y ⊆ X,则称X→Y是平凡的函数依赖
在关系模式R(U)中,对于U的子集X和Y,
若X→Y,但Y ⊈ X,则称X→Y是平凡的函数依赖
非平凡函数依赖: (Sno, Cno) → Grade
平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
部分函数依赖:若X→Y,但Y不完全依赖于X,则称Y对X部分函数依赖。记作
完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有
, 则称Y对X完全函数依赖。记作
U ={Sno, Sdept, Mname, Cno, Grade }
(Sno,Cno) →Grade是完全函数依赖,
(Sno,Cno)→Sdept是部分函数依赖
因为Sno →Sdept成立,且Sno是(Sno,Sanme)的真子集
●传递函数依赖:在R(U)中,如果X→Y,(Y X) ,YX, Y→Z,Z不属于Y, 则称Z对X传递函数依赖。
Sno → Sdept,Sdept → Mname
Mname传递函数依赖于Sno
第一范式(1NF):若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。
第二范式(2NF):若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式 R∈2NF 。(即 1NF 消除了非主属性对码的部分函数依赖则成为2NF)。
例:关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade)
Sloc为学生住处,假设每个系的学生住在同一个地方
函数依赖包括
(Sno, Cno) Grade
Sno → Sdept
(Sno, Cno) Sdept
Sno → Sloc
(Sno, Cno) Sloc
Sdept → Sloc
(虚线表示部分函数依赖)
由于非主属性Sdept和Sloc并不完全函数依赖于码(Sno, Cno),所以不是2NF解决方法:
S-L-C分解为两个关系模式,以消除这些部分函数依赖,这就属于2NF了
SC(Sno, Cno, Grade)
S-L(Sno, Sdept, Sloc)
第三范式(3NF):关系模式 R<U,F> 中若不存在这样的码 X、属性组 Y 及非主属性 Z(Z 不是Y的子集)使得
成立,则称(每一个非主属性既不部分依赖于码有人不传递依赖于码)
解决方法:采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:
S-D(Sno, Sdept)码为Sno
D-L(Sdept,Sloc) 码为Sdept
BCNF:关系模式 R<U,F>∈1NF 。若 X→Y 且 Y 不是 X 的子集时,X必含有码,则
R<U,F>∈BCNF(即每一个决定属性因素都包含码)
BCNF性质:若R∈BCNF
①所有非主属性对每一个码都是完全函数依赖
②所有的主属性对每一个不包含它的码,也是完全函数依赖
③没有任何属性完全函数依赖于非码的任何一组属性
例:在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称函数依赖:(S,J)→T,(S,T)→J,T→J (S,J)和(S,T)都是候选码
STJ∈3NF (S,J)和(S,T)都可以作为候选码,S、T、J都是主属性,没有任何非主属性对码传递依赖或部分依赖。但STJ不是BCNF,因为T是决定因素,T不包含码
解决方法:将STJ分解为二个关系模式: ST(S,T) ∈ BCNF, TJ(T,J)∈ BCNF
课程名 | 教师名 | 教师地址 |
---|---|---|
C1 | 刘爽英 | D1 |
C2 | 乔志伟 | D2 |
C3 | 于得水 | D2 |
C4 | 井超 | D2 |
(1)它为第几范式? 为什么?
(2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的?
(3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题?
解: (1)它是2NF。 因为R的候选关键字为“课程名”。依赖关系: 课程名→教师名,教师名 → 课程名,教师名→教师地址,所以课程名→教师地址。即存在非主属性“教师地址”对候选关键字课程名的传递函数,因此R不是3NF。但:因为不存在非主属性对候选关键字的部分函数依赖,所以R是2NF。
(2)存在。当删除某门课程时,会删除不该删除的教师的有关信息。
(3)分解为高一级范式如图所示。
R1(课程名,教师名)
课程号 | 教师名 |
---|---|
C1 | 刘爽英 |
C2 | 乔志伟 |
C3 | 于得水 |
C4 | 井超 |
R2(教师名,教师地址)
教师名 | 教师地址 |
---|---|
刘爽英 | D1 |
乔志伟 | D2 |
于得水 | D2 |
井超 | D2 |
分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。
❤️❤️一路看到这里,相信你的数据库考试应该已经增加了几分胜算💪🏻
❤️❤️如果喜欢本文请不吝点赞👍🏻,如果爱上本文请留下评论~
❤️❤️如果既不想点赞又不想评论…那么/(ㄒoㄒ)/~~还是祝愿你考试顺利啦~
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout<<"对编程,算法,人工智能,机器学习,深度学习,";
cout<<"图像处理,大数据挖掘,web前端网页设计等等感兴趣的同学";
cout<<"可以关注命运之光,命运之光正在努力学习,";
cout<<"不断的提升自己的专业能力,耗油跟,加加布鲁根!"<<endl;
return 0;
}
再接再厉,继续加油!