mysql 函数依赖关系_MySQL关系规范化
MySQL關(guān)系規(guī)范化
做者:就叫易易好了
時間:2020/10/21
指導(dǎo)老師:桃群老師
1、關(guān)系規(guī)范化
一、函數(shù)依賴
什么是函數(shù)依賴?好比學生管理系統(tǒng)數(shù)據(jù)庫,有學生姓名(Sname)、學生系名(Sdept)、學生學號(Sno)等等。一個學號只能惟一肯定一個學生,一個學生只在一個系學習。因此,當“學號”肯定后,學生姓名和該學生所在系也被惟一肯定了。web
這時咱們能夠說數(shù)據(jù)庫
Sno函數(shù)決定Sname和Sdept,或者說Sname,Sdept函數(shù)依賴于Sno數(shù)據(jù)庫設(shè)計
可記做:Sno->Sname,Sno->Sdeptsvg
1.1 徹底函數(shù)依賴
在R(U)中,若X->Y,而且對于X的任意一個真子集X’,都有Y不依賴于X’,那么稱Y對X徹底函數(shù)依賴函數(shù)
好比一個學生的學號和課程號才能共同決定一個學生該門課的成績,即(Sno,Cno)->Grade,但X的真子集為Sno或者Cno,他們沒法單獨決定該門課的成績,因此學號和課程號徹底函數(shù)依賴成績學習
2.2 部分函數(shù)依賴
在R(U)中,若X->Y,對于X的任意一個真子集X’,有Y依賴于X’ ,那么稱Y對X部分函數(shù)依賴。設(shè)計
好比(Sno,Cno)->Sname,X的真子集Sno和Cn都能單獨決定學生姓名,因此學號和課程號部分函數(shù)依賴學生姓名。code
2.3 傳遞函數(shù)依賴
在R(U)中,若是Y依賴于X,X不依賴于Y,Z依賴于Y,則稱Z對X傳遞函數(shù)依賴;xml
好比:Sno->Sdept,Sdept不依賴于Sno,Sdept->Manager,則Sno傳遞函數(shù)依賴于Managerit
2.4 直接函數(shù)依賴
在R(U)中,若是Y依賴于X,X依賴于Y,Z依賴于Y,則稱Z對X直接函數(shù)依賴
好比:Sno->Sdept,Sdept->Sno,Sdept->Manager,則Sno直接函數(shù)依賴于Manager
2、范式
范式是衡量關(guān)系的規(guī)范化程度。
知足最低要求的是第一范式,簡稱1NF。在第一范式中知足進一步要求為第二范式,簡稱2NF,以此類推。
1NF<2NF <3NF
一個低一級的范式關(guān)系模式,經(jīng)過模式分解可轉(zhuǎn)換為更高一級的范式關(guān)系模式集合,這個過程就叫規(guī)范化。
一、第一范式 (1NF)
若一個關(guān)系模式R的全部屬性都是不可再分項,則該關(guān)系屬于第一范式
學號
姓名
班級
正班長
副班長
2018029
成小白
5班
龍龍
豫豫
2018030
晨小美
5班
龍龍
豫豫
在上面這個表格中,全部屬性都是不可再分項,因此該關(guān)系為1NF。
二、第二范式(2NF)
1NF是關(guān)系數(shù)據(jù)庫中對關(guān)系最基本的要求,但不是理想的結(jié)構(gòu)形式,仍然有大量的數(shù)據(jù)冗余和操做異常。因此為了解決這些問題,就要消除模式中屬性之間存在的部分函數(shù)依賴,將其轉(zhuǎn)化成更高一級的第二范式。
若關(guān)系模式R屬于1NF,且R中每一個非主屬性都徹底函數(shù)依賴于主關(guān)鍵字,則稱R是第二范式(2NF)
也就是說當1NF消除了非主屬性對關(guān)鍵字的部分函數(shù)依賴,則稱為2NF
案例:
學生關(guān)系S(Sno,Sname,Sdept,Manager,Cno,Grade)
·關(guān)系S屬于第一范式
·關(guān)系S不屬于第二范式,存在非主屬性對(Sno,Cno)的部分函數(shù)依賴
·若是將該學生關(guān)系S分解成如下兩個關(guān)系S1和S2,
-S1(Sno,Cno,Grade),這時Grade徹底依賴于主碼
沒有部分函數(shù)依賴,因此屬于第二范式
-S2(Sno,Sname,Sdept,Manager)
主碼是Sno,其余非主關(guān)鍵字都是徹底函數(shù)依賴于主碼
屬于第二范式
三、第三范式(3NF)
當?shù)诙妒较朔侵鲗傩詫Υa的傳遞函數(shù)依賴,則稱為第三范式
舉例:
關(guān)系S1(Sno,Cno,Grade),不存在非主屬性對主屬性的部分函數(shù)依賴個傳遞函數(shù)依賴,因此S1屬于第三范式。
關(guān)系S2(Sno,Sname,Sdept,Manager),存在非主屬性Manager對碼Sno的傳遞函數(shù)依賴,即Sno->Sdept,Sdept不依賴于Sno,Sdept->Manager,Sno傳遞函數(shù)依賴于Manager。因此S2不屬于第三范式。
若將S2分解成下述兩個關(guān)系S3和S4,即:
S3(Sno,Sname,Sdept),消除了非主屬性對主屬性的部分函數(shù)依賴和傳遞函數(shù)依賴,屬于第三范式。
S4(Sdept,Manager),消除了非主屬性對主屬性的部分函數(shù)依賴和傳遞函數(shù)依賴,屬于第三范式。
解決了刪除異常、更新異常和冗余度大等問題
四、BC范式(BCNF)
當?shù)谌妒较酥鲗傩詫Υa的部分和傳遞函數(shù)依賴,稱為BCNF
若是關(guān)系R是BCNF,那么R必定是3NF
若是R是第三范式,而且R只有一個候選碼,則R必屬于BCNF
二元關(guān)系模式R一定是BCNF
都是主屬性的關(guān)系并不是必定屬于BCNF
從數(shù)據(jù)庫設(shè)計的角度看,在函數(shù)依賴的基礎(chǔ)上,分解最高范式BCNF的模式中仍然勛在數(shù)據(jù)冗余問題,這時就須要更高的范式來解決這個問題,本篇文章先到這里,后面再更新多值依賴,鏈接依賴和更高范式喔~
總結(jié)
以上是生活随笔為你收集整理的mysql 函数依赖关系_MySQL关系规范化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高德地图区域线显示_护航国庆假期,助力重
- 下一篇: linux cmake编译源码,linu