• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      對(duì)數(shù)據(jù)庫(kù)范式的分析與應(yīng)用

      2018-05-07 05:45李小蓮
      電腦知識(shí)與技術(shù) 2018年8期
      關(guān)鍵詞:范式關(guān)系數(shù)據(jù)庫(kù)

      李小蓮

      摘要:文章首先介紹了關(guān)系、關(guān)系模式、函數(shù)依賴等相關(guān)概念,然后針對(duì)關(guān)系數(shù)據(jù)庫(kù)的第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)以及BCNF范式做了詳細(xì)分析,使用簡(jiǎn)明清晰的方法幫助大家理解范式的定義,并且通過(guò)實(shí)例來(lái)說(shuō)明各范式需要滿足的函數(shù)依賴關(guān)系。

      關(guān)鍵詞:函數(shù)依賴;關(guān)系;數(shù)據(jù)庫(kù);范式

      中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)08-0007-02

      數(shù)據(jù)庫(kù)有關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù),現(xiàn)在應(yīng)用廣泛的流行的數(shù)據(jù)庫(kù)就是關(guān)系型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型的基礎(chǔ)上的,所以我們首先需要了解關(guān)系、關(guān)系模式以及關(guān)系模式里屬性間的函數(shù)依賴關(guān)系。

      關(guān)系用來(lái)表示現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系,它的邏輯結(jié)構(gòu)其實(shí)就是一張二維表。在關(guān)系模式R(U,F(xiàn))中R是關(guān)系名,U為一組屬性,F(xiàn)為屬性組U上的一組數(shù)據(jù)依賴。數(shù)據(jù)依賴是一個(gè)關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。數(shù)據(jù)依賴主要有兩種類型:函數(shù)依賴(FD)和多值依賴(MVD)。那到底什么是函數(shù)依賴呢?它是這么定義的:設(shè)R(U)是一個(gè)屬性集U上的關(guān)系模式,X和Y是U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)確定Y”或“Y函數(shù)依賴于X”,記作X→Y。舉個(gè)實(shí)際例子:教師信息表(員工編號(hào),姓名,所在系別,教齡),其中X代表屬性集(員工編號(hào)),它只有一個(gè)屬性。Y代表屬性集(姓名,所在系別,教齡)。當(dāng)X的屬性值相等時(shí),Y值也是相等的,即若員工編號(hào)相同,則其他屬性“姓名,所在系別,教齡”也都一定相同。故稱此關(guān)系模式中x函數(shù)確定Y,X→Y,也就是:?jiǎn)T工編號(hào)一姓名,所在系別,教齡。

      1各范式概念剖析及實(shí)例分析

      關(guān)系數(shù)據(jù)庫(kù)一共有六種,按屬性間依賴關(guān)系可以分為第一范式、第二范式、第三范式、BCNF范式、第四范式、第五范式。要想設(shè)計(jì)出好的數(shù)據(jù)庫(kù),需要遵循規(guī)范化理論,使數(shù)據(jù)庫(kù)一步一步達(dá)到所需規(guī)范化的要求。本文主要剖析前面五種范式的相關(guān)概念,捋清各范式要求的屬性間的依賴關(guān)系并結(jié)合實(shí)際的應(yīng)用例子來(lái)說(shuō)明。

      1.1第一范式(1NF)

      第一范式要求數(shù)據(jù)庫(kù)表中的屬性不可再分,這是關(guān)系數(shù)據(jù)庫(kù)必須滿足的條件。在平時(shí)的工作中,常常會(huì)見(jiàn)到如下表(表1)中這樣的數(shù)據(jù)表。客戶有一個(gè)手機(jī)號(hào),還有一個(gè)辦公電話,但放到數(shù)據(jù)庫(kù)設(shè)計(jì)中,這就不滿足第一范式,數(shù)據(jù)項(xiàng)“聯(lián)系方式”這一項(xiàng)有兩個(gè)數(shù)據(jù)項(xiàng)。要使其滿足第一范式則應(yīng)將聯(lián)系方式分解為“手機(jī)”和“公司電話”兩個(gè)數(shù)據(jù)項(xiàng)。

      1.2第二范式(2NF)

      第二范式的定義:若關(guān)系模式R∈1NF,并且每一個(gè)非主屬性都完全函數(shù)依賴于任何一個(gè)候選碼,則RE2NF。請(qǐng)注意這里的依賴關(guān)系是完全函數(shù)依賴,是不允許部分函數(shù)依賴,但是傳遞函數(shù)依賴是可以存在的。下面分情況討論:

      1.2.1關(guān)系模式中不存在組合候選鍵

      關(guān)系模式中不存在組合候選鍵,即每個(gè)候選鍵只有一個(gè)屬性,這時(shí)每個(gè)非主屬性都完全函數(shù)依賴任何一個(gè)碼。

      例:關(guān)系模式用戶表(用戶號(hào),身份證號(hào),姓名,年齡,家庭住址,家庭成員數(shù))。其中用戶號(hào),身份證號(hào)都能唯一標(biāo)識(shí)用戶,都是此數(shù)據(jù)庫(kù)表的候選鍵,故兩個(gè)屬性也都是主屬性,其他非主屬性都完全函數(shù)依賴主屬性用戶號(hào)和身份證號(hào)。即

      1)用戶號(hào)→姓名,年齡,家庭住址,家庭成員數(shù);

      2)身份證號(hào)→姓名,年齡,家庭住址,家庭成員數(shù)。

      故此數(shù)據(jù)庫(kù)表滿足第二范式。顯然,只含單關(guān)鍵字的碼的數(shù)據(jù)庫(kù)表一定是滿足第二范式的。

      1.2.2關(guān)系模式表中有組合鍵作為候選鍵

      下面給出兩個(gè)成績(jī)關(guān)系模式表來(lái)對(duì)照分析:

      例:成績(jī)表1(學(xué)號(hào),課程號(hào),成績(jī),)。其中(學(xué)號(hào),課程號(hào))為組合候選碼,非主屬性“成績(jī)”完全函數(shù)依賴候選碼(學(xué)號(hào),課程號(hào)),即(學(xué)號(hào),課程號(hào))→成績(jī),此數(shù)據(jù)庫(kù)表滿足第二范式。

      成績(jī)表2(學(xué)號(hào),姓名,課程號(hào),成績(jī))。其中(學(xué)號(hào),課程號(hào))為組合候選鍵,存在如下決定關(guān)系:

      1)(學(xué)號(hào),課程號(hào))→姓名、成績(jī)

      2)學(xué)號(hào)→姓名

      可以看到非主屬性“姓名”不完全函數(shù)依賴于候選鍵(學(xué)號(hào),課程號(hào)),而是部分函數(shù)依賴候選鍵(學(xué)號(hào),課程號(hào)),故此關(guān)系表不滿足第二范式。如果要使其滿足第二范式,則需要把上表(成績(jī)表2)拆分為兩張表:學(xué)生表(學(xué)號(hào),姓名)和成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī)),從而消除非主屬性“姓名”對(duì)候選鍵的部分函數(shù)依賴。所以,第二范式其實(shí)就是需要消除表中非主屬性對(duì)候選鍵的部分函數(shù)依賴。

      1.3第三范式(3NF)

      例:關(guān)系模式商戶信息表(商戶編號(hào),姓名,年齡,商戶單位,單位電話,單位地址),存在下列依賴關(guān)系:

      1)商戶編號(hào)→商戶單位

      2)商戶單位→單位電話,單位地址

      3)商戶編號(hào)→單位電話,單位地址

      即存在非主屬性“單位電話”、“單位地址”對(duì)候選碼“商戶編號(hào)”的傳遞函數(shù)依賴,所以上面商戶信息表不滿足第三范式。要使其滿足第三范式,必須對(duì)表進(jìn)行拆分。對(duì)原關(guān)系表進(jìn)行規(guī)范化,將上表拆分為商戶信息表(商戶編號(hào),姓名,年齡)和商戶單位信息表(商戶單位,單位電話,單位地址)。拆分后的兩個(gè)表都不存在非主屬性對(duì)碼的傳遞函數(shù)依賴,都滿足第三范式。

      1.4 BCNF范式

      例:某連鎖超市有多個(gè)商店,一個(gè)商店有多名職工,一名職工只在一個(gè)商店工作,每個(gè)商店有多種商品,每個(gè)員工負(fù)責(zé)銷售幾種商品,同一種商品可以存放在不同的商店。設(shè)有下列關(guān)系模式(商店編號(hào),商品編號(hào),員工號(hào),數(shù)量),則存在以下函數(shù)依賴關(guān)系:

      1)(商店編號(hào),商品編號(hào))→員工號(hào),數(shù)量

      2)(商品編號(hào),員工號(hào))→商店編號(hào),數(shù)量

      3)員工號(hào)→商店編號(hào)

      由以上依賴關(guān)系可以看出該關(guān)系模式滿足第三范式。組合鍵(商店編號(hào),商品編號(hào))和(商品編號(hào),員工號(hào))都是它的碼。我們?cè)賮?lái)仔細(xì)觀察一下它是否滿足BNCF范式。(商店編號(hào),商品編號(hào))→員工號(hào),員工號(hào)→商店編號(hào),這表明主屬性“商店編號(hào)”對(duì)碼(商店編號(hào),商品編號(hào))存在傳遞函數(shù)依賴,所以它不符合BCNF范式。

      雖然不滿足BCNF范式,也會(huì)導(dǎo)致一些冗余,但是將關(guān)系模式分解成滿足BCNF范式的關(guān)系模式后可能會(huì)丟掉原來(lái)的函數(shù)依賴關(guān)系,所以,我們不會(huì)要求一定要滿足BCNF范式,在實(shí)際應(yīng)用中視具體隋況而論,大多數(shù)情況下滿足第三范式就符合應(yīng)用要求了。

      1.5第四范式(4NF)

      前面的范式討論都是在函數(shù)依賴的范圍內(nèi)討論,到了第四范式,討論范圍就擴(kuò)大了,涉及的是多值依賴,所以我們先來(lái)了解什么是多值依賴。

      多值依賴:設(shè)R(U)是屬性集u上的一個(gè)關(guān)系模式。X,Y,Z是U的子集,并且Z=U-X-Y。關(guān)系模式R(U)中多值依賴X→→Y成立,當(dāng)且僅當(dāng)對(duì)R(U)的任一關(guān)系r,給定的一對(duì)(x,z)值,有一組Y的值,這組值僅僅決定于x值而與z值無(wú)關(guān)。

      在這個(gè)客戶信息表中,客戶有多個(gè)聯(lián)系地址和多個(gè)聯(lián)系電話,這時(shí),此表就違反了第四范式。在這種情況下,此表的設(shè)計(jì)會(huì)帶來(lái)很大維護(hù)上的麻煩,解決問(wèn)題的方法就是設(shè)計(jì)新表——聯(lián)系方式表,這樣就不會(huì)違反第四范式了。下面進(jìn)行規(guī)范化設(shè)計(jì),把此表進(jìn)行分解為客戶信息表(表3)和客戶聯(lián)系方式表(表4),使其滿足第四范式。

      2結(jié)語(yǔ)

      范式是我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)時(shí)用到的一種方法,一般情況下,范式級(jí)別越高,數(shù)據(jù)庫(kù)結(jié)構(gòu)就會(huì)越清晰合理。在實(shí)際的數(shù)據(jù)庫(kù)應(yīng)用中,要去靈活地運(yùn)用數(shù)據(jù)庫(kù)的四大范式及BCNF范式,有些數(shù)據(jù)庫(kù)只要滿足第三范式就夠用,不必強(qiáng)行去滿足BC-NF范式、第四范式。要對(duì)關(guān)系數(shù)據(jù)庫(kù)理解透徹,首先要理解數(shù)學(xué)中的集合、函數(shù)等概念,關(guān)系數(shù)據(jù)庫(kù)理論是依托數(shù)學(xué)中的集合論,在分析范式定義時(shí),必須先數(shù)學(xué)中的相關(guān)概念熟悉。其次,要熟悉完全函數(shù)依賴、部分函數(shù)依賴、傳遞函數(shù)依賴、范式定義這些數(shù)據(jù)庫(kù)概念。最后要結(jié)合實(shí)例來(lái)理解概念,讓概念與實(shí)例對(duì)應(yīng)聯(lián)系起來(lái),一切的分析還是為實(shí)際應(yīng)用做準(zhǔn)備的。

      注解:

      1.候選碼:即候選鍵,簡(jiǎn)稱碼或鍵。

      猜你喜歡
      范式關(guān)系數(shù)據(jù)庫(kù)
      范式空白:《莫失莫忘》的否定之維
      孫惠芬鄉(xiāng)土寫作批評(píng)的六個(gè)范式
      管窺西方“詩(shī)辯”發(fā)展史的四次范式轉(zhuǎn)換
      保加利亞媒體:飯局是中國(guó)搞定“關(guān)系”場(chǎng)所
      泌阳县| 万源市| 江永县| 泰州市| 资溪县| 灵山县| 临夏县| 塔河县| 阿克苏市| 高清| 辽源市| 西乡县| 舒城县| 洛阳市| 彩票| 陇南市| 连南| 齐河县| 若羌县| 阿克陶县| 纳雍县| 宜君县| 磴口县| 乐安县| 商洛市| 库伦旗| 石景山区| 上蔡县| 光山县| 古浪县| 阿坝县| 深水埗区| 兰州市| 元江| 岳普湖县| 威远县| 固阳县| 霍林郭勒市| 建阳市| 漠河县| 绥滨县|