在談資料庫範式之前,我們要明白一些關於資料庫的基本概念,具體有一下幾個:
元組(Tuple):是關聯式資料庫中的基本概念,關係是一張表,表中的每行即資料庫中的一條記錄,就是一個元組,每列就是一個屬性。
超鍵(Super Key):能夠唯一決定一個元組的屬性集合。可以是一個屬性也可以是多個屬性,都叫做超鍵。
候選索引鍵(Candidate Key):不含有多餘屬性的超鍵,稱為候選索引鍵。
主鍵(Primary Key):標識元組的一個候選索引鍵。
PS:1 無論是超鍵、候選索引鍵、主鍵,他們都是唯一確定一個元組
2 超鍵包含候選索引鍵、候選索引鍵包含主鍵
資料庫範式出現的背景
資料冗餘:指資料之間的重複,也可以說是同一資料存放區在不同資料檔案中的現象;
函數依賴:如果一個屬性決定於另一個屬性,那麼可以說另一個屬性依賴於這個屬性,比如《機房收費系統》中學生表,學生號可以決定學生姓名,即知道了一個學生的學生號,就可以知道他的姓名。
函數依賴又可以分為平凡依賴和非平凡依賴。
按性質分可分為部分依賴和完全依賴。
完全依賴:設X,Y是關係R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴於X。
部分依賴:設X,Y是關係R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴於X。
傳遞函數依賴:設X,Y,Z是關係R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴於X。
資料庫範式是為了消除資料冗餘、減少資料操作異常出現的。
第一範式:原子性,欄位不可再分;是指資料庫表的每一列都是不可分割的基本資料項目,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。
第二範式:在第一範式基礎上,要求資料表的中的每個執行個體或行必須可以被唯一的區分。為實現區分通常需要為表加上一個列,一儲存各個執行個體的唯一標示,即沒有重複的記錄。
第三範式:第而範式基礎上,消除間接依賴(某些欄位不完全依賴主鍵的,可以將其移除)
資料庫的設計要盡量遵循範式設計,這樣才能減少冗餘資料,減少出錯的異常。