一言
心向花开,何不朝夕。——百年浅吟
数据库系统概论笔记:第六章:关系数据库理论

6.1 问题的提出

6.2规范化

6.2.1 函数依赖

1.定义

设 R(U) 是一个属性集U上的关系模式, X 和 Y 是 U 的子集。若对于 R(U) 的任意一个可能的关系 r ,r 中不可能存在两个元组在 X 上的属性值相等, 而在 Y 上的属性值不等, 则称 “ X 函数确定 Y ” 或 “ Y 函数依赖于 X ”,记作 X→Y。

该说不说,书上定义的是真抽象。

如果有两个属性组,通过X内的属性组能得到Y的属性,记作X→Y,称作Y函数依赖于X。

分类

  • 平凡的函数依赖:如果 X→Y ,但 Y属于X ,则称 X→Y 是非平凡的函数依赖(这就是太平凡了,你都属于人家,那肯定能得到你。或者说这叫废话的函数依赖)

  • 非平凡的函数依赖:若 X→Y ,但Y不属于X , 则称 X→Y 是平凡的函数依赖。(这才是我们理解的正常依赖)

  • 完全函数依赖:若X→Y ,并且对于 X 的任何一个真子集 X’ ,都有X'得不到Y , 则称 Y 对 X 完全函数依赖(Y完全依赖X了,依赖上了他的全部,以至于X的部分都不能得出Y,必须是全部的X,就是说,Y爱全部的X,但不爱部分的X)

  • 部分函数依赖:X→Y,但是Y对X不是完全函数依赖(也就是说X中有不重要的属性,他推不出Y)

  • 传递函数依赖: 在 R(U) 中,如果X→Y,且Y→Z 则称 Z 对 X 传递函数依赖。(传递性)

6.2.2 码

  • 候选码:设 K 是R中的 一个属性组,若K能得到全部的R中的属性,且R完全依赖于K, 则 K 称为 R 的侯选码(Candidate Key)。

  • 超码:如果R部分依赖于K,则R为K的超码(超码是能推出所有属性的属性组的集合)

  • 主码:候选码不止一个的时候,选定其中的一个作为主码

  • 主属性:包含在任何一个候选码中的属性

  • 非主属性:不包含在任何候选码中的属性

  • 全码:整个属性组都为码(这也就说明这个属性组中的属性是各个独立的,谁也推不出谁)

  • 外码:R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码

6.2.3范式

1NF:1NF就是属性不可再分的,在数据库中所有属性都是1NF,

6.2.4 2NF

若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF,(也就是说,2NF的目的就是消除部分函数依赖)

例如:

在这个例子中,我们要先求出他的候选码:

怎么求候选码呢?

首先,只在左边出现的属性,一定是属于候选码的属性,其次两边都出现的,可能是候选码的属性,只在右边出现的,一定不是属于候选码的,在这个例子中,只出现在左边的,是Sno,Cno,所以他俩一定是属于候选码的,然后,用这两个属性,我们判断一下,能不能推出所有候选码,可以看到,他俩是能推出所有其他属性的,所以候选码就是(Sno,Cno),

判断是否2NF

这时候再看,Mname这个属性,只需要Sno和Sdept就能推出,而不用Cno了,所以Mname部分依赖于(Sno,Cno)这个候选码,所以我们需要拆分分成如图所示的SC、SD。

6.2.5 3NF

在2NF的基础上,关系模式 R<U,F> 中若不存在这样的码 X 、属性组 Y 及非主属性 Z (Z不属于Y), 使得X→Y,Y→Z成立,Y不属于X ,则称 R<U,F> ∈ 3NF, (3NF就是消除非主属性对码的传递依赖)也就是说 ,3NF的非主属性既不部分依赖于候选码,也不传递依赖于候选码

例:

同理也是,SC的候选码为(Sno,Cno),SD为(Sno)

SC不用管,SD中的Mname传递依赖于Sno,所以要消除这个,就把他们分开。

6.2.6 BCNF

关系模式 R<U,F>∈1NF,若X→Y且 时 X 必含有码,则 R<U,F>∈BCNF。(消除非平凡且非函数依赖的多值依赖)

大白话就是说在所有依赖中,左边必定含有码。

6.2.7多值依赖

6.2.8 4NF

6.3 数据依赖的公理系统

6.4 模式的分解

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇