版權聲明:本文爲博主原創文章,歡迎擴散,擴散請務必註明出處。
關係型數據庫設計是很重要的一門學科,設計的好壞與否,直接影響到後續業務性能。遵從數據庫方式進行數據庫設計,將極大程度上是的數據冗餘變少,後續整個數據庫的性能,維護與管理都將變得輕鬆。設計數據庫結構有六種範式,而最常用的莫過於一二三範式。本文將主要描述這三種範式。
一、第一範式(1NF)
1NF是對屬性的原子性約束,要求屬性(列)具有原子性,不可再分解。 關係數據模型要求所有的關係模式必須滿足第一範式。
非第一範式的例子
轉換爲第一範式
二、第二範式(2NF)
符合1NF,每一條記錄存在惟一性約束,即實體的惟一性。 數據表裏的所有屬性(列)都要該表的主鍵有完全依賴關係。 如果有屬性列只和主鍵的一部分(複合主鍵)有關的話,則應將其獨立出來變成另一個數據表。 假定需要設計學生選課表,需要考慮以下信息: 學生有那些基本信息? 學生選了哪些課,成績是什麼? 每個課的學分是多少? 學生屬於那個系,系的基本信息是什麼?
不符合2NF示例
改進後的符合2NF示例
三、第三範式(3NF)
滿足1NF,2NF且非主鍵字段之間不能有依賴關係或者表上不存在由非主鍵可推導出屬性列。
三範式示例:
改進後的三範式