數(shù)據(jù)庫 - 關系數(shù)據(jù)庫基本知識_第1頁
數(shù)據(jù)庫 - 關系數(shù)據(jù)庫基本知識_第2頁
數(shù)據(jù)庫 - 關系數(shù)據(jù)庫基本知識_第3頁
數(shù)據(jù)庫 - 關系數(shù)據(jù)庫基本知識_第4頁
數(shù)據(jù)庫 - 關系數(shù)據(jù)庫基本知識_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第一章 關系數(shù)據(jù)庫基本知識

復習1.1問題的引出手工模式下用表格收集、表示和查閱信息步驟:表格的設計:根據(jù)要收集數(shù)據(jù)的結構設計空白表格填寫或查閱表格數(shù)據(jù):填寫過程以添加信息為主,但也難免要進行修改(涂改)和刪除(劃去)。填寫和查閱需要交替進行。校對表格數(shù)據(jù):錄入完成后對數(shù)據(jù)進行校對前三個步驟正對應了我們研究的數(shù)據(jù)模型的三個要素:數(shù)據(jù)結構、數(shù)據(jù)操縱和數(shù)據(jù)約束。1.1.1 表格設計手工表格設計原則:盡可能地減少重復:我們把學生基本信息表以班級為單元組織,這樣班級信息就可放在表頭,避免了每個學生都出現(xiàn)重復的班級信息。避免重復也就減少了填寫表格的工作量及出現(xiàn)不一致差錯的可能性。達到上述目標的方法是進行多表的設計:學生信息表和班級信息表。這些設計原則就是關系型數(shù)據(jù)庫設計的范式中所要求的內(nèi)容,上述三部分敘述對應范式中的冗余、各種異常和模式分解。1.1.2 數(shù)據(jù)操縱手工情況下對表格操作分為兩種:表格信息的維護和表格信息的查閱。對表格信息維護包括增加行、修改某些行信息和刪除某些行。手工情況下若要增加列,往往由于紙張寬度的限制,要重新做表,然后把原表格數(shù)據(jù)抄入已增加新列的新表中,導致這種重復的工作的原因是由于表格設計時考慮不周。對表格數(shù)據(jù)的查閱可能要同時對比著查閱多個表格,提高查閱速度的方法是對信息分組、排序或提供索引表。對應上述工作,關系型數(shù)據(jù)庫提供了數(shù)據(jù)插入、刪除和更新語句,同時提供了手工無法比擬的查詢功能,查詢操作包括選擇、投影、連接、除、并、差、交和笛卡爾積運算。同樣,增加一個列不屬于數(shù)據(jù)操縱語言,而屬于數(shù)據(jù)定義語言,是設計階段必須完成的工作。類似手工操作,提高查詢效率的有效方法之一是建立索引。1.1.3 數(shù)據(jù)校對對手工表格數(shù)據(jù)校對所包含的內(nèi)容是否重復:各表格數(shù)據(jù)的一致性:如各表格中姓名的一致性數(shù)據(jù)是否合乎邏輯:如年齡、身高是否在合理的范圍。上述手工校對的內(nèi)容對應的三種數(shù)據(jù)約束:實體完整性、參照完整性和用戶定義完整性。1.2 關系型數(shù)據(jù)結構域:把同質(zhì)的列中表中獨立出來,域包含了這些列取值類型和范圍定義。笛卡爾積:由若干域構成一個二維表的表頭(結構),每個域?qū)粋€列名(屬性),各列在其對應域取值范圍內(nèi)的所有取值的組合,稱為這些域的笛卡爾積。(是行的集合、通常元素個數(shù)無數(shù)、無實際意義)關系(二維表):笛卡爾積的子集,元素個數(shù)可數(shù)、有實際意義。關系的碼:若關系中某個屬性組的值可唯一標識一個元組(行),稱該屬性組為關系的碼。碼具有唯一性和最小性特性。1.3 關系模型的數(shù)據(jù)操作

查詢操作是關系模型數(shù)據(jù)操作的核心復雜的插入、刪除和更新操作需要使用子查詢。數(shù)據(jù)操作的復雜性主要表現(xiàn)為查詢操作查詢操作要實現(xiàn)下列運算集合運算:并、差、交和廣義笛卡爾積關系運算:選擇、投影、連接、除1.4 關系模型的完整性約束

實體完整性:通過設置主鍵實現(xiàn)參照完整性:通過定義引用關系(外鍵)實現(xiàn)用戶定義完整性:包括非空約束(NotNull)、唯一性約束(Unique)、列級和行級自定義邏輯關系約束(check)等。第二章 范式及其對數(shù)據(jù)庫設計的

指導意義

范式理論及對實踐指導意義概述。范式:1NF、2NF、3NF、BCNF、4NF、5NF實例分析及1NF、3NF的認識誤區(qū)關系模型下的樹結構表達供應商和系名問題范式的局限-對冗余的進一步討論單表行間冗余多表間冗余2.1 范式理論及對實踐指導意義概述1)范式理論形成:1971年,由1970年首先提出“大型共享數(shù)據(jù)庫數(shù)據(jù)的關系模型”的關系數(shù)據(jù)庫之父EdgarFrankCodd相繼提出了三級規(guī)范化形式1NF-3NF1974年,E.F.Codd和Boyce共同提出BCNF1977RonaldFagin提出了第四范式以后又相繼提出了5NF(Project-JoinNormalForm(PJ/NF))、DKFN(Domain/KeyNormalForm)和6NF2)各范式之間關系:1NF2NF3NFBCNF4NF5NFDKNF6NF3)規(guī)范化方法:一個屬于低一級的范式的關系模式可以通過模式分解轉換成屬于高一級范式的關系模式,這個過程稱為關系模式的規(guī)范化。4)規(guī)范化目的:消除關系中的數(shù)據(jù)冗余由于數(shù)據(jù)冗余引發(fā)的問題:浪費了存儲資源,并且重復的數(shù)據(jù)占用的空間隨數(shù)據(jù)量的遞增而遞增。由于數(shù)據(jù)的重復,為保證數(shù)據(jù)的一致性,將增加數(shù)據(jù)維護(插入、更新和刪除)的代價,從而降低了系統(tǒng)的開發(fā)和運行效率各種意外還是可能造成重復數(shù)據(jù)的不一致,從而降低了系統(tǒng)的穩(wěn)定性和可靠性。是產(chǎn)生插入,更新和刪除異常根源(見下例)插入,更新和刪除異常實例:假設存在下列關系,包含學生和系的基本信息:學號 姓名 所在系 系主任001 zhang 數(shù)學 MrLi002 wang 數(shù)學 MrLi003 zhou 數(shù)學 MrLi004 feng 計算機 Mrchen005 dong 計算機 Mrchen該關系存在插入,更新和刪除異常。插入異常:當新成立一個系但還沒有學生時,產(chǎn)生插入異常。刪除異常:當一個系的學生被全部刪除后,系信息也被刪除。更新異常:當系名稱或系主任發(fā)生變化,必須同時更新這個系所有學生記錄,若漏改一個,就產(chǎn)生更新異常。5)規(guī)范化理論對實踐的指導意義異常分類:關系設計不規(guī)范引起插入,更新和刪除異常有的可以通過嚴密的算法避免發(fā)生,有的則不能避免。在上例中,插入和刪除異常不可避免,而更新異常卻可以避免。不可避免異常:若數(shù)據(jù)庫的設計中存在不可避免的異常時,需求將無法實現(xiàn),設計者會自覺地消除這些異常。在上例中,一般會增加一個“系(系名,系主任)”關系來排除不可避免的插入和刪除異常。這時,規(guī)范化設計成為設計師自覺的行動可避免異常:關系規(guī)范化理論對設計者有指導意義的是消除可避免異常引起的數(shù)據(jù)冗余。冗余和范式關系:一般消除了一個關系中的數(shù)據(jù)冗余(除外鍵引用為必要的數(shù)據(jù)冗余外),該關系也就符合了范式要求。一個關系符合范式要求,一般就不會產(chǎn)生數(shù)據(jù)冗余,但必須注意的是范式可以消除一個關系中的(單行)數(shù)據(jù)冗余,但不能消除一個表的行間冗余和多個關系之間的數(shù)據(jù)冗余。2.2 范式

2.2.1 1NF及對實踐的指導意義

1)定義1NF的定義1:若關系中所有屬性是不可再分的基本項(原子項),即關系中的屬性不能是組合屬性,稱關系屬于或服從第一范式。1NF的定義2:關系模式R中不能含有任何重復的數(shù)據(jù)項。(RobertD.Schnneider規(guī)劃與建立高性能SQLServer6.5數(shù)據(jù)庫)第一范式是關系數(shù)據(jù)模式必須遵循的規(guī)范,其他規(guī)范均建立在此基礎之上。關系的一切數(shù)學理論均基于關系模式服從1NF。如一個學生的成績包括數(shù)學,語文,外語等,則成績不能作為學生關系中的一個屬性。要使其符合1NF,必須把數(shù)學,語文,外語成績直接作為學生關系的屬性。由于關系數(shù)據(jù)庫中表中列之間的關系相互并列,本身不支持層次結構或數(shù)組,所以表面上看,只要是二維表,就一定符合1NF2)1NF的第一層次的解釋3)1NF的第二層次的解釋不要或沒有必要把若干屬性或代碼組合成一個組合屬性或組合代碼放在一個數(shù)據(jù)列中。這同樣違反1NF。這樣做的風險是數(shù)據(jù)庫系統(tǒng)對組合屬性中某屬性的可操作性(子串)一定不如對列的可操作性。解決上述問題的方法也不要簡單地把組合屬性分解成列,當這些屬性有擴充的可能時,應單獨建立一個關系。(后面有詳例分析)4)1NF的第三層次的解釋1NF要求在一行中不能有重復組,不管是重復的列還是列中含有的重復信息都不允許。(數(shù)據(jù)庫設計)如不要把數(shù)學成績,語文成績和外語成績作為學生關系中的屬性,因為,一旦增加一門課程,該關系就必須作修改。正確的做法是把成績獨立出來,形成的關系模型為:成績(學號,學科號,成績)類似的如在學生關系中有聯(lián)系電話屬性,而每一個學生可能有不確定的電話數(shù)量,則增加屬性“電話1”、“電話2”…,同樣不符合1NF要求,正確的做法是增加關系:R(學號,電話號碼)2.2.2 2NF及對實踐的指導意義關系屬于第一范式并且每一個非主屬性完全依賴于碼,則稱關系屬于第二范式。由于非主屬性均函數(shù)依賴于碼,所以第二范式去除了非主屬性對碼的部分依賴。假設(x,y)為關系R(U)的碼,有非主屬性z,yz,由于y不包含碼,所以關系的行中y值必有重復,yz,z值與y值同步重復。一般可以把R(U)分解成R1(U-{z})和R2(y,z),使子關系均屬于2NF,同時消除了冗余。 單據(jù)號 單據(jù)日期 品號 品名 數(shù)量

b001 2003-2-1 G01 A 10 b001 2003-2-1 G02 B 12 b002 2004-2-7 G02 B 20{單據(jù)號,品號}為關系的主碼,“單據(jù)日期”為非主屬性,“單據(jù)號”“單據(jù)日期”,即非主屬性“單據(jù)日期”部分依賴于碼,這種設計的數(shù)據(jù)冗余顯而易見。把關系分解為:單據(jù)摘要(單據(jù)號*、單據(jù)日期)和單據(jù)明細(單據(jù)號*,品號*,品名,數(shù)量),通過單據(jù)號建立關聯(lián)。例.單據(jù)的單表設計就不屬于第2范式思考練習:分別完成單據(jù)的兩種設計下的下列操作的設計,并進行比較:單據(jù)明細的增加,刪除和修改單據(jù)的增加和刪除。空白單據(jù)的處理 若把學生學科成績設計成(學號,姓名,學科號,學科名,成績),該關系就不符合第二范式。(“學號”,“學科號”)為該關系的主鍵(碼),非主屬性中,除“成績”完全依賴于主鍵,“姓名”和“學科名”不完全依賴于主鍵,即僅分別完全依賴于主鍵的子集“學號”和“學科號”。 要使其符合2NF,必須把上述關系分解成三個關系:學生(學號,姓名,…)、學科(學科號,學科名,…)和成績(學號,學科號,成績)。例.學生學科成績的關系模型設計2.2.3 3NF及對實踐的指導意義關系屬于第一范式且關系中不存在非主屬性Z傳遞函數(shù)依賴于碼,則稱關系屬于第三范式。在傳遞函數(shù)依賴XYZ的定義中隱含YX和ZY,但3NF定義中的傳遞函數(shù)依賴允許YX(YX),由此才能保證2NF3NF。假如不放寬傳遞函數(shù)依賴條件,則關系:學生選課(學號,課程號,課程名)不符合2NF但符合3NF,因為我們找不到屬性組Y,使唯一的非主屬性“課程名”傳遞函數(shù)依賴于碼(學號,課程號),即(學號,課程號)

Y課程名。而定義條件放寬后,可取Y=“課程號”。第三范式是在關系中去除非主屬性對碼的傳遞函數(shù)依賴。不屬于3NF必然存在冗余X,Y,Z為關系R(U)的屬性組,且X為碼,XYZ,由于Y+>X,所以Y必不包含碼,在關系的行中Y值必有重復,而YZ,所以Z值同步重復。一般可以把R(U)分解成R1(U-{Z})和R2(Y,Z),使子關系均屬于3NF,同時消除了冗余。如在學生關系中增加所在“系”和“系主任”屬性,則該關系就不符合第三范式,因為由依賴關系“學號

系主任”,中間就存在了傳遞函數(shù)依賴,學號

系主任。 學號 姓名 系 系主任 001 wang 數(shù)學 Li 002 Feng 數(shù)學 Li 003 Cheng 數(shù)學 Li 004 Huang 物理 Xu

顯然這種設計存在數(shù)據(jù)冗余正確的做法是在學生關系中增加“系編號”屬性,同時增加一個關系:系(系編號,系名,系主任)。 學號 姓名 系號 系號 系 系主任 001 wang 01 01 數(shù)學 Li 002 Feng01 02 物理 Xu 003 Cheng01 004 Huang02單據(jù)中包含商品代碼外,還包括商品屬性,同樣不符合第三范式,因為存在下列傳遞函數(shù)依賴:(單據(jù)號,單據(jù)明細序號)商品代碼商品屬性。2.2.4 BCNF-擴充的第三范式關系模式R(U,F)1NF,若XY(Y

X),X必包含碼,則R(U,F)BCNF。BCNF是在3NF基礎上去除主屬性對碼的部分和傳遞依賴。X,Y為關系R(U)的屬性組,XY,且X不包含碼,在關系的行中X值必有重復,而XY,所以Y值同步重復。一般可以把R(U)分解成R1(U-{Y})和R2(X,Y),使子關系均屬于BCNF,同時消除了冗余。屬于3NF但不屬于BCNF的例:

學生選課(學號,課程號,教師編號,成績),假設一個教師只上一門課。則:教師編號

課程號,但教師編號不是關系的碼,所以此關系不屬于BCNF。 學號 課程號 教師編號 成績

001 數(shù)據(jù)庫 Li 89 001 C語言 Zhang 76 002 數(shù)據(jù)庫 Li 99 003 數(shù)據(jù)庫 Li 87 顯然這種設計存在數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論