題外話#
這類題型一般伴隨著判斷候選關鍵字的結合考法,所以本文在介紹如何區分範式時首先先介紹如何確定候選關鍵字
候選關鍵字的求法:根據依賴集,找出從未在右邊出現過的屬性,必然是候選鍵之一,以該屬性為基礎,根據依賴集依次擴展,看能否遍歷所有屬性,將無法遍歷的加入候選鍵中。
下面我們接著討論如何區分範式
相關概念及案例解析#
1NF:強調的是列的原子性,即列不能夠再分成其他的幾列
例如:下圖中,圖書可以分解為圖書號和書名,此時不屬於1NF2NF:1.要滿足第一範式2.每個非主屬性要完全函數依賴於候選鍵,或者是主鍵(主碼)。
PS:只有在複合字段作主鍵時,才可能出現不滿足2NF的情況
例如:
下圖中可以根據前面提到的方式,判斷出該關係模式的候選碼為EM,而函數依賴集中存在M→L,並不是由EM直接得出,所以存在部分函數依賴不屬於2NF3NF:1.首先要滿足第二範式 2.非主屬性之間不存在函數依賴(或者說不存在傳遞依賴)。
意思就是此時主屬性為A,A→B,A→D,此時不能出現B→C這種情況BCNF:1.滿足前面的所有低級範式要求 2.主碼(主鍵)之間不存在依賴
例如:
總結#
只要是關係型數據庫的表,都滿足第一範式。第一範式本質更多的是對關係型數據庫的一個限定。
第二、第三範式更多的是對數據庫表合理設計的一個要求,理解第二、第三範式能夠更好的幫助我們設計數據庫表。