Jason ---分享,共同進(jìn)步

          激情成就夢想,努力創(chuàng)造未來
          隨筆 - 53, 文章 - 1, 評論 - 45, 引用 - 0
          數(shù)據(jù)加載中……

          數(shù)據(jù)庫設(shè)計(jì)范式

          構(gòu)造數(shù)據(jù)庫必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫中,這種規(guī)則就是范式。

          范式是符合某一種級別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求,即滿足不同的范式。
          目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎(chǔ)上進(jìn)一步滿足更多要求的稱為第二范式(2NF),其余范式以次類推。一般說來,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了。
          下面我們舉例介紹第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 

          1, 第一范式(1NF)
          在任何一個(gè)關(guān)系數(shù)據(jù)庫中,第一范式(1NF)是對關(guān)系模式的基本要求,不滿足第一范式(1NF)的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫。
          所謂第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對多關(guān)系。在第一范式(1NF)中表的每一行只包含一個(gè)實(shí)例的信息。例如,對于圖3-2 中的員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個(gè)員工的信息,一個(gè)員工的信息在表中只出現(xiàn)一次。簡而言之,第一范式就是無重復(fù)的列。 

          2, 第二范式(2NF)
          第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲各個(gè)實(shí)例的惟一標(biāo)識。如
          圖3-2 員工信息表中加上了員工編號(emp_id)列,因?yàn)槊總€(gè)員工的員工編號是惟一的,因此每個(gè)員工可以被惟一區(qū)分。這個(gè)惟一屬性列被稱為主關(guān)鍵字或主鍵、主碼。
          第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲各個(gè)實(shí)例的惟一標(biāo)識。簡而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字。

          3,第三范式(3NF)
          滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。例如,存在一個(gè)部門信息表,其中每個(gè)部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在圖3-2
          的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關(guān)的信息再加入員工信息表中。如果不存在部門信息表,則根據(jù)第三范式(3NF)也應(yīng)該構(gòu)建它,否則就會有大量的數(shù)據(jù)冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性。

          posted on 2009-02-24 14:22 agun 閱讀(592) 評論(3)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          評論

          # re: 數(shù)據(jù)庫設(shè)計(jì)范式  回復(fù)  更多評論   

          這是一個(gè)非常好的規(guī)則,但是,我往往在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候很難完全遵守這三個(gè)規(guī)則!
          2009-02-24 16:40 | 牛昆鵬

          # re: 數(shù)據(jù)庫設(shè)計(jì)范式[未登錄]  回復(fù)  更多評論   

          呵呵,這個(gè)規(guī)則是數(shù)據(jù)庫設(shè)計(jì)的基本原則,應(yīng)該說是最基本的,如果你不這樣設(shè)計(jì)數(shù)據(jù)庫,你的數(shù)據(jù)庫一定有問題,而且這些規(guī)則也是我們實(shí)現(xiàn)數(shù)據(jù)存儲的必須規(guī)則。
          2009-02-27 15:37 | agun

          # re: 數(shù)據(jù)庫設(shè)計(jì)范式[未登錄]  回復(fù)  更多評論   

          很好,學(xué)習(xí)
          2009-06-08 10:48 | aa
          主站蜘蛛池模板: 萝北县| 南京市| 饶河县| 偃师市| 平顺县| 光山县| 康乐县| 多伦县| 临清市| 株洲县| 清远市| 南宁市| 盐池县| 轮台县| 霸州市| 竹北市| 佛教| 兴义市| 霍山县| 商城县| 嘉荫县| 嘉义县| 夏津县| 安吉县| 西盟| 渝中区| 汝阳县| 两当县| 张家港市| 明星| 龙岩市| 温宿县| 阿鲁科尔沁旗| 汶上县| 美姑县| 区。| 巴彦淖尔市| 正宁县| 比如县| 桃园市| 湟中县|