版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,第4章 關(guān)系數(shù)據(jù)庫理論,2,本章概要,前面已經(jīng)講述了關(guān)系數(shù)據(jù)庫、關(guān)系模型的基本概念以及關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。如何使用關(guān)系模型設(shè)計關(guān)系數(shù)據(jù)庫,也就是面對一個現(xiàn)實問題,如何選擇一個比較好的關(guān)系模式的集合,每個關(guān)系又應(yīng)該由哪些屬性組成。這屬于數(shù)據(jù)庫設(shè)計的問題,確切地講是數(shù)據(jù)庫邏輯設(shè)計的問題,有關(guān)數(shù)據(jù)庫設(shè)計的全過程將在第6章詳細(xì)討論。本章講述關(guān)系數(shù)據(jù)庫規(guī)范化理論,這是數(shù)據(jù)庫邏輯設(shè)計的理論依據(jù)。要求了解規(guī)范化理論的研究動機(jī)及其在數(shù)據(jù)庫
2、設(shè)計中的作用,掌握函數(shù)依賴的有關(guān)概念,第一范式、第二范式、第三范式的定義,重點(diǎn)掌握并能夠靈活運(yùn)用關(guān)系模式規(guī)范化的方法和關(guān)系模式分解的方法,這也是本章的難點(diǎn)。,3,4.1 規(guī)范化問題的提出,4.1.1 規(guī)范化理論的主要內(nèi)容關(guān)系數(shù)據(jù)庫的規(guī)范化理論最早是由關(guān)系數(shù)據(jù)庫的創(chuàng)始人E.F.Codd提出的,后經(jīng)許多專家學(xué)者對關(guān)系數(shù)據(jù)庫理論作了深入的研究和發(fā)展,形成了一整套有關(guān)關(guān)系數(shù)據(jù)庫設(shè)計的理論。在該理論出現(xiàn)以前,層次和網(wǎng)狀數(shù)據(jù)庫的設(shè)計
3、只是遵循其模型本身固有的原則,而無具體的理論依據(jù)可言,因而帶有盲目性,可能在以后的運(yùn)行和使用中發(fā)生許多預(yù)想不到的問題。,4,在關(guān)系數(shù)據(jù)庫系統(tǒng)中,關(guān)系模型包括一組關(guān)系模式,各個關(guān)系不是完全孤立的,數(shù)據(jù)庫的設(shè)計較層次和網(wǎng)狀模型更為重要。如何設(shè)計一個適合的關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)鍵是關(guān)系數(shù)據(jù)庫模式的設(shè)計,一個好的關(guān)系數(shù)據(jù)庫模式應(yīng)該包括多少關(guān)系模式,而每一個關(guān)系模式又應(yīng)該包括哪些屬性,又如何將這些相互關(guān)聯(lián)的關(guān)系模式組建一個適合的關(guān)系模型,這些工作決
4、定了到整個系統(tǒng)運(yùn)行的效率,也是系統(tǒng)成敗的關(guān)鍵所在,所以必須在關(guān)系數(shù)據(jù)庫的規(guī)范化理論的指導(dǎo)下逐步完成。,5,關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個方面的內(nèi)容:函數(shù)信賴范式(Normal Form)模式設(shè)計其中,函數(shù)信賴起著核心的作用,是模式分解和模式設(shè)計的基礎(chǔ),范式是模式分解的標(biāo)準(zhǔn)。4.1.2 關(guān)系模式的存儲異常問題數(shù)據(jù)庫的邏輯設(shè)計為什么要遵循一定的規(guī)范化理論?什么是好的關(guān)系模式?某些不好的關(guān)系模式可能導(dǎo)致哪些問題?下面
5、通過例子進(jìn)行分析:,6,例如,要求設(shè)計教學(xué)管理數(shù)據(jù)庫,其關(guān)系模式SCD如下:SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)其中,SNO表示學(xué)生學(xué)號,SN表示學(xué)生姓名,AGE表示學(xué)生年齡,DEPT表示學(xué)生所在的系別,MN表示系主任姓名,CNO表示課程號,SCORE表示成績。 根據(jù)實際情況,這些數(shù)據(jù)有如下語義規(guī)定:1. 一個系有若干個學(xué)生,但一個學(xué)生只屬于一個系;2. 一個系只有一名系主任,但一個系主任可
6、以同時兼幾個系的系主任;3. 一個學(xué)生可以選修多門功課,每門課程可有若干學(xué)生選修;4. 每個學(xué)生學(xué)習(xí)課程有一個成績。在此關(guān)系模式中填入一部分具體的數(shù)據(jù),則可得到SCD關(guān)系模式的實例,即一個教學(xué)管理數(shù)據(jù)庫,如圖4.1所示。,7,圖4.1 關(guān)系SCD,8,根據(jù)上述的語義規(guī)定,并分析以上關(guān)系中的數(shù)據(jù),我們可以看出:(SNO,CNO)屬性的組合能唯一標(biāo)識一個元組,所以(SNO,CNO)是該關(guān)系模式的主關(guān)系鍵。但在進(jìn)行數(shù)據(jù)庫的操作時,會出現(xiàn)
7、以下幾方面的問題。1. 數(shù)據(jù)冗余。每個系名和系主任的名字存儲的次數(shù)等于該系的學(xué)生人數(shù)乘以每個學(xué)生選修的課程門數(shù),同時學(xué)生的姓名、年齡也都要重復(fù)存儲多次,數(shù)據(jù)的冗余度很大,浪費(fèi)了存儲空間。2. 插入異常。如果某個新系沒有招生,尚無學(xué)生時,則系名和系主任的信息無法插入到數(shù)據(jù)庫中。因為在這個關(guān)系模式中,(SNO,CNO)是主關(guān)系鍵。根據(jù)關(guān)系的實體完整性約束,主關(guān)系鍵的值不能為空,而這時沒有學(xué)生,SNO和CNO均無值,因此不能進(jìn)行插入操作
8、。另外,當(dāng)某個學(xué)生尚未選課,即CNO未知,實體完整性約束還規(guī)定,主關(guān)系鍵的值不能部分為空,同樣不能進(jìn)行插入操作。,9,3. 刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時,刪除全部學(xué)生的記錄則系名、系主任也隨之刪除,而這個系依然存在,在數(shù)據(jù)庫中卻無法找到該系的信息。另外,如果某個學(xué)生不再選修C1課程,本應(yīng)該只刪去C1,但C1是主關(guān)系鍵的一部分,為保證實體完整性,必須將整個元組一起刪掉,這樣,有關(guān)該學(xué)生的其它信息也隨之丟失。4. 更新異常
9、。如果學(xué)生改名,則該學(xué)生的所有記錄都要逐一修改SN;又如某系更換系主任,則屬于該系的學(xué)生記錄都要修改MN的內(nèi)容,稍有不慎,就有可能漏改某些記錄,這就會造成數(shù)據(jù)的不一致性,破壞了數(shù)據(jù)的完整性。,10,由于存在以上問題,我們說,SCD是一個不好的關(guān)系模式。產(chǎn)生上述問題的原因,直觀地說,是因為關(guān)系中“包羅萬象”,內(nèi)容太雜了。那么,怎樣才能得到一個好的關(guān)系模式呢?我們把關(guān)系模式SCD分解為下面三個結(jié)構(gòu)簡單的關(guān)系模式,如圖4.2所示。
10、學(xué)生關(guān)系S(SNO,SN,AGE,DEPT)選課關(guān)系SC(SNO,CNO,SCORE)系關(guān)系D(DEPT,MN),11,S SC,圖4.2 分解后的關(guān)系模式,12,在以上三個關(guān)系模式中,實現(xiàn)了信息的某種程度的分離,S中存儲學(xué)生基本信息,與所選課程及系主任無關(guān);D中存儲系的有關(guān)信息,與學(xué)生無關(guān);SC中存儲學(xué)生選課的信息,而與所學(xué)生及系的有關(guān)信息
11、無關(guān)。與SCD相比,分解為三個關(guān)系模式后,數(shù)據(jù)的冗余度明顯降低。當(dāng)新插入一個系時,只要在關(guān)系D中添加一條記錄。當(dāng)某個學(xué)生尚未選課,只要在關(guān)系S中添加一條學(xué)生記錄,而與選課關(guān)系無關(guān),這就避免了插入異常。當(dāng)一個系的學(xué)生全部畢業(yè)時,只需在S中刪除該系的全部學(xué)生記錄,而關(guān)系D中有關(guān)該系的信息仍然保留,從而不會引起刪除異常。同時,由于數(shù)據(jù)冗余度的降低,數(shù)據(jù)沒有重復(fù)存儲,也不會引起更新異常。,13,經(jīng)過上述分析,我們說分解后的關(guān)系模式是一
12、個好的關(guān)系數(shù)據(jù)庫模式。從而得出結(jié)論,一個好的關(guān)系模式應(yīng)該具備以下四個條件:1. 盡可能少的數(shù)據(jù)冗余。2. 沒有插入異常。3. 沒有刪除異常。4. 沒有更新異常。,14,但要注意,一個好的關(guān)系模式并不是在任何情況下都是最優(yōu)的,比如查詢某個學(xué)生選修課程名及所在系的系主任時,要通過連接,而連接所需要的系統(tǒng)開銷非常大,因此要以實際設(shè)計的目標(biāo)出發(fā)進(jìn)行設(shè)計如何按照一定的規(guī)范設(shè)計關(guān)系模式,將結(jié)構(gòu)復(fù)雜的關(guān)系分解成結(jié)構(gòu)簡單的關(guān)系,從而把不
13、好的關(guān)系數(shù)據(jù)庫模式轉(zhuǎn)變?yōu)楹玫年P(guān)系數(shù)據(jù)庫模式,這就是關(guān)系的規(guī)范化。規(guī)范化又可以根據(jù)不同的要求而分成若干級別。我們要設(shè)計的關(guān)系模式中的各屬性是相互依賴、相互制約的,這樣才構(gòu)成了一個結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)恼w。因此在設(shè)計關(guān)模式時,必須從語義上分析這些依賴關(guān)系。數(shù)據(jù)庫模式的好壞和關(guān)系中各屬性間的依賴關(guān)系有關(guān),因此,我們先討論屬性間的依賴關(guān)系,然后再討論關(guān)系規(guī)范化理論。,15,4.2 函數(shù)依賴,4.2.1 函數(shù)依賴的定義及性質(zhì)關(guān)系模式中的各屬性之
14、間相互依賴、相互制約的聯(lián)系稱為數(shù)據(jù)依賴。數(shù)據(jù)依賴一般分為函數(shù)依賴、多值依賴和連接依賴。其中,函數(shù)依賴是最重要的數(shù)據(jù)依賴。函數(shù)依賴(Functional Dependency)是關(guān)系模式中屬性之間的一種邏輯依賴關(guān)系。例如在上一節(jié)介紹的關(guān)系模式SCD中,SNO與SN、AGE、DEPT之間都有一種依賴關(guān)系。由于一個SNO只對應(yīng)一個學(xué)生,而一個學(xué)生只能屬于一個系,所以當(dāng)SNO的值確定之后,SN,AGE,DEPT的值也隨之被唯一的確定了
15、。這類似于變量之間的單值函數(shù)關(guān)系。設(shè)單值函數(shù)Y=F(X),自變量X的值可以決定一個唯一的函數(shù)值Y。在這里,我們說SNO決定函數(shù)(SN,AGE,DEPT),或者說(SN,AGE,DEPT)函數(shù)依賴于SNO。,16,下面給函數(shù)依賴的形式化定義。 4.2.1.1 函數(shù)依賴的定義定義4.1 設(shè)關(guān)系模式R(U,F(xiàn)),U是屬性全集,F(xiàn)是U上的函數(shù)依賴集,X和Y是U的子集,如果對于R(U)的任意一個可能的關(guān)系r,對于X的每一個具體值,Y都有唯
16、一的具體值與之對應(yīng),則稱X決定函數(shù)Y,或Y函數(shù)依賴于X,記作X→Y。我們稱X為決定因素,Y為依賴因素。當(dāng)Y不函數(shù)依賴于X時,記作:X Y。當(dāng)X→Y且Y→X時,則記作:X Y。對于關(guān)系模式SCDU={SNO,SN,AGE,DEPT,MN,CNO,SCORE}F={SNO→SN,SNO→AGE,SNO→DEPT}一個SNO有多個SCORE的值與其對應(yīng),因此SCORE不能唯一地確定,即SCORE不能函數(shù)依賴于SNO,所以有:
17、SNO SCORE。但是SCORE可以被(SNO,CNO)唯一地確定。所以可表示為:(SNO,CNO)→SCORE。,17,有關(guān)函數(shù)依賴的幾點(diǎn)說明:1.平凡的函數(shù)依賴與非平凡的函數(shù)依賴。當(dāng)屬性集Y是屬性集X的子集時,則必然存在著函數(shù)依賴X→Y,這種類型的函數(shù)依賴稱為平凡的函數(shù)依賴。如果Y不是X的子集,則稱X→Y為非平凡的函數(shù)依賴。若不特別聲明,我們討論的都是非平凡的函數(shù)依賴。2.函數(shù)依賴是語義范疇的概念。我們只能根據(jù)語義
18、來確定一個函數(shù)依賴,而不能按照其形式化定義來證明一個函數(shù)依賴是否成立。例如,對于關(guān)系模式S,當(dāng)學(xué)生不存在重名的情況下,可以得到:SN→AGESN→DEPT這種函數(shù)依賴關(guān)系,必須是在沒有重名的學(xué)生條件下才成立的,否則就不存在函數(shù)依賴了。所以函數(shù)依賴反映了一種語義完整性約束。,18,3.函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān)。(1)在一個關(guān)系模式中,如果屬性X與Y有1:1聯(lián)系時,則存在函數(shù)依賴X→Y,Y→X,即X Y。
19、 例如,當(dāng)學(xué)生無重名時,SNO SN。(2)如果屬性X與Y有1:m的聯(lián)系時,則只存在函數(shù)依賴X→Y。 例如,SNO與AGE,DEPT之間均為1:m聯(lián)系,所以有SNO→AGE,SNO→DEPT。(3)如果屬性X與Y有m: n的聯(lián)系時,則X與Y之間不存在任何函數(shù)依賴關(guān)系。 例如,一個學(xué)生可以選修多門課程,一門課程又可以為多個學(xué)生選修,所以SNO與CNO之間不存在函數(shù)依賴關(guān)系。由于函數(shù)依賴與屬性之間的聯(lián)系類型有關(guān)
20、,所以在確定屬性間的函數(shù)依賴關(guān)系時,可以從分析屬性間的聯(lián)系類型入手,便可確定屬性間的函數(shù)依賴。,19,4.函數(shù)依賴關(guān)系的存在與時間無關(guān)。因為函數(shù)依賴是指關(guān)系中的所有元組應(yīng)該滿足的約束條件,而不是指關(guān)系中某個或某些元組所滿足的約束條件。當(dāng)關(guān)系中的元組增加、刪除或更新后都不能破壞這種函數(shù)依賴。因此,必須根據(jù)語義來確定屬性之間的函數(shù)依賴,而不能單憑某一時刻關(guān)系中的實際數(shù)據(jù)值來判斷。例如,對于關(guān)系模式S,假設(shè)沒有給出無重名的學(xué)生這種語義
21、規(guī)定,則即使當(dāng)前關(guān)系中沒有重名的記錄,也只能存在函數(shù)依賴SNO→SN,而不能存在函數(shù)依賴SN→SNO,因為如果新增加一個重名的學(xué)生,函數(shù)依賴SN→SNO必然不成立。所以函數(shù)依賴關(guān)系的存在與時間無關(guān),而只與數(shù)據(jù)之間的語義規(guī)定有關(guān)。,20,5.函數(shù)依賴可以保證關(guān)系分解的無損連接性。設(shè)R(X,Y,Z),X,Y,Z為不相交的屬性集合,如果X→Y或X→Z,則有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示關(guān)系R在屬性(
22、X,Y)上的投影,即R等于其投影在X上的自然連接,這樣便保證了關(guān)系R分解后不會丟失原有的信息,稱作關(guān)系分解的無損連接性。例如,對于關(guān)系模式SCD,有SNO→(SN,AGE,DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)=SCD[SNO,SN,AGE,DEPT,MN]*SCD[SNO,CNO,SCORE],也就是說,用其投影在SNO上的自然連接可復(fù)原關(guān)系模式SCD。這一性質(zhì)非常重要,在后一節(jié)的關(guān)系
23、規(guī)范化中要用到。,21,4.2.1.2 函數(shù)依賴的基本性質(zhì)1.投影性。根據(jù)平凡的函數(shù)依賴的定義可知,一組屬性函數(shù)決定它的所有子集。例如,在關(guān)系SCD中,(SNO,CNO)→SNO和(SNO,CNO)→CNO。2.?dāng)U張性。若X→Y且W→Z,則(X,W)→(Y,Z)。例如,SNO→(SN,AGE),DEPT→MN,則有(SNO,DEPT)→(SN,AGE,MN)。3.合并性。若X→Y且X→Z則必有X→(Y,Z)。例如,在關(guān)
24、系SCD中,SNO→(SN,AGE),SNO→(DEPT,MN),則有SNO→(SN,AGE,DEPT,MN)。4.分解性。若X→(Y,Z),則X→Y且X→Z。很顯然,分解性為合并性的逆過程。由合并性和分解性,很容易得到以下事實:X→A1,A2,…,An成立的充分必要條件是X→Ai(i=1,2,…,n)成立。,22,4.2.2 完全函數(shù)依賴與部分函數(shù)依賴定義4.2 設(shè)關(guān)系模式R(U),U是屬性全集,X和Y是U的子集,如果
25、X→Y,并且對于X的任何一個真子集X′,都有X′ Y,則稱Y對X完全函數(shù)依賴(Full Functional Dependency),記作 X Y。如果對X的某個真子集X′,有X′→Y,則稱Y對部分函數(shù)依賴(Partial Functional Dependency),記作X Y。例如,在關(guān)系模式SCD中,因為SNO SCORE,且CNO SCORE,所以有:(SNO,CNO) SCORE 。
26、 而SNO→AGE,所以(SNO,CNO) AGE。由定義4.2可知:只有當(dāng)決定因素是組合屬性時,討論部分函數(shù)依賴才有意義,當(dāng)決定因素是單屬性時,只能是完全函數(shù)依賴。例如,在關(guān)系模式S(SNO,SN,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SN,AGE,DEPT),不存在部分函數(shù)依賴。,23,4.2.3 傳遞函數(shù)依賴定義4.3 設(shè)有關(guān)系模式R(U),U是屬性全集,X,Y,Z是U的子集,若X→Y,但Y
27、 X,而Y→Z(Y X,Z Y),則稱Z對X傳遞函數(shù)依賴(Transitive Functional Dependency),記作:X Z。如果Y→X,則X Y,這時稱Z對X直接函數(shù)依賴,而不是傳遞函數(shù)依賴。例如,在關(guān)系模式SCD中,SNO→DEPTN,但DEPTN SNO,而DEPTN→MN,則有SNO MN。當(dāng)學(xué)生不存在重名的情況下,有SNO→SN,SN→SNO,SNO SN,SN→DEPTN,這時DEPTN
28、對SNO是直接函數(shù)依賴,而不是傳遞函數(shù)依賴。綜上所述,函數(shù)依賴分為完全函數(shù)依賴、部分函數(shù)依賴和傳遞函數(shù)依賴三類,它們是規(guī)范化理論的依據(jù)和規(guī)范化程度的準(zhǔn)則,下面我們將以介紹的這些概念為基礎(chǔ),進(jìn)行數(shù)據(jù)庫的規(guī)范設(shè)計。,24,4.3 范式,規(guī)范化的基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中的不合適的部分,解決數(shù)據(jù)插入、刪除時發(fā)生異?,F(xiàn)象。這就要求關(guān)系數(shù)據(jù)庫設(shè)計出來的關(guān)系模式要滿足一定的條件。我們把關(guān)系數(shù)據(jù)庫的規(guī)范化過程中為不同
29、程度的規(guī)范化要求設(shè)立的不同標(biāo)準(zhǔn)稱為范式(Normal Form)。由于規(guī)范化的程度不同,就產(chǎn)生了不同的范式。滿足最基本規(guī)范化要求的關(guān)系模式叫第一范式,在第一范式中進(jìn)一步滿足一些要求為第二范式,以此類推就產(chǎn)生了第三范式等概念。每種范式都規(guī)定了一些限制約束條件。,25,范式的概念最早由E.F.Codd提出。從1971年起,Codd相繼提出了關(guān)系的三級規(guī)范化形式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。19
30、74年,Codd和Boyce以共同提出了一個新的范式的概念,即Boyce-Codd范式,簡稱BC范式。1976年Fagin提出了第四范式,后來又有人定義了第五范式。至此在關(guān)系數(shù)據(jù)庫規(guī)范中建立了一個范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級比一級有更嚴(yán)格的要求。各個范式之間的聯(lián)系可以表示為:5NF 4NF BCNF 3NF 2NF 1NF如圖4.3所示。,26,圖4.3 各種范式之間的關(guān)系下面
31、逐一介紹各級范式及其規(guī)范化。,27,4.3.1 第一范式第一范式(First Normal Form)是最基本的規(guī)范形式,即關(guān)系中每個屬性都是不可再分的簡單項。定義4.4 如果關(guān)系模式R,其所有的屬性均為簡單屬性,即每個屬性都城是不可再分的,則稱R屬于第一范式,簡稱1NF,記作R?1NF。在第2章討論關(guān)系的性質(zhì)時,我們把滿足這個條件的關(guān)系稱為規(guī)范化關(guān)系。在關(guān)系數(shù)據(jù)庫系統(tǒng)中只討論規(guī)范化的關(guān)系,凡是非規(guī)范化的關(guān)系模式必須化成規(guī)范
32、化的關(guān)系。在非規(guī)范化的關(guān)系中去掉組合項就能化成規(guī)范化的關(guān)系。每個規(guī)范化的關(guān)系都屬于1NF,這也是它之所以稱為“第一”的原因。,28,然而,一個關(guān)系模式僅僅屬于第一范式是不適用的。在4.1節(jié)中給出的關(guān)系模式SCD屬于第一范式,但其具有大量的數(shù)據(jù)冗余,具有插入異常、刪除異常、更新異常等弊端。為什么會存在這種問題呢?讓我們分析一下SCD中的函數(shù)依賴關(guān)系,它的關(guān)系鍵是(SNO,CNO)的屬性組合,所以有: (SNO,CNO)
33、SCORESNO→SN,(SNO,CNO) SNSNO→AGE,(SNO,CNO) AGESNO→DEPT,(SNO,CNO) DEPTSNO MN,(SNO,CNO) MN,29,我們可以用函數(shù)信賴圖表示以上函數(shù)依賴關(guān)系,如圖4.4所示。,由此可見,在SCD中,既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴。這種情況往往在數(shù)據(jù)庫中是不允許的,也正是由于關(guān)系中存在著復(fù)雜的函數(shù)依賴,才導(dǎo)致數(shù)據(jù)
34、操作中出現(xiàn)了種弊端??朔@些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級的范式進(jìn)行轉(zhuǎn)換。,30,4.3.2 第二范式4.3.2.1 第二范式的定義定義4.5 如果關(guān)系模式R?1NF,且每個非主屬性都完全函數(shù)依賴于R的每個關(guān)系鍵,則稱R屬于第二范式(Second Normal Form),簡稱2NF,記作R?2NF。在關(guān)系模式SCD中,SNO,CNO為主屬性,AGE,DEPT,MN,MN,SCOR
35、E均為非主屬性,經(jīng)上述分析,存在非主屬性對關(guān)系鍵的部分函數(shù)依賴,所以SCD?2NF。而如圖4.2所示的由SCD分解的三個關(guān)系模式S,D,SC,其中S的關(guān)系鍵為SNO,D的關(guān)系鍵為DEPT,都是單屬性,不可能存在部分函數(shù)依賴。而對于SC,(SNO,CNO) SCORE。所以SCD分解后,消除了非主屬性對關(guān)系鍵的部分函數(shù)依賴,S,D,SC均屬于2NF。,31,又如在2.4.2中,講述全碼的概念時給出的關(guān)系模式TCS(T,C,S),
36、一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學(xué)生可以選聽多門課程,一門課程可以為多個學(xué)生選聽,(T,C,S)三個屬性的組合是關(guān)系鍵,T,C,S都是主屬性,而無非主屬性,所以也就不可能存在非主屬性對關(guān)系鍵的部分函數(shù)依賴,TCS?2NF。經(jīng)以上分析,可以得到兩個結(jié)論:1.從1NF關(guān)系中消除非主屬性對關(guān)系鍵的部分函數(shù)依賴,則可得到2NF關(guān)系。2.如果R的關(guān)系鍵為單屬性,或R的全體屬性均為主屬性,則R?2NF。,
37、32,4.3.2.2 2NF規(guī)范化2NF規(guī)范化是指把1NF關(guān)系模式通過投影分解轉(zhuǎn)換成2NF關(guān)系模式的集合。分解時遵循的基本原則就是“一事一地”,讓一個關(guān)系只描述一個實體或者實體間的聯(lián)系。如果多于一個實體或聯(lián)系,則進(jìn)行投影分解。下面以關(guān)系模式SCD為例,來說明2NF規(guī)范化的過程例4.1 將SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)規(guī)范到2NF。由SNO→SN,SNO→AGE,SNO→DEPT,(SNO,
38、CNO) SCORE,可以判斷,關(guān)系SCD至少描述了兩個實體,一個為學(xué)生實體,屬性有SNO、SN、AGE、DEPT、MN;另一個是學(xué)生與課程的聯(lián)系(選課),屬性有SNO、CNO和SCORE。根據(jù)分解的原則,我們可以將SCD分解成如下兩個關(guān)系,如圖4.5所示。,33,SD(SNO,SN,AGE,DEPT,MN),描述學(xué)生實體;SC(SNO,CNO,SCORE),描述學(xué)生與課程的聯(lián)系。SD,SC,圖4.5 關(guān)系SD和SC,3
39、4,對于分解后的兩個關(guān)系SD和SC,主鍵分別為SNO和(SNO,CNO),非主屬性對主鍵完全函數(shù)依賴。因此,SD?2NF,SC?2NF,而且前面已經(jīng)討論,SCD的這種分解沒有丟失任何信息,具有無損連接性。分解后,SD和SC的函數(shù)依賴分別如圖4.6和4.7所示。,圖4.6 SD中的函數(shù)依賴關(guān)系 圖4.7 SC中的函數(shù)依賴關(guān)系,35,1NF的關(guān)系模式經(jīng)過投影分解轉(zhuǎn)換成2NF后,消除了一些數(shù)據(jù)冗余。分析圖4.5中SD和SC
40、中的數(shù)據(jù),可以看出,它們存儲的冗余度比關(guān)系模式SCD有了較大輻度的降低。學(xué)生的姓名、年齡不需要重復(fù)存儲多次。這樣便可在一定程度上避免數(shù)據(jù)更新所造成的數(shù)據(jù)不一致性的問題。由于把學(xué)生的基本信息與選課信息分開存儲,則學(xué)生基本信息因沒選課而不能插入的問題得到了解決,插入異常現(xiàn)象得到了部分改善。同樣,如果某個學(xué)生不再選修C1課程,只在選課關(guān)系SC中刪去該該學(xué)生選修C1的記錄即可,而SD中有關(guān)該學(xué)生的其它信息不會受到任何影響,也解決了部分刪
41、除異常問題。因此可以說關(guān)系模式SD和SC在性能上比SCD有了顯著提高。,36,下面對2NF規(guī)范化作形式化的描述。設(shè)關(guān)系模式R(X,Y,Z),R?1NF,但R?2NF,其中,X是鍵屬性,Y,Z是非鍵屬性,且存在部分函數(shù)依賴,X Y。設(shè)X可表示為X1、X2,其中X1 Y。則R(X,Y,Z)可以分解為R[X1,Y]和R[X,Z]。因為X1→Y,所以R(X,Y,Z)=R[X1,Y]*R[X1,X2,Z]=R[X1,Y]*R[X,
42、Z],即R等于其投影R[X1,Y]和[X,Z]在X1上的自然連接,R的分解具有無損連接性。由于X1 Y,因此R[X1,Y]?2NF。若R[X,Z] ?2NF,可以按照上述方法繼續(xù)進(jìn)行投影分解,直到將R[X,Z]分解為屬于2NF關(guān)系的集合,且這種分解必定是有限的。,,,37,4.3.2.3 2NF的缺點(diǎn)2NF的關(guān)系模式解決了1NF中存在的一些問題,2NF規(guī)范化的程度比1NF前進(jìn)了一步,但2NF的關(guān)系模式在進(jìn)行數(shù)據(jù)操作時,仍然存
43、在著一些問題:1.?dāng)?shù)據(jù)冗余。每個系名和系主任的名字存儲的次數(shù)等于該系的學(xué)生人數(shù)。2.插入異常。當(dāng)一個新系沒有招生時,有關(guān)該系的信息無法插入。3.刪除異常。某系學(xué)生全部畢業(yè)而沒有招生時,刪除全部學(xué)生的記錄也隨之刪除了該系的有關(guān)信息。4.更新異常。更換系主任時,仍需改動較多的學(xué)生記錄。之所以存在這些問題,是由于在SCD中存在著非主屬性對主鍵的傳遞依賴。分析SCD中的函數(shù)依賴關(guān)系,SNO→SN,SNO→AGE,SNO→DEPT,D
44、EPT→MN,SNO MN,非主屬性MN對主鍵SNO傳遞依賴。為此,對關(guān)系模式SCD還需進(jìn)一步簡化,消除這種傳遞依賴,得到3NF。,,38,4.3.3 第三范式4.3.3.1 第三范式的定義定義4.6 如果關(guān)系模式R?2NF,且每個非主屬性都不傳遞依賴于R的每個關(guān)系鍵,則稱R屬于第三范式(Third Normal Form),簡稱3NF,記作R?3NF。第三范式具有如下性質(zhì):1.如果R?3NF,則R也是2NF。,
45、,,,39,2.如果R?2NF,則R不一定是3NF。例如,我們前面由關(guān)系模式SCD分解而得到的SD和SC都為2NF,其中,SC?3NF,但在SD中存在著非主屬性MN對主鍵SNO傳遞依賴,SD3NF。對于SD,應(yīng)該進(jìn)一步進(jìn)行分解,使其轉(zhuǎn)換成3NF。 4.3.3.2 3NF規(guī)范化3NF規(guī)范化是指把2NF關(guān)系模式通過投影分解轉(zhuǎn)換成3NF關(guān)系模式的集合。和2NF的規(guī)范化時遵循的原則相同,即“一事一地”,讓一個關(guān)系只描述一個實體或者實
46、體間的聯(lián)系。下面以2NF關(guān)系模式SD為例,來說明3NF規(guī)范化的過程。,40,例4.2 將SD(SNO,SN,AGE,DEPT,MN)規(guī)范到3NF。 分析SD的屬性組成,可以判斷,關(guān)系SD實際上描述了兩個實體: 一個為學(xué)生實體,屬性有SNO,SN,AGE,DEPT; 另一個是系的實體,其屬性DEPT和MN。根據(jù)分解的原則,我們可以將SD分解成如下兩個關(guān)系,如圖4.8所示。 S(SNO,SN,AGE,DEPT),描述學(xué)生實體
47、; D(DEPT,MN),描述系的實體。,41,S D,對于分解后的兩個關(guān)系S和D,主鍵分別為SNO和DEPT,不存在非主屬性對主鍵的傳遞函數(shù)依賴。因此,S?3NF,D?3NF。,圖4.8 關(guān)系S和D,42,分解后,S和D的函數(shù)依賴分別如圖4.9和4.10所示。,由以上兩圖可以看出,關(guān)系模式SD由2NF分解為3NF后,函數(shù)依賴關(guān)系變得更加簡單,既沒有非主屬性對鍵的部分依賴,也沒有非主屬性
48、對鍵的傳遞依賴,解決了2NF中存在的四個問題。,43,1.?dāng)?shù)據(jù)冗余降低。系主任的名字存儲的次數(shù)與該系的學(xué)生人數(shù)無關(guān),只在關(guān)系D中存儲一次。2.不存在插入異常。當(dāng)一個新系沒有學(xué)生時,該系的信息可以直接插入到關(guān)系D中,而與學(xué)生關(guān)系S無關(guān)。3.不存在刪除異常。要刪除某系的全部學(xué)生而仍然保留該系的有關(guān)信息時,可以只刪除學(xué)生關(guān)系S中的相關(guān)學(xué)生記錄,而不影響系關(guān)系D中的數(shù)據(jù)。 4.不存在更新異常。更換系主任時,只需修改關(guān)系D中一個相應(yīng)元組的
49、MN屬性值,從而不會出現(xiàn)數(shù)據(jù)的不一致現(xiàn)象。SCD規(guī)范到3NF后,所存在的異?,F(xiàn)象已經(jīng)全部消失。但是,3NF只限制了非主屬性對鍵的依賴關(guān)系,而沒有限制主屬性對鍵的依賴關(guān)系。如果發(fā)生了這種依賴,仍有可能存在數(shù)據(jù)冗余、插入異常、刪除異常和修改異常。這時,則需對3NF進(jìn)一步規(guī)范化,消除主屬性對鍵的依賴關(guān)系,為了解決這種問題,Boyce與Codd共同提出了一個新范式的定義,這就是Boyce-Codd范式,通常簡稱BCNF或BC范式。它彌補(bǔ)
50、了3NF的不足。,44,4.3.4 BC范式4.3.4.1 BC范式的定義定義4.7 如果關(guān)系模式R?1NF,且所有的函數(shù)依賴X→Y(Y X),決定因素X都包含了R的一個候選鍵,則稱R屬于BC范式(Boyce-Codd Normal Form),記作R?BCNF。BCNF具有如下性質(zhì):1.滿足BCNF的關(guān)系將消除任何屬性(主屬性或非主屬性)對鍵的部分函數(shù)依賴和傳遞函數(shù)依賴。也就是說,如果R?BCNF,則R也是3NF。
51、證明:采用反證法。設(shè)R不是3NF。則必然存在如下條件的函數(shù)依賴,X→Y(Y X),Y→Z,其中X是鍵屬性,Y是任意屬性組,Z是非主屬性,Z Y,這樣Y→Z函數(shù)依賴的決定因素Y不包含候選鍵,這與BCNF范式的定義相矛盾,所以如果R?BCNF,則R也是3NF。,45,2.如果R?3NF,則R不一定是BCNF?,F(xiàn)舉例說明。設(shè)關(guān)系模式SNC(SNO,SN,CN0,SCORE),其中SNO代表學(xué)號,SN代表學(xué)生姓名并假設(shè)沒有重名,CNO代表
52、課程號,SCORE代表成績??梢耘卸?,SNC有兩個候選鍵(SNO,CNO)和(SN,CNO),其函數(shù)依賴如下: SNO SN(SNO,CNO)→SCORE(SN,CNO)→SCORE。唯一的非主屬性SCORE對鍵不存在部分函數(shù)依賴,也不存在傳遞函數(shù)依賴。所以SNC?3NF。但是,因為SNO SN,即決定因素SNO或SN不包含候選鍵,從另一個角度說,存在著主屬性對鍵的部分函數(shù)依賴: (SNO,CNO)
53、 SN,(SN,CNO) SNO,所以SNC不是BCNF。正是存在著這種主屬性對鍵的部分函數(shù)依賴關(guān)系,造成了關(guān)系SNC中存在著較大的數(shù)據(jù)冗余,學(xué)生姓名的存儲次數(shù)等于該生所選的課程數(shù)。從而會引起修改異常。比如,當(dāng)要更改某個學(xué)生的姓名時,則必須搜索出現(xiàn)該姓名的每個學(xué)生記錄,并對其姓名逐一修改,這樣容易造成數(shù)據(jù)的不一致問題。解決這一問題的辦法仍然是通過投影分解進(jìn)一步提高SNC的范式等級,將SNC規(guī)范到BCNF。,46,4.3.
54、4.2 BCNF規(guī)范化BCNF規(guī)范化是指把3NF關(guān)系模式通過投影分解轉(zhuǎn)換成BCNF關(guān)系模式的集合。下面以3NF關(guān)系模式SNC為例,來說明BCNF規(guī)范化的過程。例4.3 將SNC(SNO,SN,CNO,SCORE)規(guī)范到BCNF。分析SNC數(shù)據(jù)冗余的原因,是因為在這一個關(guān)系中存在兩個實體,一個為學(xué)生實體,屬性有SNO、SN;另一個是選課實體,屬性有SNO、CNO和SCORE。根據(jù)分解的原則,我們可以將SNC分解成如下兩個關(guān)系:
55、S1(SNO,SN),描述學(xué)生實體;S2(SNO,CNO,SCORE),描述學(xué)生與課程的聯(lián)系。對于S1,有兩個候選鍵SNO和SN,對于S2,主鍵為(SNO,CNO)。在這兩個關(guān)系中,無論主屬性還是非主屬性都不存在對鍵的部分依賴和傳遞依賴,S1?BCNF,S2?BCNF。,47,分解后,S1和S2的函數(shù)依賴分別如圖4.11和4.12所示。,圖4.11 S1中的函數(shù)依賴關(guān)系 圖4.12 S2中的函數(shù)
56、依賴關(guān)系,關(guān)系SNC轉(zhuǎn)換成BCNF后,數(shù)據(jù)冗余度明顯降低。學(xué)生的姓名只在關(guān)系S1中存儲一次,學(xué)生要改名時,只需改動一條學(xué)生記錄中的相應(yīng)的SN值,從而不會發(fā)生修改異常。,48,例4.4 設(shè)關(guān)系模式TCS(T,C,S),T表示教師,C表示課程,S表示學(xué)生。語義假設(shè)是,每一位教師只講授一門課程;每門課程由多個教師講授;某一學(xué)生選定某門課程,就對應(yīng)于一確定的教師。根據(jù)語義假設(shè),TCS的函數(shù)依賴是:(S,C)→T,(S,T)→C,T→C。
57、函數(shù)依賴圖如圖4.13所示。,,4.13 TCS中的函數(shù)依賴關(guān)系,49,對于TCS,(S,C)和(S,T)都是候選鍵,兩個候選鍵相交,有公共的屬性S。TCS中不存在非主屬性,也就不可能存在非主屬性對鍵的部分依賴或傳遞依賴,所以TCS?3NF。但從TCS的一個關(guān)系實例(如圖4.14)分析,仍存在一些問題。,圖4.14 關(guān)系TCS,50,1.?dāng)?shù)據(jù)冗余。雖然每個教師只開一門課,但每個選修該教師該該門課程的學(xué)生元組都要記錄這一信息。2.
58、插入異常。當(dāng)某門課程本學(xué)期不開,自然就沒有學(xué)生選修。沒有學(xué)生選修,因為主屬性不能為空,教師上該門課程的信息就無法插入。同樣原因,學(xué)生剛?cè)胄?尚未選課,有關(guān)信息也不能輸入。3.刪除異常。如果選修某門課程的學(xué)生全部畢業(yè),刪除學(xué)生記錄的同時,隨之也刪除了教師開設(shè)該門課程的信息。4.更新異常。當(dāng)某個教師開設(shè)的某門課程改名后,所有選修該教師該門課程的學(xué)生元組都要進(jìn)行修改,如果漏改某個數(shù)據(jù),則破壞了數(shù)據(jù)的完整性。,51,分析出現(xiàn)上述問題的原因在
59、于主屬性部分依賴于鍵,(S,T)C,因此關(guān)系模式還繼續(xù)分解,轉(zhuǎn)換成更高一級的范式BCNF,以消除數(shù)據(jù)庫操作中的異?,F(xiàn)象。將TCS分解為兩個關(guān)系模式ST(S,T)和TC(T,C),消除函數(shù)依賴(S,T)C。其中ST的鍵為S,TC的鍵為T。ST?BCNF,TC?BCNF。這兩個關(guān)系模式的函數(shù)依賴圖分別如圖4.15和4.16所示。,圖4.15 ST中的函數(shù)依賴關(guān)系 圖4.16 TC中的函數(shù)依賴關(guān)系,52,關(guān)系模式T
60、CS由規(guī)范到BCNF后,使原來存在的四個異常問題得到解決。 1.?dāng)?shù)據(jù)冗余降低。每個教師開設(shè)課程的信息只在TC關(guān)系中存儲一次。 2.不存在插入異常。對于所開課程尚未有學(xué)生選修的教師信息可以直接存儲在關(guān)系TC中,而對于尚未選修課程的學(xué)生可以存儲在關(guān)系ST中。 3.不存在刪除異常。如果選修某門課程的學(xué)生全部畢業(yè),可以只刪除關(guān)系ST中的相關(guān)學(xué)生記錄,而不影響系關(guān)系TC中相應(yīng)教師開設(shè)該門課程的信息。 4.不存在更新異常。當(dāng)某個教師開設(shè)的某
61、門課程改名后,只需修改關(guān)系TC中的一個相應(yīng)元組即可,不會破壞數(shù)據(jù)的完整性。如果一個關(guān)系數(shù)據(jù)庫中所有關(guān)系模式都屬于3NF,則已在很大程度上消除了插入異常和刪除異常,但由于可能存在主屬性對候選鍵的部分依賴和傳遞依賴,因此關(guān)系模式的分離仍不夠徹底。如果一個關(guān)系數(shù)據(jù)庫中所有關(guān)系模式都屬于BCNF,那么在函數(shù)依賴的范疇內(nèi),已經(jīng)實現(xiàn)了模式的徹底分解,消除了產(chǎn)生插入異常和刪除異常的根源,而且數(shù)據(jù)冗余也減少到極小程度。,53,4.4 關(guān)系模式的
62、規(guī)范化,到目前為止,規(guī)范化理論已經(jīng)提出了六類范式(有關(guān)4NF和5NF的內(nèi)容不再詳細(xì)介紹)。各范式級別是在分析函數(shù)依賴條件下對關(guān)系模式分離程度的一種測度,范式級別可以逐級升高。一個低一級范式的關(guān)系模式,通過模式分解轉(zhuǎn)化為若干個高一級范式的關(guān)系模式的集合,這種分解過程叫作關(guān)系模式的規(guī)范化(Normalization)。4.4.1 關(guān)系模式規(guī)范化的目的和原則一個關(guān)系只要其分量都是不可分的數(shù)據(jù)項,就可稱作規(guī)范化的關(guān)系,但這只是最基本的
63、規(guī)范化。這樣的關(guān)系模式是合法的。但人們發(fā)現(xiàn)有些關(guān)系模式存在插入、刪除、修改異常、數(shù)據(jù)冗余等弊病。規(guī)范化的目的就是使結(jié)構(gòu)合理,消除存儲異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。,54,規(guī)范化的基本原則就是遵從概念單一化“一事一地”的原則,即一個關(guān)系只描述一個實體或者實體間的聯(lián)系。若多于一個實體,就把它“分離”出來。因此,所謂規(guī)范化,實質(zhì)上是概念的單一化,即一個關(guān)系表示一個實體。4.4.2 關(guān)系模式規(guī)范化的步驟規(guī)范化就是
64、對原關(guān)系進(jìn)行投影,消除決定屬性不是候選鍵的任何函數(shù)依賴。具體可以分為以下幾步:1.對1NF關(guān)系進(jìn)行投影,消除原關(guān)系中非主屬性對鍵的部分函數(shù)依賴,將1NF關(guān)系轉(zhuǎn)換成若干個2NF關(guān)系。2.對2NF關(guān)系進(jìn)行投影,消除原關(guān)系中非主屬性對鍵的傳遞函數(shù)依賴,將2NF關(guān)系轉(zhuǎn)換成若干個3NF關(guān)系。3.對3NF關(guān)系進(jìn)行投影,消除原關(guān)系中主屬性對鍵的部分函數(shù)依賴和傳遞函數(shù)依賴,也就是說使決定因素都包含一個候選鍵。得到一組BCNF關(guān)系。,55,關(guān)系規(guī)范
65、化的基本步驟如圖4.17所示。,圖4.17 規(guī)范化過程,一般情況下,我們說沒有異常弊病的數(shù)據(jù)庫設(shè)計是好的數(shù)據(jù)庫設(shè)計,一個不好的關(guān)系模式也總是可以通過分解轉(zhuǎn)換成好的關(guān)系模式的集合。但是在分解時要全面衡量,綜合考慮,視實際情況而定。對于那些只要求查詢而不要求插入、刪除等操作的系統(tǒng),幾種異?,F(xiàn)象的存在并不影響數(shù)據(jù)庫的操作。這時便不宜過度分解,否則當(dāng)要對整體查詢時,需要更多的多表連接操作,這有可能得不償失。在實際應(yīng)用中,最有價值的是3NF
66、和BCNF,在進(jìn)行關(guān)系模式的設(shè)計時,通常分解到3NF就足夠了。,56,4.4.2 關(guān)系模式規(guī)范化的要求關(guān)系模式的規(guī)范化過程是通過對關(guān)系模式的投影分解來實現(xiàn)的,但是投影分解方法不是唯一的,不同的投影分解會得到不同的結(jié)果。在這些分解方法中,只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價的方法才是有意義的。下面先給出兩個定義:無損連接性(Lossless Join):設(shè)關(guān)系模式R(U,F(xiàn))被分解為若干個關(guān)系模式R1(U1,F(xiàn)1),R2
67、(U2,F(xiàn)2),…, Rn(Un,F(xiàn)n),其中U=U1U2…UN,且不存在UNUj式,F(xiàn)i為F在Uj上的投影,如果R與R1,R2,…,Rn自然連接的結(jié)果相等,則稱關(guān)系模式R的分解具有無損連接性。函數(shù)依賴保持性(Preserve Dependency):設(shè)關(guān)系模式R(U,F(xiàn))被分解為若干個關(guān)系模式R1(U1,F(xiàn)1),R2(U2,F(xiàn)2),…, Rn(Un,F(xiàn)n),其中U=U1U2…UN,且不存在UNUj式,F(xiàn)i為F在Uj上的投影,如果F所
68、蘊(yùn)含的函數(shù)依賴一定也由分解得到的某個關(guān)系模式中的函數(shù)依賴Fi所蘊(yùn)含,則稱關(guān)系模式R的分解具有函數(shù)依賴保持性。,57,判斷對關(guān)系模式的一個分解是否與原關(guān)系模式等價可以有三種不同的標(biāo)準(zhǔn):1.分解要具有無損連接性。2.分解要具有函數(shù)依賴保持性。3.分解既要具有無損連接性,又要具有函數(shù)依賴保持性。例如,對于4.3.2.2中例4.2的關(guān)系模式SD(SNO,SN,AGE,DEPT,MN),規(guī)范到3NF,可以有以下三種不同的分解方法:第一種
69、:S(SNO,SN,AGE,DEPT)D(DEPT,MN)SD(SNO,SN,AGE,DEPT,MN)=S[SNO,SN,AGE,DEPT]*D[DEPT,MN],也就是說,用其兩個投影在DEPT上的自然連接可復(fù)原關(guān)系模式SD。也就是說這種分解具有無損連接性。對于分解后的關(guān)系模式S,有函數(shù)依賴SNO→DEPT,對于D,有函數(shù)依賴DEPT→MN,這種分解方法保持了原來的SD中的兩個完全函數(shù)依賴SNO→DEPT,DEPT→MN。分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第四章關(guān)系數(shù)據(jù)理論
- 第四章數(shù)據(jù)庫技術(shù)
- 第四章 數(shù)據(jù)庫設(shè)計基礎(chǔ)
- 數(shù)據(jù)庫第四章習(xí)題參考解答
- 數(shù)據(jù)庫-第四章習(xí)題參考解答
- 數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程第四章答案
- 分布式數(shù)據(jù)庫 第四章 分布透明
- 第四章
- 第四章地理信息系統(tǒng)空間數(shù)據(jù)庫
- 第四章
- 材料加工理論-焊接-第四章
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
- 第四章.doc
評論
0/150
提交評論