最新要闻
- 别乱买!三大要素教你如何选对吸尘器
- 环球看点!一次看个够!《原子之心》双子舞伶所有场景合集
- 世界时讯:微软为Chrome官网注入大幅广告:只为将用户留在Edge
- 天天热资讯!微软收购动视暴雪获新盟友!NVIDIA态度转变签署10年游戏协议
- 每日播报!若若_关于若若的简介
- 焦点速读:长沙凌晨1点马路人流量惊人 像在倒时差:网友称想去打卡 当地人回应
- 全球最资讯丨8GB来了!iPhone 15内存大升级:苹果区别对待 想要花万元买Pro版
- 环球热头条丨荣耀Magic5 Lite获DXO电池性能第一名 续航可超三天
- 雷克萨斯、英菲尼迪、凯迪拉克等豪车中国市场暴跌:国人不当冤大头
- 热文:OPPO打造!唯一配备潜望长焦的天玑旗舰来了
- 天天短讯!死磕RTX 40!AMD RX 7600/7700/7800齐曝光:据说苏妈定价有诚意
- 重现《放羊的星星》!林志颖特斯拉车祸后复出晒照 事故原因成谜 是踩错刹车?
- 天天百事通!今日成都到康定怎么坐车_成都到康定
- 亮机卡也有春天 锐龙7000核显超频到3.1GHz 游戏性能猛增40%
- 当前要闻:困扰十几亿人!脚趾甲咋会向肉里长?
- 世界焦点!TCL发布超薄四开门冰箱T9:0cm无缝式嵌入 456L仅3399元
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
视焦点讯!(数据库系统概论|王珊)第六章关系数据理论-第二节:规范化
- pdf下载:密码7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
- 一:函数依赖
- (1)函数依赖
- (2)平凡函数依赖与非平凡函数依赖
- (3)完全函数依赖与部分函数依赖
- (4)传递函数依赖
- 二:多值依赖(此部分内容看过BCNF之前再看)
- (1)多值依赖的例子
- (2)多值依赖的定义
- (3)平凡多值依赖与非平凡多值依赖
- (4)多值依赖的性质
- (5)多值依赖与函数依赖的区别
- (6)多值依赖的解决方法
- 二:码
- (1)码的相关概念
- (2)求解候选码
- 三:范式
- (1)1NF
- A:定义
- B:1NF可能存在的问题
- C:产生这些问题的原因及解决方法
- (2)2NF
- A:定义
- B:2NF可能存在的问题
- (3)3NF
- A:定义
- B:注意
- (4)BCNF
- A:定义
- B:判断一个3NF是否是BCNF
- C:3NF和BCNF的关系
- (5)4NF(看过多值依赖再看)
- (1)1NF
- 四:规范化小结
- 首先讨论一个关系属性间不同的依赖情况,讨论如何根据属性间依赖情况来判定关系是否具有某些不合适的性质
- 通常按属性间依赖情况来区分关系规范化程度为第一范式、第二范式、第三范式和第四范式等,然后直观地描述如何将具有不合适性质的关系转换为更合适的形式
一:函数依赖
(1)函数依赖
函数依赖:简单点说就是,如果X能确定Y(或者说Y依赖X,记作X->Y
)那么就不可能存在两个元组,在X相同时Y却不同
如下在Student
关系中,Sno
确定Sdept
,所以不可能出现两个相同的Sno
却对应不同的Sdept
【资料图】
(2)平凡函数依赖与非平凡函数依赖
平凡函数依赖与非平凡函数依赖:
- 非平凡函数依赖:如果X确定Y,但Y并不是X的子集,那么则称X是Y的非平凡函数依赖
- 平凡函数依赖:如果X确定Y,Y是X的子集,那么则称X是Y的平凡函数依赖
如下是一个典型例子
注意
(3)完全函数依赖与部分函数依赖
完全函数依赖与部分函数依赖:
- 完全函数依赖:要想X是Y完全函数依赖,那么X中任何一个分量都不能丢,哪怕少一个,X都无法确定Y
- 部分函数依赖:X是Y的部分函数依赖,则表明即便去掉X中的一个或多个分量,剩余分量也能确定Y
如下是一个经典例子
(4)传递函数依赖
传递函数依赖:如果X是Y的非平凡函数依赖,且Y不是X的函数依赖,同时Y是Z的非平凡函数依赖,则称Z对X传递函数依赖,记作
- 注意,如果Y是X的函数依赖,则称Z直接依赖于X
如下是一个经典例子
二:多值依赖(此部分内容看过BCNF之前再看)
(1)多值依赖的例子
【例】学校中某一门课程由多个教师讲授,他们使用相同的一参考书。每个教师可以讲授多门课程,每种参考书可以供多门课程使用。可以用一个非规范化的关系来表示教师T、课程C和参考书B之间的关系
把这张表变成一张规范化的二维表关系模型Teaching(C,T,B)的码是全码,也即所有属性组都是候选码,或者只有一个候选码
这样的关系会产生下面的一些问题
- 插入异常:例如,某一课程(如物理)增加一名讲课教师(如周英)时,必须插入多个(这里是三个)元组:
(物理,周英,普通物理学)
,(物理,周英,光学原理)
,(物理,周英,物理习题集)
- 删除异常:例如,某一门课(如数学)要去掉一本参考书(如微分方程),则必须删除多个(这里是两个)元组:
(数学,李勇,微分方程)
,(数学,张平,微分方程)
产生问题的原因在于多值依赖
例如,给定(课程C
,教师T
),有一组参考书B
,这组参考书B
仅仅是由课程C
决定的,而与教师T
无关
- 例如下图中,“李永”和“王军”即便互换也是没有关系的(只要课程是物理)
再比如,给定(课程C
,参考书B
),有一组教师T
,这组教师T
仅仅由课程C
决定,而与参考书B
无关
- 例如下图中,“普通物理学”和“光学原理”即便互换也是没有关系的,教师仍是那些(只要课程是物理)
(2)多值依赖的定义
多值依赖(描述型定义):设\(R(U)\)是一个属性集\(U\)上的一个关系模式,\(X\)、\(Y\)和\(Z\)是\(U\)的子集,并且\(Z\)=\(U\)-\(X\)-\(Y\)。那么多值依赖\(X\)->->\(Y\)成立当且仅当对\(R\)的任一关系\(r\),\(r\)在(\(X\),\(Z\))上的每个值对应一组\(Y\)的值,这组值仅仅决定于\(X\),而与\(Z\)无关
- 例如在Teaching(C,T,B)中就有C->->T和C->->B
多值依赖(形式化定义):设\(R(U)\)是一个属性集\(U\)上的一个关系模式,\(X\)、\(Y\)和\(Z\)是\(U\)的子集,并且\(Z\)=\(U\)-\(X\)-\(Y\)。在\(R(U)\)的任一关系\(r\)中,如果存在元组(\(x\),\(y_{1}\),\(z_{1}\))和(\(x\),\(y_{2}\),\(z_{2}\)),则必存在(\(x\),\(y_{2}\),\(z_{1}\))和(\(x\),\(y_{1}\),\(z_{2}\))。也即交换两个元组的\(Y\)值所得两个新元组必在\(r\)中,那么就称\(Y\)多值依赖于\(X\),记作\(X\)->->\(Y\)
(3)平凡多值依赖与非平凡多值依赖
若\(X\)->->\(Y\),且\(Z\)=\(\emptyset\),则称\(X\)->->\(Y\)为平凡多值依赖
若\(X\)->->\(Y\),且\(Z\)!=\(\emptyset\),则称\(X\)->->\(Y\)为非平凡多值依赖
(4)多值依赖的性质
对称性:\(Y\)多值依赖于\(X\),必有\(Z\)多值依赖于\(X\)。也即若\(X\)->->\(Y\),\(X\)->->\(Z\),其中\(Z\)=\(U\)-\(X\)-\(Y\)
函数依赖是多值依赖的特例:若\(X\)->\(Y\),则有\(X\)->->\(Y\)
传递性:若\(X\)->->\(Y\),若\(Y\)->=>\(Z\),则若\(X\)->->\(Z-Y\)
(5)多值依赖与函数依赖的区别
- 函数依赖规定某些元组不能出现在关系中;多值依赖要求某种形式的其它元组必须在关系中
- 有效性范围不同
(6)多值依赖的解决方法
解决方法仍然是模式分解
二:码
(1)码的相关概念
以下面关系为例
候选码:若关系中的某一属性组(注意是组不是某单个属性,当然有时属性组也可能只有一个属性)能唯一地标识一个元组,而其子集不能,则该属性组称之为候选码
- 上面关系中,学号是无法区分的,因为学号虽然不重复,但一个学生可能会对应多个课程,这就导致学号无法唯一标识一个元组。因此这里(学号,课程名)可以作为一个候选码
- 需要注意的是候选码不一定只有一个,可能有多个,只要满足条件即可,但在本例中确实只有一个
超码:能够唯一标识一条记录的属性或属性集,超码是候选码的扩充,候选码是最小的超码
- 可以用线性代数理解,就像一个向量组秩为\(r\),再填一个能被其线性表示的向量,该向量组秩仍为\(r\)
- 上面关系中,(学号、课程名)是候选码,那么它的超集,例如(学号、课程名、姓名)、(学号、课程名、性别)就是超码
主码:某个能够唯一标识一条记录的最小属性集(候选码中的“人选之子”)
- 候选码可能有多个,但是数据库设计者在设计时会根据实际需求选择一个候选码作为主码
外码:是本关系的属性且不是码,而是另一个关系的主码(相信再不用我详细介绍了吧)
全码:这是一种特殊情况:关系的所有属性组是这个关系模式的候选码
主属性和非属性:包含在候选码中的属性(注意是集合,不是某个候选码)称为主属性;不包含在候选码中的属性称为非主属性
- 上面关系中,姓名、性别和期末分数都是非主属性
(2)求解候选码
(此部分暂略,后续详细补充)
三:范式
范式:关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。也即范式是符合某一种级别的关系模式的集合。级别越高,表设计的就越合理
- 第一范式(1NF)
- 第二范式(2NF)
- 第三范式(3NF)
- BC范式(BCNF)
- 第四范式(4NF)
- 第五范式(5NF)
它们的关系如下
注意:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
下面的讲解中,以关系模式为例$$SLC(Sno,Sdept,Sloc,Cno,Grade)$$
涉及依赖关系如下
(1)1NF
A:定义
1NF:直观讲,就是关系中任何一列不能再分为两列或更多列
如下关系中,地址这个属性就是可以再分。所以该关系不满足1NF
- 有的人可能只会写某个省某个市
- 有的人可能会写的非常详细
- 所以“地址”这个属性是可以拆分的
- 但是如果写成“省市县”这三列,那么就不能分了,也就满足1NF了
B:1NF可能存在的问题
本例中SLC满足1NF,但却不是一个好的关系模式,因为会存在以下问题
- 插入异常:例如,插入一个学生,其
Sno
、Sdept
、Sloc
属性都具备,但是由于没有选课,所以没有Cno
,而Sno
和Cno
是主码,主码不能为空(否则违背实体完整性),所以无法插入 - 删除异常:例如,某一个学生只选了一门课,假如因为某种原因这门课不选了,那么意味着
Cno
和Grade
应该删除。但是这会导致整个元组被删除,一些不该删除的信息也被删除了 - 更新异常:例如,某一个学生转了专业,换了系,本来只需修改
Sdept
即可,但是Sdept->Sloc,这就导致Sloc
也得修改。另外如果这个学生选了k
门课,那么这意味着需要重复修改k
次,不仅存储冗余度大,而且修改很复杂
C:产生这些问题的原因及解决方法
问题原因:非主属性Sdept
、 Sloc
部分函数依赖于码
解决方法(2NF的处理方法):进行模式分解,消除部分函数依赖
- 关系SC的码为(Sno,Cno)
- 关系Sno的码为(Sno)
(2)2NF
A:定义
2NF:直观讲,就是一个表中只能保存一种数据,不能把多种数据保存在同一张表中。专业定义就是保证每个非主属性对码都是完全函数依赖
其实在1NF的例子中我们可以发现,SLC表似乎有点“不对劲”,就是一张表即在保存成绩又在保存学生的一些基本信息,从语义上讲,这就属于把多种数据保存在了同一张表上。也即是把原本两个关系硬塞在了一起,这就导致(Sno,Cno)在决定Grade
的同时,会间接影响到Sdept
和Sloc
B:2NF可能存在的问题
在分解后的S-L关系中,它满足2NF但并不是一个好的关系模式。其中Sloc
对Sno
传递函数依赖,这仍然会导致上面所展示的那些异常情况
(3)3NF
A:定义
3NF:直观讲,就是确保表中的每一列数据都和主码直接相关,而不是间接相关。专业定义就是保证每个非主属性对码既不是部分函数依赖也不是传递函数依赖
在2NF的那个例子中我们可以发现,S-L关系中Sno和Sdept是直接关系,Sdept和Sloc是直接关系,这就导致Sno与Sloc是间接关系。所以我们的做法依旧是采用模式分解,消除传递函数依赖
- 关系S-D的码是
Sno
- 关系D-L的码是
Sdept
B:注意
如果一个关系满足3NF,那么可以说在很多情况下它已经合格了。但是在一些特殊情况下,仍然会产生一些异常情况和数据冗余
(4)BCNF
A:定义
BCNF:直观讲,BCNF是修正的第三范式,修正了每一属性对候选码的传递依赖。BCNF一定是3NF,但3NF不一定是BCNF,想要让一个3NF成为BCNF,必须满足
- 所有的非主属性对每一个码都是完全函数依赖
- 所有的主属性对每一个不包含它的码也是完全函数依赖
- 没有任何属性完全函数依赖于非码的任何一组属性
B:判断一个3NF是否是BCNF
方法:
- 找出候选码
- 判断除候选码外是否还有其他决定因素。如果没有那么那么它就是BCNF
- 如果还有其他决定因素且每个决定因素都包含码那么就是BCNF,否则不是
演示:
【例】有关系模式S(Sno,Sname,Sdept,Sage),其中Sname也具有唯一性
答:这样一来,S就有两个码,且都由单属性组成,彼此不相交,其他属性不存在对码的部分和传递依赖,所以S属于3NF。又因为每一个决定因素中都包含码,所以属于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)和T,但T不包含码,所以不属于BCNF
C:3NF和BCNF的关系
- BCNF一定是3NF,但3NF却不一定是BCNF
- 3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度
- 一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内它已实现了彻底的分离,已消除了插入和删除的异常
- 3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖
(5)4NF(看过多值依赖再看)
4NF:简单点说,要想满足4NF,那么该关系模式的多值依赖要么是平凡的;如果是非平凡的,就必须退化为函数依赖。也就是说非平凡又非函数依赖的多值依赖是不允许存在的
在上面提到的Teaching(C,T,B)显然不是4NF,该关系存在\(C\)->->\(T\)和\(C\)->->\(B\)两个多值依赖,但是都是非平凡的,所以需要进行模式分解。分解为他们便是平凡的
- \(C\)->->\(T\)和\(C\)->\(B\)都是平凡多值依赖
四:规范化小结
规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化
视焦点讯!(数据库系统概论|王珊)第六章关系数据理论-第二节:规范化
别乱买!三大要素教你如何选对吸尘器
环球看点!一次看个够!《原子之心》双子舞伶所有场景合集
世界时讯:微软为Chrome官网注入大幅广告:只为将用户留在Edge
天天热资讯!微软收购动视暴雪获新盟友!NVIDIA态度转变签署10年游戏协议
热门:读Java实战(第二版)笔记17_反应式编程
每日播报!若若_关于若若的简介
焦点速读:长沙凌晨1点马路人流量惊人 像在倒时差:网友称想去打卡 当地人回应
全球最资讯丨8GB来了!iPhone 15内存大升级:苹果区别对待 想要花万元买Pro版
环球热头条丨荣耀Magic5 Lite获DXO电池性能第一名 续航可超三天
雷克萨斯、英菲尼迪、凯迪拉克等豪车中国市场暴跌:国人不当冤大头
今日聚焦!面试官:怎么去除 List 中的重复元素?我一行代码搞定,赶紧拿去用!
热文:OPPO打造!唯一配备潜望长焦的天玑旗舰来了
天天短讯!死磕RTX 40!AMD RX 7600/7700/7800齐曝光:据说苏妈定价有诚意
重现《放羊的星星》!林志颖特斯拉车祸后复出晒照 事故原因成谜 是踩错刹车?
Map数据结构详解
环球视讯!在PHP和JavaScript中设置Cookie、会话存储(SessionStorage)和本地存储(LocalStorage)
天天百事通!今日成都到康定怎么坐车_成都到康定
亮机卡也有春天 锐龙7000核显超频到3.1GHz 游戏性能猛增40%
当前要闻:困扰十几亿人!脚趾甲咋会向肉里长?
世界焦点!TCL发布超薄四开门冰箱T9:0cm无缝式嵌入 456L仅3399元
增程、换电、800V高压快充 谁才是未来新能源车最佳补能方式?
环球新动态:发3000元却收回2800元!“慈善主播”被行拘 账号被封
【焦点热闻】秘而不宣的读法
C#的string是一种糟糕的设计吗?
当前视讯!队列——queue的用法(及洛谷B3616)
vue-cli安装依赖 props属性三种方式 混入迷信 插件 elementUI vuex vue Routerd localStorage系列
openfoam文件读取
fusion app自定义事件源码介绍(上)
世界热门:RTX 4070 Laptop逆天能效比!七彩虹将星X15 AT 2023游戏本首发评测
全球快看:1月豪华车销量榜:蔚来碾压全系合资二线豪华品牌
被网友玩坏?微软Bing的ChatGPT被证实变愚蠢了
每日消息!“张伟”骗取数位宝马车主百万购车款 4S店疯狂推卸责任?
AMD锐龙7 7735HS迷你机也有“青春版”:只变了两个USB接口
环球今头条!攒台白色的MATX主机,在B760主板上也能玩好内存超频
全球焦点!RS485 MODBUS转PROFINET网关案例 | 超声波明渠流量计接入到PLC1200 PROFINE
焦点热门:前后端分离项目解决跨域的终极方法
环球今热点:[Java基础]自动装箱与自动拆箱--为什么整型比较必须用equals?
【天天新要闻】Detecting glass in Simulataneous Localisation and Mapping
天天热文:贝叶斯与卡尔曼滤波(2)--连续随机变量的贝叶斯公式
当前热门:用送的那块布擦镜片:小心眼镜被废!
观热点:60岁快递员意外猝死 快递公司回应:深感痛心 善后已达成一致
女子连刷10个差评商家找上门:不好吃你天天来干嘛 谁生活容易啊
【世界报资讯】果粉入手一加Ace 2:开20个应用不杀后台 苹果开3个应用就不行了
80后回忆的“均瑶牛奶”公司进军新能源车:首款纯电SUV云兔来了 莆田生产
信息:Qt调用摄像头一,基础版
k8s多节点二进制部署以及Dashboard UI
记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历
《原子之心》冰箱诺拉全九国语言配音:怎么没日语?
粉丝发现周深自用手机是iQOO 11 Pro传奇版:5米开外就能看到
电动两轮车总是骑半路就没电?这5种错误充电习惯赶快纠正
世界今头条!男子酷爱嚼槟榔:最终确诊舌癌
【报资讯】免费的ChatGPT意外断网 国内伪装自主的AI露馅了
守护安全|AIRIOT城市天然气综合管理解决方案
0x03_My-OS在实体机上面运行
每日播报!【算法训练营day53】LeetCode1143. 最长公共子序列 LeetCode1035. 不相交的线 LeetCode53. 最大子序和
快讯:两数之和、三数之和、四数之和(双指针)
世界焦点!今日山水一程三生有幸是形容爱情的吗_山水一程三生有幸
环球最资讯丨俞敏洪说想给董宇辉在北京买套房子 这话我听着耳熟
消息!魅族20未发先火!1元超前预订7小时订单破10万
世界热讯:研究称果糖或能导致老年痴呆:专家建议少食用
全球热议:旅日大熊猫香香坐顺丰飞机到家!1个月后与公众见面
环球视讯!成都一公司面试需填芝麻信用分 网友热议
每日信息:100亿级订单怎么调度,来一个大厂的极品方案
[学习笔记]Rocket.Chat业务数据备份
记录--uni-app实现京东canvas拍照识图功能
世界快资讯:Java+Jquer实现趋势图
全球最新:温州特斯拉事故20年驾龄司机仍昏迷:特斯拉回应称难过 重申全力配合调查
环球今热点:Xbox游戏将登陆任天堂主机 网友质疑:NS能带动吗?
世界微资讯!场面爆笑!外国人为开比亚迪开始学中文:难为“小迪”了
即时看!音悦台将回归登热搜!主体公司已成老赖:累计被执行1376万
世界视讯!什么是经营贷什么是消费贷?浅谈二者区别
puppet安装使用踩坑笔记
箭头函数详解
TypeScript 入门自学笔记 — 接口的使用(六)
快资讯丨Python关于异常处理的教程
天天观察:scrollView 嵌套 recyclerview 时 BaseQuickAdapter 九宫格图片拖拽到底部删除
14年老牌网站 音悦台要回归了!官方称很快就要内测
每日快看:杭州发现鱼类新物种苕溪鱲:通体散发宝蓝色金属光泽
当前播报:爱奇艺认错 恢复会员投屏!上海消保委:愿意为消费者叫板
是懂玩家的!《原子之心》为机器人姐妹花开通ins账号
焦点观察:张小泉公开一防菜刀断裂专利 这次拍蒜不断了?
当前最新:中小企业如何有效应对计算资源的弹性变化需求?
热消息:来一波骚操作,Java内存模型
全球新消息丨Windows家庭版安装本地组策略编辑器【gpedit.msc】
Redis详解
当前焦点!@ResponseBody注解的作用
万马股份(002276.SZ):万马新能源充电桩的枪线已经自产 由万马专缆生产
精选!售10-20万元 蔚来整合猎豹工厂:新品牌“萤火虫”落户安徽
今日最新!冲刺IPO!一年狂赚7亿美元 中国跨境电商神话靠啥吸粉?
乐视被强制执行100万:没版权擅自转播了优酷综艺
男子网购iPhone 14开箱发现是iQOO 商家赔50元优惠券被拒
当前动态:曾致135人死亡 印度断桥事故调查报告出炉:钢索严重腐蚀
0x02_My-OS操作系统里的helloworld
天天新资讯:iptables防火墙
世界热议:万物皆可集成资源包!低代码集成系列一网打尽
天天快播:通过例子学习粒子群优化算法
全球速讯:暂时性死区以及函数作用域
全球观察:祸不单行!美国俄亥俄州又现爆炸:30公里外都见到蘑菇云
天天新消息丨2.8K OLED屏+10核CPU 小米首款翻转本降价1000元起