第一範式、第二範式、第三範式

範式

  範式(Paradigm)是符合某一種級別的關係模式的集合。關係數據庫中的關係必須知足必定的要求,知足不一樣程度要求的爲不一樣範式。數據庫

  目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、Boyce-Codd範式(BCNF)、第四範式(4NF)和第五範式(5NF)。
知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多要求的稱爲第二範式(2NF),其他範式以次類推。通常說來,數據庫只需知足第三範式(3NF)就好了。

1、第一範式

列不可分

  所謂第一範式(1NF)是指數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。若是出現重複的屬性,就可能須要定義一個新的實體,新的實體由重複的屬性構成,新實體與原實體之間爲一對多關係。在第一範式(1NF)中表的每一行只包含一個實例的信息。
  簡而言之,第一範式就是無重複的列。第一範式(1NF) [2]是對關係模式的基本要求,不知足第一範式(1NF)的數據庫就不是關係數據庫。

2、第二範式

主鍵依賴

  第二範式(2NF)要求實體的屬性徹底依賴於主關鍵字。所謂徹底依賴是指不能存在僅依賴主關鍵字一部分的屬性。若是存在,那麼這個屬性和主關鍵字的這一部分應該分離出來造成一個新的實體,新實體與原實體之間是一對多的關係。爲實現區分一般須要爲表加上一個列,以存儲各個實例的惟一標識。
  簡而言之,第二範式就是非主屬性非部分依賴於主關鍵字。知足第二範式(2NF)必須先知足第一範式(1NF)。
不符合第二範式的例子:
貨物類型 貨物ID 貨物名稱 注意事項
瓷碗 1 白色瓷碗 易碎品
瓷碗 2 青花瓷碗 易碎品
瓷碗 3 雕花瓷碗 易碎品
三合板 1 普通三合板 易燃物品,注意防火
  在該表中主鍵爲(貨物類型,貨物ID),貨物名稱字段徹底依賴於這個主鍵,換句話說,貨物的名稱徹底是取決於這個主鍵的值的。但「注意事項」這一列,僅依賴於一個主鍵中」貨物類型「這一個屬性。根據第二範式規定,既然表中存在一個對主鍵不是徹底依賴的字段,那麼咱們就能夠肯定,該表不符合第二範式。

3、第三範式

表不可分

  知足第三範式(3NF) [2]必須先知足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。spa

  簡而言之,第三範式就是屬性不依賴於其它非主屬性。orm

舉例table

  存在一個部門信息表,其中每一個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼員工信息表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。若是不存在部門信息表,則根據第三範式(3NF)也應該構建它,不然就會有大量的數據冗餘。class

相關文章
相關標籤/搜索