數據庫基本概念(三)

1、數據庫基本概念

一、關係數據庫規範化理論數據庫

  爲使數據庫設計的合理可靠、簡單實用,長期以來,造成了關係數據庫設計理論,即規範化理論。數據庫設計

(1)函數依賴

  • 定義:在表1.1中,描述學生信息時,包括學生的學號、姓名、性別、專業、總學分和備註屬性,因爲一個學號對應一名學生,肯定了學生學號,一名學生的姓名、性別、專業等屬性也就肯定下來,這說明學生姓名、性別、專業、總學分和備註對學生的學號有依賴性,在關係數據庫中稱爲函數依賴。即:所謂函數依賴是指關係中一個或一組屬性的值能夠決定其它屬性的值。函數依賴正象一個函數 y = f(x) 同樣,x的值給定後,y的值也就惟一地肯定了。  
  • 函數依賴的種類:
    1)徹底函數依賴和部分函數依賴:

    徹底函數依賴:在一個關係中,若某個非主屬性數據項依賴於所有關鍵字稱之爲徹底函數依賴。函數

    好比:有一個表,有以下屬性:學生ID,學生姓名,所修課程ID,課程名稱,成績性能

    徹底依賴:(學生ID,所修課程ID)→成績優化

    成績既不能單獨依賴於學生ID,也不能單獨依賴於所修課程ID,所以成績徹底函數依賴於關鍵字。設計

    (學生ID,所修課程ID)→學生姓名blog

    部分依賴:學生ID→學生姓名io

    學生姓名能夠依賴於關鍵字的一個主屬性——學生ID,所以學生姓名部分函數依賴於(學生ID,所修課程ID)。table

   2)平凡函數依賴和非平凡函數依賴基礎

    平凡函數依賴:當關系中屬性集合Y是屬性集合X的子集時,存在函數依賴X→Y,即一組屬性函數決定它的全部子集,這種函數依賴稱爲平凡函數依賴。

    例如:在在關係學生課程表SC(學生號Sno,課程號 Cno,成績 Grade)中,

    (Sno, Cno) → Sno ,(Sno, Cno) → Cno

    非平凡函數依賴:當關系中屬性集合Y不是屬性集合X的子集時,存在函數依賴X→Y,則稱這種函數依賴爲非平凡函數依賴。

    例如:(Sno, Cno) → Grade

     3)傳遞函數依賴

    傳遞函數依賴:設X,Y,Z是關係R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴於X。

    例:關係S1(學號,系名,系主任)

    學號 → 系名,系名 → 系主任,而且 系名 -\→ 學號,因此 學號 → 系主任 爲傳遞函數依賴

(2)範式理論

  範式是數據庫設計中一個重要的過程,經過它能夠優化數據庫設計,避免一些問題,能夠減小數據冗餘,能夠改進數據庫總體組織,能夠加強數據的一致性,能夠增長數據庫設計的靈活性。所以,在肯定設計數據庫以前,還需對數據庫中的表進行範式處理,以確保數據庫聽從適當的範式,從而使設計的數據庫更加規範。

  目前關係數據庫有6種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、第四範式(4NF)、第五範式(5NF)和第六範式(6NF)。知足最低要求的是第一範式(1NF)。在第一範式的基礎上知足更多要求的範式稱爲第二範式(2NF),其他的範式以此類推。通常來講,數據庫只須要知足第三範式(3NF)便可。

  • 第一範式

  若是關係模式R的每一個關係r的屬性都是不可分的數據項,那麼就稱R是第一範式的模式。第一範式是設計數據庫表的最低要求,其最主要的特色是實體的屬性不能再分,映射到表中,就是列(或字段)不能再分。

  即:一個表中的列是不可再分的(即列的原子性)。

如表1.2,聯繫範式,對於學號‘1001’學生來講,‘聯繫方式’列包含電話和郵箱,能夠再分,不符合第一範式要求。

  如表1.3,列不可再分,符合了第一範式要求。

  • 第二範式

  若是關係模式R知足第一範式,而且R得全部非主屬性都徹底依賴於R的每個候選關鍵屬性,稱R知足第二範式,簡記爲2NF。

  如表1.3,姓名和選修課有對於關係,可是姓名和教材沒有對應關係,選修課程和教材有對對應關係,從而該表不符合第二範式標準。

  將表修改後如表1.4和1.5,符合第二範式標準。

                       

  • 第三範式

  若是關係模式R是2NF,且關係模式R(U,F)中的全部非主屬性對任何候選鍵都不存在傳遞依賴,則成關係R是屬於第三範式的模式。

  如表1.6知足2NF,可是知道班級後必然能知道該學生 屬於哪一個系,因此存在傳遞依賴,不符合3NF規範,因此講班級和系別屬性拆分如表1.7,和1.8,從而符合3NF標準。

表1.6

學號 姓名 班級 系別
1001 張三 計算機科學與技術1班 計算機系
1002 李四 會計1班 經管系

 

表1.7
學號 姓名 班級
1001 張三 計算機科學與技術1班
1002 李四 會計1班

 

表1.8
班級 系別
計算機科學與技術1班 計算機系
會計1班 經管系

  三大範式只是通常設計數據庫的基本理念,能夠創建冗餘較小、結構合理的數據庫。若是有特殊狀況,固然要特殊對待,數據庫設計最重要的是看需求跟性能,需求>性能>表結構。因此不能一味的去追求範式創建數據庫。

相關文章
相關標籤/搜索