软件设计师 - 函数依赖 和 范式
文章目錄
- 1.函數(shù)依賴(lài):
- 1.0.前提范例:
- 1.1.函數(shù)依賴(lài)定義:
- 1.2. 部分依賴(lài)
- 1.3. 完全依賴(lài)
- 2.范式
- 2.1. 碼、候選碼、主碼
- 2.2.主屬性和非主屬性
- 2.3.第一范式(1NF)
- 2.4.第二范式(2NF)
- 2.5.第三范式(3NF)
- 2.6.BC范式(BCNF)
- 3.函數(shù)依賴(lài)推導(dǎo)規(guī)則(todo,沒(méi)看懂)
1.函數(shù)依賴(lài):
1.0.前提范例:
教育局管理系統(tǒng)中學(xué)生表:
學(xué)生表(學(xué)生id,身份證號(hào),姓名,性別,學(xué)號(hào),學(xué)校id,學(xué)校名稱(chēng))學(xué)生id,可以唯一確定一條學(xué)生信息;
身份證號(hào),可以唯一確定一條學(xué)生信息;
學(xué)號(hào)+學(xué)校id,可以唯一確定一條學(xué)生信息(同一學(xué)校內(nèi)的學(xué)號(hào)是唯一的);
1.1.函數(shù)依賴(lài)定義:
函數(shù) y = f(m),如果每個(gè)x都有唯一y值與之對(duì)應(yīng),
那么稱(chēng):m決定y,或y依賴(lài)于m,
寫(xiě)作:m -> y,畫(huà)作:
例如:
1.函數(shù) :y = m2,每個(gè)m取值,y都有唯一值與之對(duì)應(yīng),所以:
m決定 y 或 y 依賴(lài)于 m, 記做: m -> y。
2. 對(duì)應(yīng)0.全局例子中:學(xué)生id -> 姓名(姓名依賴(lài)于學(xué)生id),身份證號(hào)->姓名
1.2. 部分依賴(lài)
對(duì)于1.1.函數(shù)依賴(lài)定義中:單獨(dú)一個(gè)m,就可以唯一確定y的值,那么用另一個(gè)無(wú)關(guān)變量n和m的組合值,必定也可以唯一確定y的值。
那么稱(chēng):(m,n)決定y,或y部分依賴(lài)于m,
寫(xiě)作:(m,n) -> y,畫(huà)作:
例如:
1.函數(shù) :y = m2,每個(gè)m取值,y都有唯一值與之對(duì)應(yīng),此時(shí)還有另一個(gè)函數(shù) z = n2,那么每個(gè)唯一的m和n,y也有唯一值與之對(duì)應(yīng),所以:
(m,n)決定 y 或 y 部分依賴(lài)于(m,n), 記做: (m,n) -> y。
2. 對(duì)應(yīng)0.全局例子中:(身份證號(hào),性別) -> 姓名(姓名部分依賴(lài)于身份證號(hào)和性別)
1.3. 完全依賴(lài)
函數(shù) y = f(m,n),如果確定的m和n,都有唯一y值與之對(duì)應(yīng),
那么稱(chēng):(m,n)決定y,或y完全依賴(lài)于(m,n),
寫(xiě)作:(m,n) -> y ,畫(huà)作:
例如:
1.函數(shù) :y = m2+n2,單獨(dú)一個(gè)m或n的值,不能唯一確定y的值,但是(m,n)的組合值可以唯一確定y的值。
(m,n) 決定 y 或 y 完全依賴(lài)于 (m,n), 記做: (m,n) -> y。
2. 對(duì)應(yīng)0.全局例子中:(學(xué)校id,學(xué)號(hào)) -> 姓名(姓名部分完全于學(xué)校id和學(xué)號(hào))。
2.范式
2.1. 碼、候選碼、主碼
碼、候選碼、主碼的說(shuō)明
對(duì)應(yīng)在數(shù)據(jù)庫(kù)中的每一條數(shù)據(jù)中:
碼:能唯一確定一條數(shù)據(jù)的一個(gè)屬性或一組屬性(可以包含冗余屬性);
候選碼:能唯一確定一條數(shù)據(jù)的一個(gè)屬性或一組屬性(消除冗余屬性);
主碼:主碼是唯一的,從候選碼中選出一個(gè)作為主碼;
2.2.主屬性和非主屬性
主屬性:在候選碼中的屬性;
非主屬性:不在候選碼中的屬性;
2.3.第一范式(1NF)
每個(gè)屬性都是不可分割的原子值;
2.4.第二范式(2NF)
消除非主屬性對(duì)候選鍵的部分依賴(lài);
學(xué)生表(學(xué)生id,身份證號(hào),姓名,性別,學(xué)號(hào),學(xué)校id,學(xué)校名稱(chēng))問(wèn)題:學(xué)生表中,(學(xué)校id,學(xué)號(hào))是一個(gè)候選鍵,但是 ,學(xué)校名稱(chēng)部份依賴(lài)(學(xué)校id,學(xué)號(hào)),所以就不符合2NF。
解決方法:把(學(xué)校id,學(xué)校名稱(chēng))單獨(dú)抽取成一個(gè)學(xué)校表,就符合2NF了。
2.5.第三范式(3NF)
消除非主屬性對(duì)候選鍵的傳遞依賴(lài)
學(xué)生表(學(xué)生id,姓名,性別,學(xué)校id,學(xué)校名稱(chēng))問(wèn)題:學(xué)生表中,學(xué)生id 是一個(gè)候選鍵,有學(xué)校姓名 傳遞依賴(lài) 學(xué)生id,不符合3NF
學(xué)生id-> 學(xué)校id (學(xué)校id 依賴(lài) 學(xué)生id) 學(xué)校id -> 學(xué)校名稱(chēng) (學(xué)校姓名 依賴(lài) 學(xué)校id) 所以: 學(xué)校姓名 傳遞依賴(lài) 學(xué)生id解決方法:把(學(xué)校id,學(xué)校名稱(chēng))單獨(dú)抽取成一個(gè)學(xué)校表,就符合3NF了。
學(xué)生表(學(xué)生id,姓名,性別,學(xué)校id) 學(xué)校表(學(xué)校id,學(xué)校名稱(chēng))2.6.BC范式(BCNF)
消除主屬性對(duì)候選鍵的傳遞依賴(lài)(列出關(guān)系中所有的函數(shù)依賴(lài),依賴(lài)左側(cè)都是候選鍵)
3.函數(shù)依賴(lài)推導(dǎo)規(guī)則(todo,沒(méi)看懂)
總結(jié)
以上是生活随笔為你收集整理的软件设计师 - 函数依赖 和 范式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MyBatisPlus_更新篇_入门试炼
- 下一篇: 第九篇:Spring Boot整合Spr