摘 要:規(guī)范化問題是關(guān)系數(shù)據(jù)理論的重點(diǎn)和難點(diǎn),僅從理論上作出解釋,很難使學(xué)生理解,本文提出通過一個(gè)完整的實(shí)例,采用逐步深入的方法解決關(guān)系模式中存在的問題,使學(xué)生加深對規(guī)范化理論的理解。
關(guān)鍵詞:數(shù)據(jù)依賴;規(guī)范化;范式
中圖分類號:G64
文獻(xiàn)標(biāo)識碼:B
文章編號:1672,5913f2008)O1-0051-03
1 問題的提出
我們建立一個(gè)描述學(xué)校教務(wù)的數(shù)據(jù)庫,該數(shù)據(jù)庫涉及的對象包括學(xué)生的學(xué)號(sno)、學(xué)生姓名(sname)、所在系(sdept)、系主任姓名(Mname)、教師姓名(Tname)、課程號(cno)、成績(Grade)。假設(shè)用一個(gè)單一的關(guān)系模式來表示,則該關(guān)系模式的屬性集合為:
U={Sno,Sname,Sdept,Mname,Tname,Cno,Grade}
從這個(gè)關(guān)系模式中,我們可以看出存在以下問題:
(1)數(shù)據(jù)冗余太大
比如:Sdept,Mname等列中數(shù)據(jù)項(xiàng)重復(fù)出現(xiàn),這將浪費(fèi)大量的存儲空間。
(2)更新異常(update Anomalies)
由于數(shù)據(jù)冗余,當(dāng)更新數(shù)據(jù)庫中的數(shù)據(jù)時(shí)必然造成麻煩,例如,張一改
換了系,從計(jì)算機(jī)系調(diào)到自動化系,則需從整個(gè)關(guān)系中逐一找到其對應(yīng)的元組進(jìn)行修改,若漏改一處則造成數(shù)據(jù)矛盾。
(3)插入異常(InsertionAnomalies)
在StudentI表中,主碼是由學(xué)號和課程號組合而成的,兩者取值都不允許是空值。這樣,若有一新學(xué)生來報(bào)道,會由于他沒有選修任何一門課程而無法將其信息插入表中,這樣就形成了插入異常。如果一個(gè)系新成立,尚無學(xué)生,就無法把這個(gè)系及其系主任的信息存入數(shù)據(jù)庫,這樣也形成了插入異常。
(4)刪除異常(Deletion Anomalies)
在Studentl表中,若刪除張三,則整個(gè)元組不復(fù)存在,連同自動化系主任吳總這一信息也會一并刪掉,這樣會引起信息丟失。
關(guān)系數(shù)據(jù)庫規(guī)范化理論是用來研究如何將一個(gè)“不好”的關(guān)系模型轉(zhuǎn)化為一個(gè)“好”的關(guān)系模型。……