前言:想要寫(xiě)出一篇引人入勝的文章?我們特意為您整理了數(shù)據(jù)庫(kù)關(guān)系模式整合方法范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。
本文作者:張麗君 單位:河南科技學(xué)院
一、引言
在整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)過(guò)程中,總共分為六個(gè)基本階段,即需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)的實(shí)施、數(shù)據(jù)庫(kù)試運(yùn)行階段就。其中在邏輯結(jié)構(gòu)設(shè)計(jì)階段的主要任務(wù)是如何將概念結(jié)構(gòu)轉(zhuǎn)換的關(guān)系模式進(jìn)行優(yōu)化。因?yàn)閱渭兊膹母拍罱Y(jié)構(gòu)轉(zhuǎn)換的關(guān)系模式不一定具有“好”的性質(zhì)。一個(gè)具有“好”的性質(zhì)的關(guān)系模式中,沒(méi)有不必要的冗余數(shù)據(jù),也沒(méi)有異?,F(xiàn)象存在。所謂的冗余數(shù)據(jù)是指沒(méi)有必要重復(fù)、大量出現(xiàn)的數(shù)據(jù),在數(shù)據(jù)庫(kù)中我們也不可能完全避免冗余現(xiàn)象,但是我們可以盡量減少冗余數(shù)據(jù)。異常現(xiàn)象主要是指在對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、改操作的時(shí)候可能會(huì)出現(xiàn)的一些錯(cuò)誤現(xiàn)象。
二、實(shí)例分析
下面通過(guò)一個(gè)實(shí)例說(shuō)明一個(gè)“不好”的數(shù)據(jù)庫(kù)中存在的問(wèn)題。現(xiàn)有一個(gè)學(xué)生信息管理系統(tǒng),其中的一個(gè)“學(xué)生選課管理表”包含以下屬性:學(xué)號(hào)(sno),系別(sdept),系主任名(mname),課程號(hào)(cno),成績(jī)(grade)。假設(shè)這個(gè)表中總共有4名學(xué)生,分別選修了不同的課程,如下表1所示:那么在這個(gè)關(guān)系模式中存在什么問(wèn)題呢?經(jīng)過(guò)分析,主要存在以下問(wèn)題:
1.數(shù)據(jù)冗余嚴(yán)重:每個(gè)院系的學(xué)生選一門(mén)課程,其系名就重復(fù)存儲(chǔ)一次;每個(gè)院系有多少個(gè)學(xué)生選課,系主任名就重復(fù)存儲(chǔ)多少次。
2.更新異常(UpdateAnomalies):由于存在數(shù)據(jù)冗余必然會(huì)導(dǎo)致更新數(shù)據(jù)時(shí),操作更加復(fù)雜,使得維護(hù)數(shù)據(jù)完整性代價(jià)大。稍一疏忽,就會(huì)導(dǎo)致數(shù)據(jù)庫(kù)中數(shù)據(jù)的不一致。
3.插入異常(InsertionAnomalies):想要插入到表中的數(shù)據(jù)系統(tǒng)不允許插入,如新轉(zhuǎn)來(lái)一個(gè)學(xué)生,該生還沒(méi)有選課,因此這個(gè)元組信息就不允許插入,因?yàn)檫`反了實(shí)體完整性規(guī)則。
4.刪除異常(DeletionAnomalies):不想刪除的數(shù)據(jù)卻不得不從數(shù)據(jù)庫(kù)中刪除,如數(shù)學(xué)系的學(xué)生王五退學(xué)了,在刪除王五信息的同時(shí),也把該院系的系主任信息刪除掉了,可是系主任信息只取決于院系,跟具體的學(xué)生沒(méi)有關(guān)系。
三、優(yōu)化方法
為了解決上述表中出現(xiàn)的各種問(wèn)題,把一個(gè)“不好”的關(guān)系模式變成一個(gè)x性質(zhì)“好”的關(guān)系模式??梢酝ㄟ^(guò)模式分解的方法來(lái)實(shí)現(xiàn)。把低級(jí)別的關(guān)系模式通過(guò)簡(jiǎn)單的分解,逐步去除其中的冗余和異?,F(xiàn)象,轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式集合,這個(gè)過(guò)程就叫關(guān)系模式的規(guī)范化。關(guān)系數(shù)據(jù)庫(kù)模式優(yōu)化就是以規(guī)范化理論為基礎(chǔ),通過(guò)分析關(guān)系模式中屬性和屬性之間的函數(shù)依賴(lài)關(guān)系,按照一定的標(biāo)準(zhǔn)把一個(gè)大的關(guān)系模式進(jìn)行分解,生成一些小的子關(guān)系模式,目的是通過(guò)破壞不合理的函數(shù)依賴(lài),解決關(guān)系模式中存在的各種異常問(wèn)題
(一)函數(shù)依賴(lài)基本概念
設(shè)R(U)是一個(gè)屬性集U上的關(guān)系模式,W和Z是U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在W上的屬性值相等,而在Z上的屬性值不等,則稱(chēng)“W函數(shù)確定Z”或“Z函數(shù)依賴(lài)于W”,記作W→Z。也就是說(shuō),對(duì)t,s∈r,若t[W]=s[W],則t[Z]=s[Z]那么稱(chēng)“W函數(shù)決定Z”,或“Z函數(shù)依賴(lài)于W”。需要說(shuō)明的是,函數(shù)依賴(lài)是一個(gè)語(yǔ)義范疇的概念,而且函數(shù)依賴(lài)也不是指關(guān)系模式R的某個(gè)或某些關(guān)系實(shí)例滿(mǎn)足的約束條件,而是指R的所有關(guān)系實(shí)例均要滿(mǎn)足的約束條件。
(二)范式基本概念
范式是符合某一種級(jí)別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿(mǎn)足一定的要求,滿(mǎn)足不同程度要求的為不同范式。各種范式之間存在聯(lián)系:1NF2NF3NFBCNF4NF5NF某一關(guān)系模式R為第n范式,可簡(jiǎn)記為R∈nNF。1.1NF:第一范式要求關(guān)系中的所有分量都必須是不可再分的原子項(xiàng)。1NF是每個(gè)關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系模式都應(yīng)滿(mǎn)足的最低要求,也就是說(shuō)如果一個(gè)關(guān)系模式不滿(mǎn)足第一范式,那么它就不能稱(chēng)之為是關(guān)系數(shù)據(jù)庫(kù)。如圖1所示的關(guān)系模式就不滿(mǎn)足1NF,也就是不允許在一張表中又出現(xiàn)小表。2.2NF:若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴(lài)于碼,則R∈2NF。3.3NF:關(guān)系模式R<U,F(xiàn)>中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集),使得X→Y,Y→Z成立,Y→X,則稱(chēng)R<U,F(xiàn)>∈3NF。4.BCNF:設(shè)關(guān)系模式R<U,F(xiàn)>∈1NF,如果對(duì)于R的每個(gè)函數(shù)依賴(lài)X→Y,若Y不屬于X,則X必含有候選碼,那么R∈BCNF。5.4NF:若關(guān)系模式R中的每個(gè)非平凡多值依賴(lài)X→Y(YX),X都含有碼,則R∈4NF。6.5NF:若R∈4NF,且不存在連接依賴(lài),則R∈5NF。
(三)優(yōu)化的方法
規(guī)范的關(guān)系模式可保證關(guān)系中消除數(shù)據(jù)冗余、消除插入困難、消除修改困難。關(guān)系模式優(yōu)化的基本思想就是逐步消除數(shù)據(jù)依賴(lài)中不合適的部分,使模式中的各關(guān)系模式達(dá)到某種程度的”分離”。其基本步驟如圖2所示。
(四)優(yōu)化實(shí)例
有關(guān)系模式學(xué)生(學(xué)號(hào),課號(hào),姓名,性別,系號(hào),課名,成績(jī),系主任,樓號(hào)),其中各個(gè)屬性之間的函數(shù)依賴(lài)如圖3所示。1.消除部分依賴(lài),得到滿(mǎn)足2NF的關(guān)系模式:Student(學(xué)號(hào),姓名,性別,系號(hào),系主任,樓號(hào))Sc(學(xué)號(hào),課號(hào),成績(jī))Course(課號(hào),課名)2.消除傳遞依賴(lài),得到滿(mǎn)足3NF的關(guān)系模式:Student(學(xué)號(hào),姓名,性別,系號(hào))Deparment(系號(hào),系主任,樓號(hào))Sc(學(xué)號(hào),課號(hào),成績(jī))Course(課號(hào),課名)
四、結(jié)論
規(guī)范化首先要保證關(guān)系中所有屬性都是原子項(xiàng),也就是在保證其滿(mǎn)足1NF的基礎(chǔ)上,如果關(guān)系的碼是由單屬性組成,則這個(gè)關(guān)系模式必然滿(mǎn)足2NF,否則消除部分函數(shù)依賴(lài)可得2NF關(guān)系;如果一個(gè)關(guān)系模式中所有屬性都是主屬性,則這個(gè)關(guān)系模式必然滿(mǎn)足3NF。如果有非主屬性存在,則還需要判斷是否對(duì)候選碼有傳遞函數(shù)依賴(lài),如果有就消除之可得3NF關(guān)系;依此類(lèi)推。直到消除了操作異?,F(xiàn)象。