說說資料庫的三範式(面試題)

來源:互聯網
上載者:User

第一範式(1NF)無重複的列(原子性)

第一範式(1NF)是指資料庫表的每一列都是不可分割的基本資料項目。所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項目,而不能是集合,數組,記錄等非原子資料項目。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。

說明:在任何一個關聯式資料庫中,第一範式(1NF)是對關係模式的基本要求,不滿足第一範式(1NF)的資料庫就不是關聯式資料庫。

例如,如下的資料庫表是符合第一範式的:

欄位1

欄位2

欄位3

欄位4

 而這樣的資料庫表是不符合第一範式的:

欄位1

欄位2

欄位3

欄位4

 

 

欄位3.1

欄位3.2

 

 

第二範式(2NF)屬性完全依賴於主鍵

第二範式(2NF)就是非主屬性完全依賴於主關鍵字。

舉例子說明:

假定選課關係表為SelectCourse(學號, 姓名, 年齡, 課程名稱, 成績, 學分),關鍵字為組合關鍵字(學號, 課程名稱),因為存在如下決定關係:

(學號, 課程名稱) → (姓名, 年齡, 成績, 學分)

這個資料庫表不滿足第二範式,因為存在如下決定關係:

(課程名稱) → (學分)

(學號) → (姓名, 年齡)

即存在組合關鍵字中的欄位決定非關鍵字的情況。

由於不符合2NF,這個選課關係表會存在如下問題:

(1) 資料冗餘:

同一門課程由n個學生選修,"學分"就重複n-1次;同一個學生選修了m門課程,姓名和年齡就重複了m-1次。

(2) 更新異常:

若調整了某門課程的學分,資料表中所有行的"學分"值都要更新,否則會出現同一門課程學分不同的情況。

(3) 插入異常:

假設要開設一門新的課程,暫時還沒有人選修。這樣,由於還沒有"學號"關鍵字,課程名稱和學分也無法記錄入資料庫。

(4) 刪除異常:

假設一批學生已經完成課程的選修,這些選修記錄就應該從資料庫表中刪除。但是,與此同時,課程名稱和學分資訊也被刪除了。很顯然,這也會導致插入異常。

符合第二範式的庫表設計應該如下:把選課關係表SelectCourse改為如下三個表:

學生:Student(學號, 姓名, 年齡);

課程:Course(課程名稱, 學分);

選課關係:SelectCourse(學號, 課程名稱, 成績)。

  第三範式(3NF)屬性不依賴於其它非主屬性
在1NF基礎上,任何非主屬性不依賴於其它非主屬性[在2NF基礎上消除傳遞依賴] 第三範式(3NF)是第二範式(2NF)的一個子集,即滿足第三範式(3NF)必須滿足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個關係中不包含已在其它關係已包含的非主關鍵字資訊。例如,存在一個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。那麼在員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。如果不存在部門資訊表,則根據第三範式(3NF)也應該構建它,否則就會有大量的資料冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性,也就是在滿足2NF的基礎上,任何非主屬性不得傳遞依賴於主屬性。 由一下例子說明:

學生表Student(學號,姓名,年齡,性別,系別,系辦地址、系辦電話),關鍵字為單一關鍵字"學號",因為存在如下決定關係: (學號)→ (姓名,年齡,性別,系別,系辦地址、系辦電話 但是還存在下面的決定關係 (學號) → (所在系辦)→(系辦地點,系辦電話) 即存在非關鍵字段"系辦地點"、"系辦電話"對關鍵字段"學號"的傳遞函數依賴。 它也會存在資料冗餘、更新異常、插入異常和刪除異常的情況。 根據第三範式把學生關係表分為如下兩個表就可以滿足第三範式了: 學生:(學號,姓名,年齡,性別,系別); 系別:(系別,系辦地址、系辦電話)。 上面的資料庫表就是符合1NF,2NF,3NF範式的,消除了資料冗餘、更新異常、插入異常和刪除異常。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.