什麼是鍵碼?
如果一個屬性或多個屬性的集合{A,B,C,D….}滿足下面的條件,稱爲關係R的鍵碼。
1、這些屬性函數決定該關係的所有其它屬性
2、{A,B,C,D….}的任何真子集都不能函數決定R的其它屬性,也就是說{A,B,C,D….}必須是最小的
什麼是主屬性?
鍵碼所在的屬性成爲主屬性。
什麼是非主屬性?
非鍵碼所在的屬性稱爲非主屬性。
例子:
比如上圖中,Sno
和Cname
就是主屬性,其他的爲非主屬性。{Sno,Cname}
爲鍵碼。
部分函數依賴
:設X,Y是關係R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴於X。
舉個例子:學生基本信息表R中(學號,身份證號,姓名)當然學號屬性取值是唯一的,在R關係中,(學號,身份證號)->(姓名),(學號)->(姓名),(身份證號)->(姓名);所以姓名部分函數依賴與(學號,身份證號);
完全函數依賴
:設X,Y是關係R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴於X。
例子:學生基本信息表R(學號,班級,姓名)假設不同的班級學號有相同的,班級內學號不能相同,在R關係中,(學號,班級)->(姓名),但是(學號)->(姓名)不成立,(班級)->(姓名)不成立,所以姓名完全函數依賴與(學號,班級);
傳遞函數依賴
:設X,Y,Z是關係R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴於X。
例子:在關係R(學號 ,宿舍, 費用)中,(學號)->(宿舍),宿舍!=學號,(宿舍)->(費用),費用!=宿舍,所以符合傳遞函數的要求;
來自 https://blog.csdn.net/rl529014/article/details/48391465
如果一個關係模式中所有屬性都是不可分割的基本屬性
,則這個關係模式屬於第一範式
如果一個關係模式屬於第一範式,其中所有非主屬性都完全函數依賴於鍵碼
,則屬於第二範式
如果一個關係模式屬於第一範式,其中所有非主屬性都不傳遞依賴於鍵碼
,則屬於第三範式
如果一個關係模式屬於第一範式,其中所有屬性都不傳遞依賴於鍵碼
,則屬於BC範式
一張圖總結: