一、碼
設是中的屬性或者屬性組合
K是
- 超碼:
- 候選碼:,候選碼是最新小的超碼,任意一個候選碼的子集都不是候選碼,候選碼可以有多個。
- 主碼:候選碼其中之一
- 主屬性:候選碼的並集
- 非主屬性:主屬性
- 全碼:是碼
主碼和候選碼簡稱碼
二、範式
- 1NF:實體中每個屬性都只有一個值並且屬性不重複
- 2NF:是1NF,並且每一個非主屬性完全依賴於任何一個候選碼
- 3NF:是2NF,並且每一個非主屬性不傳遞依賴於碼
- BCNF:是1NF,並且每一個決定因素都包含碼
三、數據依賴的公理系統
- 自反律(平凡函數依賴)
- 增廣律
- 傳遞律
- 推論:合併規則、僞傳遞規則、分解規則
- :爲所邏輯蘊含的函數依賴的全體
- :屬性集關於函數依賴集的閉包
的充分必要條件是 - 最小函數依賴:右側拆單,刪除冗餘的依賴,然後對左側非單的屬性集刪除冗餘的屬性。
冗餘:刪除這一依賴或者屬性後,該依賴或者刪除屬性所在的依賴的右側的屬性仍舊屬於左側屬性集關於刪完之後的依賴的閉包
四、模式分解
(1)、轉化爲3NF的保持函數依賴的分解
- 對中的F作極小化處理
- 所有不在中出現的屬性構成單個關係模式
- 按左側相同屬性集進行分組,每組全部屬性構成一個屬性集,去掉包含屬性集
(2)、轉化爲3NF的無損連接+保持函數依賴的分解
在(1)的基礎上
- 添加碼作爲新的關係模式
- 去掉包含屬性集
(3)、轉化爲BCNF的無損連接分解
若關係模式中不是BCNF,那麼一定有,不是的碼,則對進行分解:
不斷執行上述操作直到所有的關係模式都是BCNF