1. 程式人生 > >資料庫,部分函式依賴,傳遞函式依賴,完全函式依賴,三種正規化的區別

資料庫,部分函式依賴,傳遞函式依賴,完全函式依賴,三種正規化的區別

要講清楚正規化,就先講講幾個名詞的含義吧:

部分函式依賴: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(學號 ,宿舍, 費用)中,(學號)->(宿舍),宿舍!=學號,(宿舍)->(費用),費用!=宿舍,所以符合傳遞函式的要求;

 1 、第一正規化(1NF)

在任何一個關係資料庫中,第一正規化(1NF)是對關係模式的基本要求,不滿足第一正規化(1NF)的資料庫就不是關係資料庫。

所謂第一正規化(1NF

)是指資料庫表的每一列(即每個屬性)都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。簡而言之,第一正規化就是無重複的列。

2、 第二正規化(2NF)

第二正規化(2NF)是在第一正規化(1NF)的基礎上建立起來的,即滿足第二正規化(2NF)必須先滿足第一正規化(1NF)。第二正規化(2NF)要求資料庫表中的每個例項或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以儲存各個例項的唯一標識。員工資訊表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。

第二正規化(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關係。為實現區分通常需要為表加上一個列,以儲存各個例項的唯一標識。簡而言之,第二正規化就是非主屬性依賴於主關鍵字。

3 、第三正規化(3NF)

滿足第三正規化(3NF)必須先滿足第二正規化(2NF)。在滿足第二正規化的基礎上,切不存在傳遞函式依賴,那麼就是第三正規化。簡而言之,第三正規化就是屬性不依賴於其它非主屬性。

最後簡單的總結一下:

1第一正規化(1NF):一個關係模式R的所有屬性都是不可分的基本資料項。

2第二正規化(2NF):關係模式R屬於第一正規化,且每個非主屬性都完全函式依賴於鍵碼。

3第三正規化(3NF):關係模式R屬於第一正規化,且每個非主屬性都不偉遞領帶於鍵碼。

4 BC正規化(BCNF):關係模式R屬於第一正規化且每個屬性都不傳遞依賴於鍵碼

第三正規化以上的正規化在資料庫中也很少用到,而且三級資料庫一般也不會考,這裡就不提了吧,呵呵,偷個懶