摘要:微信搜索【三橋君】
範式判斷這塊通常讓大家很懊惱,會混淆。通過研究,我總結了容易記憶和判斷的方法,希望大家看了能夠學會這塊知識點。
一、說明
範式的符合條件隨着範式級別增大而增加,而且範式的條件會包括小於它本身的範式條件。比如3NF的符合條件會比2NF多,而且它的條件會包括2NF、1NF的範式條件。
我把判斷每一個範式的條件都列出來,當我們判斷範式時,只要某個範式的條件全都符合,那麼就達到該範式。
二、範式判斷
1NF:
數據庫的每一列都是不可分割的基本數據項。
2NF:
數據庫的每一列都是不可分割的基本數據項;
存在非主屬性對候選鍵的完全函數依賴 (不存在非主屬性對候選鍵的 不完全/部分 函數依賴)。
3NF:
數據庫的每一列都是不可分割的基本數據項;
存在非主屬性對候選鍵的完全函數依賴 (不存在非主屬性對候選鍵的 不完全/部分 函數依賴);
不存在對候選鍵的傳遞函數依賴。
BCNF:
數據庫的每一列都是不可分割的基本數據項;
存在非主屬性對候選鍵的完全函數依賴 (不存在非主屬性對候選鍵的 不完全/部分 函數依賴);
不存在對候選鍵的傳遞函數依賴;
所有的主屬性對每一個不包含它的碼,也是完全函數依賴和不傳遞依賴。
補充:
2NF判斷的條件,其實就是存在非主屬性對候選鍵的完全函數依賴。當我們在做習題時,題目給的意思很可能是括號裏的表述,然後我們要知道它等同於存在非主屬性對候選鍵的完全函數依賴。
三、例題
1、一般情況,企業會將從一個供應商處一次所進的多種貨物辦理一次入庫,因此設計了關係模式:入庫單(單號,日期,庫房,供應商,物品,數量,金額),下列說法正確的是(不滿足第2範式)。
解析:
結合實際情況,把關係模式的函數依賴集寫出來:
單號→(日期,庫房,供應商),物品→(金額),(單號,物品)→數量
L:單號,物品
R:日期,庫房,供應商,數量
LR:
N:
因爲(單號,物品)閉包能傳遞出所有屬性,所以候選碼/鍵爲(單號,物品)。
因爲數據依賴集裏有單獨的單號或物品傳遞的依賴;
所以數據依賴集就存在非主屬性對候選鍵的部分函數依賴,即不存在非主屬性對候選鍵的完全函數依賴。
根據範式的判斷:
存在非主屬性對候選鍵的完全函數依賴→2NF。
所以,不滿足第2範式。
2、對連鎖商店的管理,設計了關係模式:(商店,商品部,商品,商品部經理),下列說法正確的是(滿足第2範式但不滿足第3範式)。
解析:
結合實際情況,把關係模式的函數依賴集寫出來:
(商店,商品)→商品部,(商店,商品部)→商品部經理
L:商店,商品
R:商品部經理
LR:商品部
N:
因爲(商店,商品)閉包能傳遞出所有屬性,所以候選碼/鍵爲(商店,商品)。
因爲數據依賴集裏沒有單獨的商店或商品傳遞的依賴;
所以數據依賴集就不存在非主屬性對候選鍵的部分函數依賴,即存在非主屬性對候選鍵的完全函數依賴。
又因爲數據依賴集裏存在候選鍵與非主屬性相結合傳遞出其他非主屬性的情況,如(商店,商品部)→商品部經理;
所以存在對候選鍵的傳遞函數依賴。
根據範式的判斷:
存在非主屬性對候選鍵的完全函數依賴→2NF,
存在非主屬性對候選鍵的完全函數依賴,不存在對候選鍵的傳遞函數依賴→3NF;
推導出題目屬於2NF。
補充:
不清楚如何求候選碼的看這篇:淺析如何求解關係模式的候選碼
範式判斷習題:數據庫系統原理--測試 第6章2--習題答案
文章整理不易,有幫助請點贊關注支持,謝謝!微信搜索【三橋君 】,回覆【關注】有我準備的一份資源大禮包,後續持續更新。