三級數(shù)據(jù)庫第七章考試要點(diǎn)

字號:

第七章
    一、什么是“不好”的關(guān)系模式
    關(guān)系模式有如下“毛病”:
    (1)數(shù)據(jù)冗余。
    (2)更新異常(不一致性的危險(xiǎn))。
    (3)插入異常。如果某供應(yīng)者沒有供應(yīng)任何貨物,則我們無法記錄他的名稱和地址。
    (4)刪除異常。如果一個(gè)供應(yīng)者供應(yīng)的所有貨物都被刪除,則我們無可奈何地丟失了該供應(yīng)者的名稱和地址。
    二、函數(shù)依賴(一)函數(shù)依賴的定義
    設(shè)R(A1 ,A2 ,…,An )是一個(gè)關(guān)系模式,X和Y是{A1 ,A2 ,…,An }的子集,若只要關(guān)系r是關(guān)系模式R的可能取值,則r中不可能有兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)決定Y”,或“Y函數(shù)依賴于X,記作X→Y。
    注意,函數(shù)依賴X→Y的定義要求關(guān)系模式R的任何可能的r都能滿足上述條件。
    (二)函數(shù)依賴的邏輯蘊(yùn)含
    設(shè)R〈U,F(xiàn)〉是一個(gè)關(guān)系模式,X,Y是U中屬性組,若在R〈U,F(xiàn)〉的任何一個(gè)滿足F函數(shù)依賴的關(guān)系r上,都有函數(shù)依賴X→Y成立,則稱F邏輯蘊(yùn)含X→Y。
    (三)碼
    設(shè)K為關(guān)系模式R中的屬性或?qū)傩越M,若K→U在F+中,而找不到K的任何一個(gè)真子集K′,能使K′→U在F+中,則稱K為關(guān)系模式R的候選碼。當(dāng)候選碼多于一個(gè)時(shí),選定其中一個(gè)做主碼。
    包含在任何一個(gè)候選碼中的屬性叫做主屬性。不包含在任何候選碼中的屬性叫做非主屬性。最簡單的情況,單個(gè)屬性是碼。最極端的情況,整個(gè)屬性組是碼,稱做全碼。
    (四)函數(shù)依賴的公理系統(tǒng)
    設(shè)F是屬性組U上的一組函數(shù)依賴,于是有如下推理規(guī)則:
    增廣律:若X→Y為F所邏輯蘊(yùn)含,且Z〈U,則XZ→YZ為F所邏輯蘊(yùn)含。
    傳遞律:若X→Y及Y→Z為F所邏輯蘊(yùn)含,則X→Z為F所邏輯蘊(yùn)含。注意:由自反律所得到的函數(shù)依賴均是平凡的函數(shù)依賴,事實(shí)上自反律的應(yīng)用只依賴于U,不依賴于F。
    根據(jù)Armstrong公理系統(tǒng)的3條推理規(guī)則可以得到下面3條很有用的推理規(guī)則:
    (1)合并規(guī)則:由X→Y,X→Z,有X→YZ。
    (2)偽傳遞規(guī)則:由X→Y,WY→Z,有XW→Z。
    三、1NF、2NF、3NF、BCNF(一)第一范式(1NF)及進(jìn)一步規(guī)范化
    關(guān)系模式需要滿足一定的條件,不同程度的條件稱做不同的范式。最低要求的條件是元組的每個(gè)分量必須是不可分的數(shù)據(jù)項(xiàng),這叫做第一范式,簡稱1NF,是最基本的規(guī)范化,在第一范式的基礎(chǔ)上進(jìn)一步增加一些條件,則為第二范式。以此類推,還有第三范式,Boyce-Codd范式,等等。函數(shù)依賴X→Y不僅給出了對關(guān)系的值的限制,而且給出了數(shù)據(jù)庫中應(yīng)該存儲(chǔ)的某種聯(lián)系:從X的值應(yīng)該知道與之聯(lián)系的惟一Y值。若X不含碼,則有麻煩了。碼是一個(gè)元組區(qū)別于其他元組的依據(jù),同時(shí)也是一個(gè)元組賴以存在的條件。在一個(gè)關(guān)系中,不可能存在兩個(gè)不同的元組在碼屬性上取值相同,也不可能存在碼或碼的一部分為空值的元組。若某關(guān)系模式的屬性間有函數(shù)依賴X→Y,而X又不包含碼,那么在具有相同X值的所有元組中,某個(gè)特定的Y值就會(huì)重復(fù)出現(xiàn),這是數(shù)據(jù)冗余,隨之而來的是更新異常問題;某個(gè)X值與某個(gè)特定的Y值相聯(lián)系,這是數(shù)據(jù)庫中應(yīng)存儲(chǔ)的信息,但由于X不含碼,這種X與Y相聯(lián)系的信息可能因?yàn)榇a或碼的一部分為空值而不能作為一個(gè)合法的元組在數(shù)據(jù)庫中存在,這是插入異常或刪除異常問題。第二范式、第三范式和Boyce-Codd范式就是不同程度地限制關(guān)系模式中X不包含碼的函數(shù)依賴X→Y的存在。
    (二)第二范式(2NF)
    若關(guān)系模式R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R∈2NF。
    2NF就是不允許關(guān)系模式的屬性之間有這樣的函數(shù)依賴X→Y,其中X是碼的真子集,Y是非主屬性。即不允許有非主屬性對碼的部分函數(shù)依賴。
    (三)第三范式(3NF)
    若關(guān)系模式R∈2NF,且每一個(gè)非主屬性都不傳遞依賴于碼,則R∈3NF。3NF就是不允許關(guān)系模式的屬性之間有這樣的非平凡函數(shù)依賴X→Y,其中X不包含碼,Y是非主屬性。X不包含碼有兩種情況,一種情況X是碼的真子集,這是2NF不允許的,另一種情況X不是碼的真子集,這是3NF不允許的。
    (四)Boyce-Codd范式(BCNF)
    若關(guān)系模式R∈1NF,且對于每一個(gè)非平凡的函數(shù)依賴X→Y,都有X包含碼,則R∈BCNF。BCNF是3NF的進(jìn)一步規(guī)范化,即限制條件更嚴(yán)格。3NF不允許有X不包含碼,Y是非主屬性的非平凡函數(shù)依賴X→Y。BCNF則不管Y是主屬性還是非主屬性,只要X不包含碼,就不允許有X→Y這樣的非平凡函數(shù)依賴。因此,若R∈BCNF,則必然R∈3NF。然而,BCNF又是概念上更加簡單的一種范式,判斷一個(gè)關(guān)系模式是否屬于BCNF,只要考察每個(gè)非平凡函數(shù)依賴X→Y的決定因素X是否包含碼就行了。1NF,2NF,3NF,BCNF的相互關(guān)系是:BCNF’3NF’2NF’1NF在函數(shù)依賴的范疇內(nèi),BCNF達(dá)到了的規(guī)范化程度。