MySQL三大范式是設計關系型數(shù)據(jù)庫模型的基本原則,其目的是為了保證數(shù)據(jù)的正確性和一致性。根據(jù)其原則,一個優(yōu)秀的數(shù)據(jù)庫應該滿足以下三個范式:
第一范式(1NF):一個數(shù)據(jù)庫表中的每一列都應該是原子性的,即一個數(shù)據(jù)項不能再分解。比如,一張學生表中,一個“生日”列中包含了“年”、“月”和“日”的信息,則這個表不符合第一范式。
1 Tom 1997-09-01 Male
上述表符合第一范式,因為其每一列都是原子性的。
第二范式(2NF):一個數(shù)據(jù)庫表中如果存在關聯(lián)關系,則一定要有一個主鍵。比如,一個學生課程表,有“學號”、“課程名”、“學分”和“成績”的四列,而“課程名”和“學分”兩列是共同確定成績的,那么這個表就不符合第二范式。
1 MySQL 3 85
上述表不符合第二范式,因為沒有主鍵。
第三范式(3NF):一個數(shù)據(jù)庫表中的非主鍵列都應該與主鍵有直接依賴關系。比如,一個購物訂單表里有“訂單號”、“商品名稱”、“商品價格”、“商品描述”、“用戶名”和“用戶地址”六列,其中“用戶名”和“用戶地址”兩列與主鍵“訂單號”無直接關系,則這個表就不符合第三范式。
1 iPhone 12 8699 A14芯片,5G全網(wǎng)通 Tom Beijing
上述表不符合第三范式,因為“用戶名”和“用戶地址”兩列與主鍵“訂單號”無直接關系。