公務(wù)員期刊網(wǎng) 論文中心 正文

數(shù)據(jù)庫關(guān)系模式整合方法

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了數(shù)據(jù)庫關(guān)系模式整合方法范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。

數(shù)據(jù)庫關(guān)系模式整合方法

本文作者:張麗君 單位:河南科技學(xué)院

一、引言

在整個(gè)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)過程中,總共分為六個(gè)基本階段,即需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫的實(shí)施、數(shù)據(jù)庫試運(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)系模式中,沒有不必要的冗余數(shù)據(jù),也沒有異?,F(xiàn)象存在。所謂的冗余數(shù)據(jù)是指沒有必要重復(fù)、大量出現(xiàn)的數(shù)據(jù),在數(shù)據(jù)庫中我們也不可能完全避免冗余現(xiàn)象,但是我們可以盡量減少冗余數(shù)據(jù)。異?,F(xiàn)象主要是指在對(duì)數(shù)據(jù)庫進(jìn)行增、刪、改操作的時(shí)候可能會(huì)出現(xiàn)的一些錯(cuò)誤現(xiàn)象。

二、實(shí)例分析

下面通過一個(gè)實(shí)例說明一個(gè)“不好”的數(shù)據(jù)庫中存在的問題?,F(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)系模式中存在什么問題呢?經(jīng)過分析,主要存在以下問題:

1.數(shù)據(jù)冗余嚴(yán)重:每個(gè)院系的學(xué)生選一門課程,其系名就重復(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ù)庫中數(shù)據(jù)的不一致。

3.插入異常(InsertionAnomalies):想要插入到表中的數(shù)據(jù)系統(tǒng)不允許插入,如新轉(zhuǎn)來一個(gè)學(xué)生,該生還沒有選課,因此這個(gè)元組信息就不允許插入,因?yàn)檫`反了實(shí)體完整性規(guī)則。

4.刪除異常(DeletionAnomalies):不想刪除的數(shù)據(jù)卻不得不從數(shù)據(jù)庫中刪除,如數(shù)學(xué)系的學(xué)生王五退學(xué)了,在刪除王五信息的同時(shí),也把該院系的系主任信息刪除掉了,可是系主任信息只取決于院系,跟具體的學(xué)生沒有關(guān)系。

三、優(yōu)化方法

為了解決上述表中出現(xiàn)的各種問題,把一個(gè)“不好”的關(guān)系模式變成一個(gè)x性質(zhì)“好”的關(guān)系模式。可以通過模式分解的方法來實(shí)現(xiàn)。把低級(jí)別的關(guān)系模式通過簡(jiǎn)單的分解,逐步去除其中的冗余和異常現(xiàn)象,轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式集合,這個(gè)過程就叫關(guān)系模式的規(guī)范化。關(guān)系數(shù)據(jù)庫模式優(yōu)化就是以規(guī)范化理論為基礎(chǔ),通過分析關(guān)系模式中屬性和屬性之間的函數(shù)依賴關(guān)系,按照一定的標(biāo)準(zhǔn)把一個(gè)大的關(guān)系模式進(jìn)行分解,生成一些小的子關(guān)系模式,目的是通過破壞不合理的函數(shù)依賴,解決關(guān)系模式中存在的各種異常問題

(一)函數(shù)依賴基本概念

設(shè)R(U)是一個(gè)屬性集U上的關(guān)系模式,W和Z是U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在W上的屬性值相等,而在Z上的屬性值不等,則稱“W函數(shù)確定Z”或“Z函數(shù)依賴于W”,記作W→Z。也就是說,對(duì)t,s∈r,若t[W]=s[W],則t[Z]=s[Z]那么稱“W函數(shù)決定Z”,或“Z函數(shù)依賴于W”。需要說明的是,函數(shù)依賴是一個(gè)語義范疇的概念,而且函數(shù)依賴也不是指關(guān)系模式R的某個(gè)或某些關(guān)系實(shí)例滿足的約束條件,而是指R的所有關(guān)系實(shí)例均要滿足的約束條件。

(二)范式基本概念

范式是符合某一種級(jí)別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求,滿足不同程度要求的為不同范式。各種范式之間存在聯(lián)系:1NF2NF3NFBCNF4NF5NF某一關(guān)系模式R為第n范式,可簡(jiǎn)記為R∈nNF。1.1NF:第一范式要求關(guān)系中的所有分量都必須是不可再分的原子項(xiàng)。1NF是每個(gè)關(guān)系數(shù)據(jù)庫中的關(guān)系模式都應(yīng)滿足的最低要求,也就是說如果一個(gè)關(guān)系模式不滿足第一范式,那么它就不能稱之為是關(guān)系數(shù)據(jù)庫。如圖1所示的關(guān)系模式就不滿足1NF,也就是不允許在一張表中又出現(xiàn)小表。2.2NF:若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R∈2NF。3.3NF:關(guān)系模式R<U,F(xiàn)>中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集),使得X→Y,Y→Z成立,Y→X,則稱R<U,F(xiàn)>∈3NF。4.BCNF:設(shè)關(guān)系模式R<U,F(xiàn)>∈1NF,如果對(duì)于R的每個(gè)函數(shù)依賴X→Y,若Y不屬于X,則X必含有候選碼,那么R∈BCNF。5.4NF:若關(guān)系模式R中的每個(gè)非平凡多值依賴X→Y(YX),X都含有碼,則R∈4NF。6.5NF:若R∈4NF,且不存在連接依賴,則R∈5NF。

(三)優(yōu)化的方法

規(guī)范的關(guān)系模式可保證關(guān)系中消除數(shù)據(jù)冗余、消除插入困難、消除修改困難。關(guān)系模式優(yōu)化的基本思想就是逐步消除數(shù)據(jù)依賴中不合適的部分,使模式中的各關(guān)系模式達(dá)到某種程度的”分離”。其基本步驟如圖2所示。

(四)優(yōu)化實(shí)例

有關(guān)系模式學(xué)生(學(xué)號(hào),課號(hào),姓名,性別,系號(hào),課名,成績(jī),系主任,樓號(hào)),其中各個(gè)屬性之間的函數(shù)依賴如圖3所示。1.消除部分依賴,得到滿足2NF的關(guān)系模式:Student(學(xué)號(hào),姓名,性別,系號(hào),系主任,樓號(hào))Sc(學(xué)號(hào),課號(hào),成績(jī))Course(課號(hào),課名)2.消除傳遞依賴,得到滿足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),也就是在保證其滿足1NF的基礎(chǔ)上,如果關(guān)系的碼是由單屬性組成,則這個(gè)關(guān)系模式必然滿足2NF,否則消除部分函數(shù)依賴可得2NF關(guān)系;如果一個(gè)關(guān)系模式中所有屬性都是主屬性,則這個(gè)關(guān)系模式必然滿足3NF。如果有非主屬性存在,則還需要判斷是否對(duì)候選碼有傳遞函數(shù)依賴,如果有就消除之可得3NF關(guān)系;依此類推。直到消除了操作異?,F(xiàn)象。