範式是關係數據庫理論的基礎,也是咱們在設計數據庫結構過程當中所要遵循的規則和指導方法。目前有跡可尋的共有8種範式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。一般所用到的只是前三個範式,即:第一範式(1NF),第二範式(2NF),第三範式(3NF)。數據庫
首先看下一些基本概念
1、基礎概念
要理解範式,首先必須對知道什麼是關係數據庫,若是你不知道,我能夠簡單的不能再簡單的說一下:關係數據庫就是用二維表來保存數據。表和表之間能夠……(省略10W字)。
而後你應該理解如下概念:spa
◆ 第一範式(1NF):強調的是列的原子性,即列不可以再分紅其餘幾列。設計
我想這個應該很好理解,就是一個列中不能重現出現屬性。好比電話這個列中,分座機和手機,你不能把他們放在同一個列中。blog
◆ 第二範式(2NF):首先是 1NF,另外包含兩部份內容,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須徹底依賴於主鍵,而不能只依賴於主鍵的一部分。 基礎
一我的同時訂幾個房間,就會出來一個訂單號多條數據,這樣子聯繫人都是重複的,就會形成數據冗餘。咱們應該把他拆開來。方法
◆ 第三範式(3NF):首先是 2NF,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的狀況。 im
好比Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)數據
這樣一個表結構,就存在上述關係。 學號--> 所在院校 --> (院校地址,院校電話)img
這樣的表結構,咱們應該拆開來,以下。co
(學號,姓名,年齡,性別,所在院校)--(所在院校,院校地址,院校電話)
第二範式(2NF)和第三範式(3NF)的概念很容易混淆,區分它們的關鍵點在於,2NF:非主鍵列是否徹底依賴於主鍵,仍是依賴於主鍵的一部分;3NF:非主鍵列是直接依賴於主鍵,仍是直接依賴於非主鍵列。