qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          數(shù)據(jù)庫關(guān)系模式規(guī)范化

            在教學中,大多實例都是主鍵由一列構(gòu)成,所以也可以簡單地說主屬性與主鍵沒有什么區(qū)別。
            第三范式的定義:如果關(guān)系模式R中的所有非主屬性對任何候選關(guān)鍵字都不存在傳遞依賴,則稱關(guān)系R是屬于第三范式的。記作R 3NF。
            如:學生關(guān)系模式S1(學號,姓名,系號,系名,系地址)
            (學號)為關(guān)鍵字,因是單屬性關(guān)鍵字,不存在部份依賴問題,應(yīng)屬于第二范式。但因為:學號—>系號,系號—\>學號,系號—>系地址,因此:學號—>系地址 是通過傳遞依賴實現(xiàn)的。即候選關(guān)鍵字“學號”不直接函數(shù)決定于非主屬性“系地址”。所以此關(guān)系不屬于第三范式。應(yīng)將其分解為:
            SC(學號,姓名,系號)
            D(系號,系名,系地址)
            C(課程號,課程名,學分)
            S(學號,課程號,成績)
            設(shè)計原則:“一事一地”,即一個關(guān)系反映一個實體或一個聯(lián)系,不應(yīng)把幾樣東西混合放在一起。基本關(guān)系模式切忌“大而全”,在若干個基本關(guān)系模式組成的關(guān)系模型上,根據(jù)需要可以通過自然聯(lián)接導(dǎo)出所需要的關(guān)系。
            BCNF的定義:如果一個關(guān)系R中的所有屬性都不傳遞依賴于R的任何候選關(guān)鍵字,或者說關(guān)系R中的每個決定因數(shù)都是候選關(guān)鍵字時,則稱關(guān)系R屬于BCNF范式,記作R BCNF。
            一個滿足BCNF的關(guān)系模式有
            1.所有非主屬性對每一個碼都是完全函數(shù)依賴。
            2.所有的主屬性對每一個不包含它的碼,也是完全函數(shù)依賴。
            3.沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。
            由于RBCNF,按定義排除了任何屬性對碼的傳遞依賴與部分依賴,所以R3NF。但是若R3NF,則R未必屬于BCNF。
            下面用幾個例子說明屬于3NF的關(guān)系模式有的屬于BCNF,但有的不屬于BCNF。
            詳細信息...
            例l 關(guān)系模式SJP(S,J,P)中,S是學生,J表示課程,P表示名次。每一個學生選修每門課程的成績有一定的名次,每門課程中每一名次只有一個學生(即沒有并列名次)。由語義可得到下面的函數(shù)依賴:
            (S,J)→P ,(J,P)→S
            所以(S,J)與(J,P)都可以作為候選碼。這兩個碼各由兩個屬性組成,而且它們是相交的。這個關(guān)系模式中顯然沒有屬性對碼傳遞依賴或部分依賴。所以SJP3NF,而且除(S,J)與(J,P)以外沒有其它決定因素,所以SJPBCNF。
            例2 關(guān)系模式STJ(S,T,J)中,S表示學生,T表示教師,J表示課程。每一教師只教一門課。每門課有若干教師,某一學生選定某門課,就對應(yīng)一個固定的教師。由語義可得到如下的函數(shù)依賴。
            (S,J)→T;(S,T)→J;T→J。
            這里(S,J),(S,T)都是候選碼。
            STJ是3NF,因為沒有任何非主屬性對碼傳遞依賴或部分依賴。但STJ不是BCNF關(guān)系,因為T是決定因素,而T不包含碼。
            3NF的“不徹底”性表現(xiàn)在可能存在主屬性對碼的部分依賴和傳遞依賴。非BCNF的關(guān)系模式也可以通過分解成為BCNF。例如STJ可分解為ST(S,T)與TJ(T,J),它們都是BCNF。
            一個模式中的關(guān)系模式如果都屬于BCNF,那么在函數(shù)依賴范疇內(nèi),它已實現(xiàn)了徹底的分離,已消除了插入和刪除的異常。
            關(guān)系模式規(guī)范化小結(jié)
            目的:規(guī)范化的目的是使結(jié)構(gòu)合理,消除存儲異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。
            原則:遵從概念單一化“一事一地”的原則,即一個關(guān)系模式描述一個實體或?qū)嶓w間的一種聯(lián)系。規(guī)范的實質(zhì)就是概念單一化。
            方法:將關(guān)系模式投影分解成兩個或兩個以上的關(guān)系模式。
            要求:分解后的關(guān)系模式集合應(yīng)當與原關(guān)系模式“等價”,即經(jīng)過自然聯(lián)接可以恢復(fù)原關(guān)系而不丟失信息,并保持屬性間合理的聯(lián)系。

          posted on 2014-05-21 10:10 順其自然EVO 閱讀(529) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 威宁| 水富县| 山东省| 松江区| 滨州市| 郧西县| 壤塘县| 宁晋县| 上栗县| 屏东市| 乐至县| 志丹县| 修文县| 彝良县| 鹤山市| 大关县| 北海市| 进贤县| 壶关县| 高尔夫| 东城区| 加查县| 遂川县| 桦甸市| 手游| 巴青县| 太湖县| 香港 | 太湖县| 明光市| 哈巴河县| 青龙| 丰顺县| 特克斯县| 白玉县| 区。| 论坛| 朝阳市| 西峡县| 万宁市| 罗甸县|