形象瞭解關係型數據庫三大範式

 

接下來就對每一級範式進行一下解釋,首先是 第一範式(1NF)。
符合1NF的關係(你能夠理解爲數據表。「關係」和「關係模式」的區別,相似於面向對象程序設計中」類「與」對象「的區別。」關係「是」關係模式「的一個實例,你能夠把」關係」理解爲一張帶數據的表,而「關係模式」是這張數據表的表結構。 1NF的定義爲:符合1NF的關係中的每一個屬性都不可再分。表1所示的狀況,就不符合1NF的要求。

 

表1

實際上, 1NF是全部關係型數據庫的最基本要求,你在關係型數據庫管理系統(RDBMS),例如SQL Server,Oracle,MySQL中建立數據表的時候,若是數據表的設計不符合這個最基本的要求,那麼操做必定是不能成功的。也就是說,只要在RDBMS中已經存在的數據表,必定是符合1NF的。若是咱們要在RDBMS中表現表中的數據,就得設計爲 表2的形式:

 

表2

可是僅僅符合1NF的設計,仍然會存在數據冗餘過大,插入異常,刪除異常,修改異常的問題,例如對於 表3中的設計:

 

表3
注…………
  1. 每一名學生的學號、姓名、系名、系主任這些數據重複屢次。每一個系與對應的系主任的數據也重複屢次——數據冗餘過大
  2. 假如學校新建了一個系,可是暫時尚未招收任何學生(好比3月份就新建了,但要等到8月份才招生),那麼是沒法將系名與系主任的數據單獨地添加到數據表中去的 (注1)——插入異常

    注1:根據三種關係完整性約束中實體完整性的要求,關係中的碼(注2)所包含的任意一個屬性都不能爲空,全部屬性的組合也不能重複。爲了知足此要求,圖中的表,只能將學號與課名的組合做爲碼,不然就沒法惟一地區分每一條記錄。

    注2:碼:關係中的某個屬性或者某幾個屬性的組合,用於區分每一個元組(能夠把「元組」理解爲一張表中的每條記錄,也就是每一行)
  3. 假如將某個系中全部學生相關的記錄都刪除,那麼全部系與系主任的數據也就隨之消失了(一個系全部學生都沒有了,並不表示這個系就沒有了)。——刪除異常
  4. 假如李小明轉系到法律系,那麼爲了保證數據庫中數據的一致性,須要修改三條記錄中系與系主任的數據。——修改異常
正由於僅符合1NF的數據庫設計存在着這樣那樣的問題,咱們須要提升設計標準,去掉致使上述四種問題的因素,使其符合更高一級的範式(2NF),這就是所謂的「規範化」。
相關文章
相關標籤/搜索