1. 第一范式
確保數據表中每列(字段)的原子性。
如果數據表中每個字段都是不可再分的最小數據單元,則滿足第一范式。
例如:user用戶表,包含字段id,username,password
2. 第二范式
在第一范式的基礎上更進一步,目標是確保表中的每列都和主鍵相關。
如果一個關系滿足第一范式,並且除了主鍵之外的其他列,都依賴於該主鍵,則滿足第二范式。
例如:一個用戶只有一種角色,而一個角色對應多個用戶。則可以按如下方式建立數據表關系,使其滿足第二范式。
user用戶表,字段id,username,password,role_id
role角色表,字段id,name
用戶表通過角色id(role_id)來關聯角色表
3. 第三范式
在第二范式的基礎上更進一步,目標是確保表中的列都和主鍵直接相關,而不是間接相關。
例如:一個用戶可以對應多個角色,一個角色也可以對應多個用戶。則可以按如下方式建立數據表關系,使其滿足第三范式。
user用戶表,字段id,username,password
role角色表,字段id,name
user_role用戶-角色中間表,id,user_id,role_id
像這樣,通過第三張表(中間表)來建立用戶表和角色表之間的關系,同時又符合范式化的原則,就可以稱為第三范式。
4. 反范式化
反范式化指的是通過增加冗余或重復的數據來提高數據庫的讀性能。
例如:在上例中的user_role用戶-角色中間表增加字段role_name。
反范式化可以減少關聯查詢時,join表的次數。
---------------------
作者:lamp_yang_3533
來源:CSDN
原文:https://blog.csdn.net/lamp_yang_3533/article/details/50765183
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!