sql 範式

先了解以下幾個概念:
       完全函數依賴:X->Y,並且對於X的任何一個真子集X`,都有X`不能推出Y
       部分函數依賴:X->Y,並且存在X的一個真子集X`,有X`->Y
       碼:能夠確定出其他屬性 的 屬性或者屬性組合
       主屬性:碼中的屬性
       非主屬性:不存在於任何碼中的屬性

範式分爲四種:

  1. 第一範式 (1NF)
  2. 第二範式 (2NF)
  3. 第三範式 (3NF)
  4. BCNF (通常認爲是第三範式的修正)

範式判斷:

  1. 第一範式
    如果一個關係模式R的所有屬性都是不可分的基本數據項,則R∈1NF。簡單的說,就是每一個列(屬性),不能再分割成多個列(屬性)。
  2. 第二範式
    在滿足第一範式的基礎上,非主屬性完全函數依賴於任何一個候選碼,則爲第二範式
    舉例:有一個關係模式S-L-C(Sno,Dept,Sloc,Cno,Grade),其中Sno 是學號,Dept是學院,Sloc是住所,Cno是班級,Grade是成績
    其中的函數依賴有
           (Sno,Cno)->Grade (此關係是完全函數依賴)
           Sno->Sdept,(Sno,Cno)->Sdept(此關係是部分函數依賴)
           Sno->Sloc,(Sno,Cno)->Sloc,
           Sdept->Sloc
    以上的函數依賴關係中,存在部分函數依賴,所以此關係模式不是第二範式
  3. 在滿足第二範式的基礎上,每一個非主屬性既不傳遞依賴於碼,也不部分依賴於碼
    舉例:有一個關係模式S-L(Sno,Sdept,Sloc)
    其中的函數依賴有:
           Sno->Sdept,
           Sdept->Sloc,
           Sno->Sloc,
    以上的函數依賴關係可以看出,Sdept完全依賴於Sno,Sloc完全依賴於Sdept,Sloc完全依賴於Sno,而Sno不依賴於Sdept,從而判斷出Sno和Sloc存在傳遞依賴關係.所以此關係模式不是第三範式
  4. 在滿足第三範式的基礎上
           1.所有非主屬性對每一個碼都是完全函數依賴
           2.所有主屬性對每一個不包含它的碼也是完全函數依賴
           3.沒有任何屬性完全函數依賴於非碼的任何一組屬性

判斷訣竅:
       第一步:根據關係模式,寫出所有的函數依賴關係,碼,主屬性,非主屬性
       第二步:在所有的函數依賴關係中,判斷是否存在部分依賴和傳遞依賴
       第三部:所有主屬性對每一個不包含它的碼也是完全函數依賴
       第四步:沒有任何屬性完全函數依賴於非碼的任何一組屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章