第一范式(無重復的列) 定義:數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性 通俗解釋:一個字段只存儲一項信息 eg:班級:高三年1班,應改為2個字段,一個年級、一個班級,才滿足第一范式,否則不滿足第一范式。
學號 姓名 班級
0001 小紅 高三年1班
改成
學號 姓名 年級 班級
學號 姓名 班級
0001 小紅 高三年1班
改成
學號 姓名 年級 班級
0001 小紅 高三年 1班
第二范式(屬性完全依賴于主鍵) 定義:滿足第一范式前提,當一個主鍵由多個屬性共同組成時,才會發生不符合第二范式的情況。比如有兩個屬性的主鍵,不能存在這樣的屬性,它只依賴于主鍵中的一個屬性,這就是不符合第二范式 通俗解釋:任意一個字段都只依賴表中的同一個字段?
eg:比如不符合第二范式
學生證 名稱 學生證號 學生證辦理時間 借書證名稱 借書證號 借書證辦理時間
改成2張表如下 學生證表
學生證 學生證號 學生證辦理時間
借書證表
借書證 借書證號 借書證把你拉時間
第三范式(屬性不能傳遞依賴于主屬性) 定義:滿足第二范式前提,如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。 通俗理解:一張表最多只存2層同類型信息?
eg:爸爸資料表,不滿足第三范式
爸爸 兒子 女兒 女兒的小熊 女兒的海綿寶寶
改成 爸爸信息表:
爸爸 兒子 女兒
女兒信息表
女兒 女兒的小熊 女兒的海綿寶寶