qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

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

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

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


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


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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 疏勒县| 临沭县| 汉源县| 庆云县| 南陵县| 青铜峡市| 茶陵县| 尚志市| 建湖县| 东乡族自治县| 平远县| 鲁甸县| 绵竹市| 贵阳市| 信宜市| 绥宁县| 达孜县| 平南县| 贵港市| 山东省| 双鸭山市| 白沙| 田阳县| 集安市| 斗六市| 儋州市| 阳高县| 那坡县| 维西| 永嘉县| 天峨县| 隆尧县| 偃师市| 柞水县| 河东区| 东光县| 阜新市| 营口市| 岢岚县| 出国| 彩票|