關係模式知足第2、三範式的求解方法!

1、將非第二範式分解成第二範式函數

前記:非第二範式-存在非主屬性對主鍵的部分函數依賴。
  • 分解步驟
    一、用組成主鍵的屬性集合的每個子集做爲主鍵構成一個新的關係模式。
    二、將依賴於這些主鍵的屬性放置到相應的新的關係模式中。
    三、最後去掉只由主鍵的子集構成的關係模式。

例如:關係(Sno, Sname, Ssex, Sdept, Sloc, Cno, Grade)
對應:(學號,姓名,性別,所在系,宿舍樓號,課程號,成績)code

分析:由於該關係模式的主鍵是(Sno,Cno),而且有Sno->Sname,所以Sname部分函數依賴於(Sno,Cno),因此,該關係不知足第二範式。     
 解:將該關係模式分解爲以下三個關係模式(**部分表示主鍵)
     (**Sno**, Sname, Ssex, Sdept, Sloc)
     (**Cno**) //去掉
     (**Sno, Cno**, Grade)
     最後,獲得了兩個知足第二範式的關係。

2、將非第三範式分解成第三範式集合

前記:非第三範式-存在非主屬性對主鍵的傳遞函數依賴。
  • 分解步驟
    一、對於不是候選鍵的每一個決定因子(依賴關係中左邊的部分),從關係模式中刪去依賴於它的全部屬性。
    二、新建一個關係模式,新關係模式中包含原關係模式中全部依賴於該決定因子的屬性。
    三、將決定因子做爲新關係模式的主鍵。

例如:(Sno, Sname, Ssex, Sdept, Sloc)中,Sdept不是候選鍵,可是Sdept->Sloc。因此,Sdept是決定因子,從關係中刪去依賴它的Sloc。co

新建一個關係模式(**Sdept**, Sloc)。
最後關係模式(Sno, Sname, Ssex, Sdept, Sloc, Cno, Grade)被分解爲三個知足第2、三範式的關係模式:
(Sno, Sname, Ssex, Sdept)
(**Sdept**, Sloc)
(**Sno,Cno**, Grade)
相關文章
相關標籤/搜索