




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章緒論1.1數(shù)據(jù)管理技術(shù)的發(fā)展1.2數(shù)據(jù)庫系統(tǒng)1.3數(shù)據(jù)模型與數(shù)據(jù)模式1.4數(shù)據(jù)庫管理系統(tǒng)1.1數(shù)據(jù)管理技術(shù)的發(fā)展人工管理階段(20世紀(jì)50年代中期以前)文件系統(tǒng)階段(20世紀(jì)50年代后期60年代中期)數(shù)據(jù)庫系統(tǒng)階段(20世紀(jì)60年代后期之后)人工管理階段時(shí)期20世紀(jì)40年代中--50年代中背景應(yīng)用需求:科學(xué)計(jì)算 硬件條件:無直接存取存儲設(shè)備軟件水平:沒有操作系統(tǒng) 處理方式:批處理 人工管理階段特點(diǎn)數(shù)據(jù)管理者:用戶(程序員)數(shù)據(jù)應(yīng)用范圍:單一應(yīng)用程序數(shù)據(jù)共享程度:無共享、冗余度極大數(shù)據(jù)獨(dú)立性:不獨(dú)立,完全依賴于程序數(shù)據(jù)結(jié)構(gòu)化:無結(jié)構(gòu)數(shù)據(jù)控制:應(yīng)用程序負(fù)責(zé)人工管理階段程序與數(shù)據(jù)之間的關(guān)系圖程序與數(shù)據(jù)之間的關(guān)系(人工管理階段)應(yīng)用程序1數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)n應(yīng)用程序2應(yīng)用程序n…………訪問訪問訪問文件系統(tǒng)階段時(shí)期20世紀(jì)50年代末--60年代中背景應(yīng)用需求:科學(xué)計(jì)算+數(shù)據(jù)管理 硬件條件:磁盤、磁鼓(直接存取設(shè)備)
軟件水平:有文件系統(tǒng) 處理方式:聯(lián)機(jī)分時(shí)處理+批處理 文件系統(tǒng)階段特點(diǎn)數(shù)據(jù)管理者:文件系統(tǒng),數(shù)據(jù)可長期保存數(shù)據(jù)應(yīng)用范圍:某些應(yīng)用程序數(shù)據(jù)共享程度:共享性差、冗余度大數(shù)據(jù)結(jié)構(gòu)化:記錄內(nèi)有結(jié)構(gòu),無整體結(jié)構(gòu)數(shù)據(jù)獨(dú)立性:較差,數(shù)據(jù)的邏輯結(jié)構(gòu)改變必須修改應(yīng)用程序數(shù)據(jù)控制:應(yīng)用程序負(fù)責(zé)文件系統(tǒng)階段圖程序與數(shù)據(jù)之間的關(guān)系(文件系統(tǒng)階段)應(yīng)用程序1文件1文件2文件n應(yīng)用程序2應(yīng)用程序n…………文件系統(tǒng)存取方法
程序與數(shù)據(jù)之間的關(guān)系文件系統(tǒng)是操作系統(tǒng)用于管理輔存(磁盤/磁帶)數(shù)據(jù)的子系統(tǒng),提供數(shù)據(jù)的物理存儲和存取方法在文件系統(tǒng)中,一個命名的數(shù)據(jù)集合稱為文件文件是操作系統(tǒng)管理數(shù)據(jù)的基本單位文件系統(tǒng)文件管理方式本質(zhì)上是把數(shù)據(jù)組織成文件形式存儲在磁盤上用戶通過編程,定義數(shù)據(jù)的邏輯結(jié)構(gòu)和輸入輸出(I/O)格式應(yīng)用程序由于必須直接訪問所使用的數(shù)據(jù)文件,所以完全依賴于數(shù)據(jù)文件的存儲結(jié)構(gòu)當(dāng)數(shù)據(jù)文件修改時(shí),應(yīng)用程序必須作相應(yīng)修改文件系統(tǒng)文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)記錄內(nèi)有結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)由應(yīng)用程序定義和解釋數(shù)據(jù)項(xiàng)一般是定長的可以間接實(shí)現(xiàn)數(shù)據(jù)變長要求,但訪問相應(yīng)數(shù)據(jù)的應(yīng)用程序變復(fù)雜文件是孤立的,數(shù)據(jù)整體無結(jié)構(gòu)可以間接實(shí)現(xiàn)數(shù)據(jù)整體結(jié)構(gòu),但必須在應(yīng)用程序中描述文件之間的聯(lián)系數(shù)據(jù)的最小存取單位是記錄數(shù)據(jù)庫系統(tǒng)階段從20世紀(jì)60年代末開始,數(shù)據(jù)管理技術(shù)進(jìn)入數(shù)據(jù)庫系統(tǒng)階段,其標(biāo)志是:
(1)1968年,美國IBM公司推出層次模型的IMS系統(tǒng)(2)1969年,美國CODASYL組織發(fā)布了DBTG報(bào)告,對當(dāng)時(shí)各式各樣的數(shù)據(jù)庫進(jìn)行了總結(jié),提出網(wǎng)狀模型
(3)1970年,美國IBM公司的E.F.Codd連續(xù)發(fā)表論文,提出關(guān)系模型,奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)
數(shù)據(jù)庫系統(tǒng)階段時(shí)期20世紀(jì)60年代末之后背景應(yīng)用需求:大規(guī)模數(shù)據(jù)管理 硬件條件:大容量磁盤、磁盤陣列 軟件水平:數(shù)據(jù)庫管理系統(tǒng) 處理方式:聯(lián)機(jī)實(shí)時(shí)處理+分布處理
數(shù)據(jù)庫系統(tǒng)階段圖程序與數(shù)據(jù)之間的關(guān)系(數(shù)據(jù)庫系統(tǒng)階段)
程序與數(shù)據(jù)之間的關(guān)系應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n……數(shù)據(jù)庫管理系統(tǒng)DBMS數(shù)據(jù)庫數(shù)據(jù)管理各階段的比較人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段產(chǎn)生背景應(yīng)用需求科學(xué)計(jì)算科學(xué)計(jì)算機(jī)/數(shù)據(jù)管理大規(guī)模數(shù)據(jù)管理硬件水平無直接存儲設(shè)備磁盤/磁鼓大容量磁盤軟件水平?jīng)]有操作系統(tǒng)和數(shù)據(jù)管理軟件高級語言+操作系統(tǒng)(文件系統(tǒng))數(shù)據(jù)庫管理系統(tǒng)(DBMS)處理方式批處理聯(lián)機(jī)實(shí)時(shí)處理+批處理聯(lián)機(jī)實(shí)時(shí)處理+分布式處理特點(diǎn)數(shù)據(jù)的管理者應(yīng)用程序文件系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)應(yīng)用范圍單個應(yīng)用程序單個或少量應(yīng)用程序多個應(yīng)用整個企業(yè)數(shù)據(jù)管理各階段的比較特點(diǎn)數(shù)據(jù)共享程度無共享共享性差共享性好數(shù)據(jù)獨(dú)立性不獨(dú)立,完全依賴于程序記錄內(nèi)有結(jié)構(gòu),整體無結(jié)構(gòu),獨(dú)立性差高度的物理獨(dú)立性和一定的邏輯獨(dú)立性數(shù)據(jù)結(jié)構(gòu)化無結(jié)構(gòu)若數(shù)據(jù)的邏輯結(jié)構(gòu)改變則必須修改應(yīng)用程序采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),整體結(jié)構(gòu)化數(shù)據(jù)控制完全由應(yīng)用程序控制基本由應(yīng)用程序控制由DBMS統(tǒng)一管理和控制,提供數(shù)據(jù)庫的并發(fā)控制,數(shù)據(jù)庫的恢復(fù),數(shù)據(jù)的完整性和數(shù)據(jù)安全性等支持 用戶接口無物理存取數(shù)據(jù)庫系統(tǒng)為用戶提供方便的用戶接口1.2數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫的定義數(shù)據(jù)庫系統(tǒng)的定義數(shù)據(jù)庫系統(tǒng)的組成數(shù)據(jù)庫系統(tǒng)的特征數(shù)據(jù)庫(Database,簡稱DB)是長期儲存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合數(shù)據(jù)庫是相互關(guān)聯(lián)的數(shù)據(jù)集合,其中的數(shù)據(jù)能夠?yàn)樘囟ńM織(如企事業(yè)單位)的多種應(yīng)用服務(wù)數(shù)據(jù)庫中的數(shù)據(jù)具有以下特點(diǎn):描述了現(xiàn)實(shí)世界的某些方面數(shù)據(jù)間有密切聯(lián)系具有最小的冗余度和較高的獨(dú)立性可服務(wù)于多個應(yīng)用可被多用戶共享使用數(shù)據(jù)庫的定義數(shù)據(jù)庫系統(tǒng)(DatabaseSystem/DBS)是實(shí)現(xiàn)有組織、動態(tài)地存儲大量相關(guān)的結(jié)構(gòu)化數(shù)據(jù)、方便各類用戶訪問的計(jì)算機(jī)軟/硬件資源的集合DBS是由數(shù)據(jù)庫(DB)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)以及應(yīng)用程序等組合構(gòu)成的完整系統(tǒng)有時(shí)也將與數(shù)據(jù)庫系統(tǒng)有關(guān)的人員添加到數(shù)據(jù)庫系統(tǒng)中,形成廣義的數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)的定義數(shù)據(jù)庫系統(tǒng)的組成硬件平臺軟件平臺數(shù)據(jù)庫(DB)數(shù)據(jù)庫管理系統(tǒng)(DBMS)開發(fā)工具應(yīng)用程序用戶構(gòu)成數(shù)據(jù)庫系統(tǒng)的主要軟件成分:數(shù)據(jù)庫管理系統(tǒng)(DBMS):為建立、使用和維護(hù)數(shù)據(jù)庫而配置的通用軟件系統(tǒng),是整個數(shù)據(jù)庫系統(tǒng)的核心具有與數(shù)據(jù)庫接口的高級語言及編譯系統(tǒng)以DBMS為核心的應(yīng)用開發(fā)工具為滿足特定應(yīng)用需求開發(fā)的應(yīng)用程序數(shù)據(jù)庫系統(tǒng)的組成數(shù)據(jù)庫管理員(DBA)全面負(fù)責(zé)數(shù)據(jù)庫系統(tǒng)的管理、維護(hù)和正常使用的人員應(yīng)用程序員負(fù)責(zé)設(shè)計(jì)和編寫應(yīng)用系統(tǒng)的程序模塊,并進(jìn)行調(diào)試、安裝和維護(hù)終端用戶(EndUser)又稱為最終用戶,通過應(yīng)用系統(tǒng)的用戶接口使用數(shù)據(jù)庫。常用的接口方式有瀏覽器、菜單驅(qū)動、表格操作、圖形顯示、報(bào)表書寫等,給用戶提供簡明直觀的數(shù)據(jù)表示數(shù)據(jù)庫系統(tǒng)的用戶
數(shù)據(jù)庫
應(yīng)用系統(tǒng)應(yīng)用開發(fā)工具
操作系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理員用戶用戶用戶
數(shù)據(jù)庫系統(tǒng)的組成數(shù)據(jù)庫系統(tǒng)的特征(1)面向全組織的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)反映了客觀事物間的本質(zhì)聯(lián)系,是有結(jié)構(gòu)的數(shù)據(jù)集合而文件只是記錄的有序集合,不同文件中的記錄之間缺少邏輯聯(lián)系這是數(shù)據(jù)庫系統(tǒng)的主要特征之一,也是數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的根本區(qū)別之一數(shù)據(jù)庫系統(tǒng)的特征(2)信息完整且功能通用數(shù)據(jù)庫系統(tǒng)的通用性是由于將數(shù)據(jù)的定義和描述(即所謂“元數(shù)據(jù)”)從應(yīng)用程序中分離并統(tǒng)一存儲管理所謂元數(shù)據(jù)(MetaData)是指數(shù)據(jù)的描述信息,包括數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲格式、數(shù)據(jù)類型、數(shù)據(jù)的完整性約束等應(yīng)用程序如果要訪問數(shù)據(jù)庫,首先通過DBMS取得有關(guān)元數(shù)據(jù),然后根據(jù)這些信息存取數(shù)據(jù)庫中的數(shù)據(jù)在文件系統(tǒng)中,元數(shù)據(jù)分散在不同的應(yīng)用程序中,故文件只能與訪問這些文件的應(yīng)用程序形成特定關(guān)系,其它的應(yīng)用程序由于不了解元數(shù)據(jù)而無法訪問文件數(shù)據(jù)庫系統(tǒng)的特征(3)數(shù)據(jù)冗余度小、易擴(kuò)充強(qiáng)調(diào)數(shù)據(jù)集中統(tǒng)一管理,盡量對數(shù)據(jù)進(jìn)行共享,因此冗余度降低不僅節(jié)省存儲空間、減少存取時(shí)間,而且避免數(shù)據(jù)之間的不相容和不一致每個應(yīng)用選用數(shù)據(jù)庫的一個子集,只要重新選取不同子集或者加上一小部分?jǐn)?shù)據(jù),就可以滿足新的應(yīng)用要求,即易擴(kuò)充數(shù)據(jù)庫系統(tǒng)的特征(4)面向?qū)嶋H應(yīng)用的數(shù)據(jù)抽象(又稱數(shù)據(jù)模型化)數(shù)據(jù)庫系統(tǒng)提供了面向現(xiàn)實(shí)世界數(shù)據(jù)的抽象概念表示,使得用戶不必了解數(shù)據(jù)庫文件的存儲結(jié)構(gòu)、存儲位置、存取方法等細(xì)節(jié)就能訪問數(shù)據(jù)庫不同類型的數(shù)據(jù)庫系統(tǒng)使用不同的數(shù)據(jù)模型實(shí)現(xiàn)數(shù)據(jù)的抽象概念表示數(shù)據(jù)模型屏蔽了數(shù)據(jù)存放的物理細(xì)節(jié),這種方法表達(dá)的數(shù)據(jù)更容易被用戶理解數(shù)據(jù)庫系統(tǒng)的特征(4)面向?qū)嶋H應(yīng)用的數(shù)據(jù)抽象(又稱數(shù)據(jù)模型化)在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)存儲結(jié)構(gòu)、存取方法等細(xì)節(jié)完全由系統(tǒng)負(fù)責(zé)訪問數(shù)據(jù)庫時(shí),用戶只須引用數(shù)據(jù)的抽象概念表示,DBMS負(fù)責(zé)提取數(shù)據(jù)的存儲結(jié)構(gòu)、存取方法等細(xì)節(jié),把用戶引用的抽象概念轉(zhuǎn)換為物理表示,完成用戶的訪問要求數(shù)據(jù)庫系統(tǒng)的特征(5)支持?jǐn)?shù)據(jù)的不同視圖所謂視圖(View)是指從不同視角觀察數(shù)據(jù)庫中數(shù)據(jù)的機(jī)制一個視圖是一個或多個數(shù)據(jù)庫的子集按某種方式構(gòu)成的虛擬數(shù)據(jù)庫(不是實(shí)際存儲的數(shù)據(jù)庫)數(shù)據(jù)庫系統(tǒng)提供了定義、維護(hù)和操縱視圖的功能各個用戶可以根據(jù)需要為自己的應(yīng)用程序定義視圖并維護(hù)和操縱它數(shù)據(jù)庫系統(tǒng)的特征(6)較高的數(shù)據(jù)的獨(dú)立性由于數(shù)據(jù)庫系統(tǒng)對所有元數(shù)據(jù)作統(tǒng)一存儲和管理,從而實(shí)現(xiàn)了應(yīng)用程序與數(shù)據(jù)的獨(dú)立性即當(dāng)文件結(jié)構(gòu)改變時(shí),應(yīng)用程序不必改變,這是因?yàn)橥ㄟ^DBMS完成對元數(shù)據(jù)相應(yīng)修改,即可適應(yīng)變化數(shù)據(jù)的存取由系統(tǒng)管理,用戶不必考慮存取路徑等細(xì)節(jié),簡化了應(yīng)用程序開發(fā)而在文件系統(tǒng)中,元數(shù)據(jù)嵌套在應(yīng)用程序中,文件結(jié)構(gòu)的任何改變將引起所有訪問該文件的應(yīng)用程序的改變數(shù)據(jù)庫系統(tǒng)的特征(6)較高的數(shù)據(jù)的獨(dú)立性數(shù)據(jù)描述是分級的(全局邏輯、局部邏輯、物理存儲),實(shí)現(xiàn)了兩級數(shù)據(jù)獨(dú)立性物理獨(dú)立性指用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨(dú)立的。當(dāng)數(shù)據(jù)的物理存儲改變了,應(yīng)用程序不用改變邏輯獨(dú)立性指用戶的應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨(dú)立的。數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,用戶程序也可以不變數(shù)據(jù)庫系統(tǒng)的特征(7)支持多種用戶界面不同的用戶具有不同的技術(shù)背景和不同的使用要求數(shù)據(jù)庫系統(tǒng)針對不同用戶的情況,提供多種界面:數(shù)據(jù)庫查詢語言:面向具有數(shù)據(jù)庫系統(tǒng)知識的用戶程序設(shè)計(jì)語言界面:面向應(yīng)用程序員菜單、圖形和自然界面:面向終端用戶數(shù)據(jù)庫系統(tǒng)的特征(8)完善的數(shù)據(jù)管理控制功能數(shù)據(jù)的安全性控制(Security)保護(hù)數(shù)據(jù)以防止不合法的使用所造成的數(shù)據(jù)泄露和破壞措施:用戶標(biāo)識與鑒定,存取控制數(shù)據(jù)的完整性控制(Integrity)數(shù)據(jù)的正確性、有效性、相容性措施:完整性約束條件定義和檢查并發(fā)控制(Concurrency)對多用戶的并發(fā)操作加以控制、協(xié)調(diào),防止其互相干擾而得到錯誤的結(jié)果并使數(shù)據(jù)庫完整性遭到破壞措施:鎖(Lock)1.3數(shù)據(jù)模型與數(shù)據(jù)庫模式數(shù)據(jù)(Data)與信息(Information)數(shù)據(jù)模型(DataModel)數(shù)據(jù)模式(DataSchema)
數(shù)據(jù)模型使用數(shù)據(jù)庫技術(shù),首先必須把現(xiàn)實(shí)世界中的事物表示為計(jì)算機(jī)能夠處理的數(shù)據(jù)在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息數(shù)據(jù)的語法和語義任何數(shù)據(jù)都有語法、語義兩個方面語法(Syntax)是指數(shù)據(jù)的格式規(guī)定,如規(guī)定數(shù)據(jù)是數(shù)值型、字符型、日期型等語義(Semantic)是指數(shù)據(jù)本身的含義例:數(shù)據(jù):10000000一千萬10Million語義1:某人銀行帳戶上的存款余額語義2:某企業(yè)年銷售額…數(shù)據(jù)舉例數(shù)據(jù):(200805301,李明,男,19900607,陜西省西安市,軟件學(xué)院,2008)語義:學(xué)號、姓名、性別、出生日期、籍貫、所在院系、入學(xué)時(shí)間解釋:李明是大學(xué)生,男生,1990年6月7日出生,陜西省西安市人,2008年考入軟件學(xué)院數(shù)據(jù)模型數(shù)據(jù)模型是規(guī)定現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,是用來描述數(shù)據(jù)的語法、語義和操作的一組概念的集合數(shù)據(jù)模型是對現(xiàn)實(shí)世界某方面的抽象和模擬數(shù)據(jù)模型應(yīng)滿足三方面要求能比較真實(shí)地反映現(xiàn)實(shí)世界容易為人所理解便于在計(jì)算機(jī)上實(shí)現(xiàn)
三類數(shù)據(jù)模型概念模型也稱信息模型,它是按用戶的觀點(diǎn)對數(shù)據(jù)和信息建模,用于數(shù)據(jù)庫概念設(shè)計(jì)和建模邏輯模型也稱數(shù)據(jù)模型(狹義),它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對數(shù)據(jù)建模,主要包括網(wǎng)狀模型、層次模型、關(guān)系模型、面向?qū)ο竽P偷龋糜跀?shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)物理模型也稱存儲模型,它是對數(shù)據(jù)最底層的抽象,描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,在磁盤或磁帶上的存儲方式和存取方法三類數(shù)據(jù)模型DBMS支持的數(shù)據(jù)模型概念模型認(rèn)識抽象信息世界機(jī)器世界現(xiàn)實(shí)世界中客觀對象的抽象過程現(xiàn)實(shí)世界現(xiàn)實(shí)世界概念模型數(shù)據(jù)庫設(shè)計(jì)人員完成邏輯模型物理模型由DBMS完成概念模型邏輯模型數(shù)據(jù)庫設(shè)計(jì)人員完成
數(shù)據(jù)模型三要素?cái)?shù)據(jù)結(jié)構(gòu)數(shù)據(jù)操作完整性約束條件
數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫的組成對象,以及對象之間的聯(lián)系描述內(nèi)容與數(shù)據(jù)類型、內(nèi)容、性質(zhì)有關(guān)的對象與數(shù)據(jù)之間聯(lián)系有關(guān)的對象數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述
數(shù)據(jù)操作
對數(shù)據(jù)庫中各種對象(型)的實(shí)例(值)允許執(zhí)行的操作及有關(guān)的操作規(guī)則數(shù)據(jù)操作的類型查詢更新(包括插入、刪除、修改)
數(shù)據(jù)操作
數(shù)據(jù)模型對操作的定義操作的確切含義操作符號操作規(guī)則(如優(yōu)先級)實(shí)現(xiàn)操作的語言數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述完整性約束條件
一組完整性規(guī)則的集合完整性規(guī)則:給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和儲存規(guī)則用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容概念模型概念模型用于信息世界的建模是現(xiàn)實(shí)世界到機(jī)器世界的一個中間層次是數(shù)據(jù)庫設(shè)計(jì)的工具是數(shù)據(jù)庫設(shè)計(jì)人員和用戶之間進(jìn)行交流的語言工具概念模型對概念模型的基本要求較強(qiáng)的語義表達(dá)能力能夠方便、直接地表達(dá)應(yīng)用中的各種語義知識簡單、清晰、易于用戶理解實(shí)體-聯(lián)系(ER)模型最常用的概念模型的表示方法是實(shí)體-聯(lián)系方法(Entity-RelationshipApproach)1976年,P.P.S.Chen提出E-R模型,用E-R圖來描述概念模型觀點(diǎn):客觀世界是由一組稱作實(shí)體的基本對象和這些對象之間的聯(lián)系構(gòu)成的ER模型與DBMS所支持的數(shù)據(jù)模型相獨(dú)立,是各種數(shù)據(jù)模型的共同基礎(chǔ)信息世界中的基本概念(1)實(shí)體(Entity)
客觀存在并可相互區(qū)別的事物稱為實(shí)體,可以是具體的人、事、物或抽象的概念實(shí)體集(entityset):具有共同屬性的所有實(shí)體的集合;實(shí)體實(shí)例(entityinstance):實(shí)體集中的單個實(shí)體;例:學(xué)生,職工,部門,課程,…都是實(shí)體(集),而“王英”,“張凡”都是“學(xué)生”實(shí)體集中的實(shí)體實(shí)例(值)實(shí)體的表示:
E={e1,e2,…,en}(外延法)E(A1,…,An)(內(nèi)涵法)信息世界中的基本概念(2)屬性(Attribute)實(shí)體(或聯(lián)系)所具有的某方面特征稱為屬性一個實(shí)體可以由若干個屬性來刻畫值集:屬性的取值范圍,也稱為域(Domain)根據(jù)屬性的取值方式,可以將屬性進(jìn)一步區(qū)分為::簡單屬性與復(fù)合屬性:單值屬性與多值屬性:標(biāo)識性屬性與描述性屬性:固有屬性與導(dǎo)出屬性:屬性的表示:一般屬性:A:E→ρ(V1)×ρ(V2)……×ρ(Vn)簡單屬性:A:E→ρ(V)(3)碼(Key)唯一標(biāo)識實(shí)體的屬性集稱為碼信息世界中的基本概念(4)聯(lián)系(Relationship)
現(xiàn)實(shí)世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界中反映為實(shí)體內(nèi)部的聯(lián)系和實(shí)體之間的聯(lián)系將發(fā)生在實(shí)體之間具有特定含義的對應(yīng)關(guān)系稱為聯(lián)系注意,與實(shí)體一樣,也存在聯(lián)系集(型)與聯(lián)系值的區(qū)別兩個實(shí)體型之間的聯(lián)系(8/30)實(shí)體型A聯(lián)系名實(shí)體型B111:1聯(lián)系實(shí)體型A聯(lián)系名1n1:n聯(lián)系實(shí)體型A實(shí)體型B聯(lián)系名mnm:n聯(lián)系實(shí)體型B用圖形來表示兩個實(shí)體型之間的三類聯(lián)系
兩個實(shí)體型之間的聯(lián)系
一對一聯(lián)系(1:1)定義:如果對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中至多有一個(也可以沒有)實(shí)體與之聯(lián)系,反之亦然,則稱實(shí)體集A與實(shí)體集B具有一對一聯(lián)系,記為1:1
實(shí)例:一個班級只有一個正班長一個班長只在一個班中任職班級班級-班長班長111:1聯(lián)系兩個實(shí)體型之間的聯(lián)系一對多聯(lián)系(1:n)定義:如果對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中有n個實(shí)體(n≥0)與之聯(lián)系,反之,對于實(shí)體集B中的每一個實(shí)體,實(shí)體集A中至多只有一個實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B有一對多聯(lián)系,記為1:n實(shí)例:一個班級中有若干名學(xué)生,每個學(xué)生只在一個班級中學(xué)習(xí)班級組成學(xué)生1n1:n聯(lián)系兩個實(shí)體型之間的聯(lián)系多對多聯(lián)系(m:n)定義:如果對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中有n個實(shí)體(n≥0)與之聯(lián)系,反之,對于實(shí)體集B中的每一個實(shí)體,實(shí)體集A中也有m個實(shí)體(m≥0)與之聯(lián)系,則稱實(shí)體集A與實(shí)體B具有多對多聯(lián)系,記為m:n實(shí)例:一門課程同時(shí)有若干個學(xué)生選修一個學(xué)生可以同時(shí)選修多門課程課程選修學(xué)生mnm:n聯(lián)系兩個以上實(shí)體型之間的聯(lián)系兩個以上實(shí)體型之間一對多聯(lián)系若實(shí)體集E1,E2,...,En存在聯(lián)系,對于實(shí)體集Ej(j=1,2,...,i-1,i+1,...,n)中的給定實(shí)體,最多只和Ei中的一個實(shí)體相聯(lián)系,則我們說Ei與E1,E2,...,Ei-1,Ei+1,...,En之間的聯(lián)系是一對多的兩個以上實(shí)體型之間的聯(lián)系實(shí)例
課程、教師與參考書三個實(shí)體型一門課程可以有若干個教師講授使用若干本參考書每一個教師只講授一門課程每一本參考書只供一門課程使用課程講授教師1m兩個以上實(shí)體型間1:n聯(lián)系參考書n兩個以上實(shí)體型之間的聯(lián)系兩個以上實(shí)體型間的多對多聯(lián)系例:供應(yīng)商、項(xiàng)目、零件三個實(shí)體型一個供應(yīng)商可以供給多個項(xiàng)目多種零件每個項(xiàng)目可以使用多個供應(yīng)商供應(yīng)的零件每種零件可由不同供應(yīng)商供給兩個以上實(shí)體型之間的聯(lián)系供應(yīng)商供應(yīng)項(xiàng)目mp兩個以上實(shí)體型間m:n聯(lián)系零件n單個實(shí)體型內(nèi)的聯(lián)系一對多聯(lián)系實(shí)例
職工實(shí)體型內(nèi)部具有領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的聯(lián)系某一職工(干部)“領(lǐng)導(dǎo)”若干名職工一個職工僅被另外一個職工直接領(lǐng)導(dǎo)這是一對多的聯(lián)系一對一聯(lián)系請舉例職工領(lǐng)導(dǎo)1n單個實(shí)體型內(nèi)部1:n聯(lián)系單個實(shí)體型內(nèi)的聯(lián)系實(shí)體型1聯(lián)系名mn單個實(shí)體型內(nèi)的m:n聯(lián)系多對多聯(lián)系E-R圖實(shí)體型用矩形表示,矩形框內(nèi)寫明實(shí)體名屬性用橢圓形表示,并用無向邊將其與相應(yīng)的實(shí)體連接起來學(xué)生教師學(xué)生學(xué)號年齡性別姓名E-R圖聯(lián)系用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實(shí)體連接起來,同時(shí)在無向邊旁標(biāo)上聯(lián)系的類型(1:1、1:n或m:n)聯(lián)系的表示方法實(shí)體型A聯(lián)系名實(shí)體型B111:1聯(lián)系實(shí)體型A聯(lián)系名1n1:n聯(lián)系實(shí)體型A實(shí)體型B聯(lián)系名mnm:n聯(lián)系實(shí)體型B聯(lián)系的表示方法示:例班級班級-班長班長111:1聯(lián)系課程選修學(xué)生mnm:n聯(lián)系班級組成學(xué)生1n1:n聯(lián)系聯(lián)系的屬性課程選修學(xué)生mn成績聯(lián)系的屬性:聯(lián)系本身也是一種實(shí)體型,也可以有屬性如果一個聯(lián)系具有屬性,則這些屬性也要用無向邊與該聯(lián)系連接起來例:ER圖:實(shí)例用E-R圖表示某個工廠物資管理的概念模型實(shí)體倉庫:倉庫號、面積、電話號碼零件:零件號、名稱、規(guī)格、單價(jià)、描述供應(yīng)商:供應(yīng)商號、姓名、地址、電話號碼、帳號項(xiàng)目:項(xiàng)目號、預(yù)算、開工日期職工:職工號、姓名、年齡、職稱ER圖:實(shí)例實(shí)體之間的聯(lián)系如下:
(1)一個倉庫可以存放多種零件,一種零件可以存放在多個倉庫中。倉庫和零件具有多對多的聯(lián)系。用庫存量來表示某種零件在某個倉庫中的數(shù)量(2)一個倉庫有多個職工當(dāng)倉庫保管員,一個職工只能在一個倉庫工作,倉庫和職工之間是一對多的聯(lián)系。職工實(shí)體型中具有一對多的聯(lián)系(3)職工之間具有領(lǐng)導(dǎo)-被領(lǐng)導(dǎo)關(guān)系。即倉庫主任領(lǐng)導(dǎo)若干保管員(4)供應(yīng)商、項(xiàng)目和零件三者之間具有多對多的聯(lián)系ER圖:實(shí)例經(jīng)典邏輯數(shù)據(jù)模型經(jīng)典邏輯數(shù)據(jù)模型有三類:層次模型(HierarchicalModel)(樹)網(wǎng)狀模型(NetworkModel)(圖)關(guān)系模型(RelationalModel)(表)各種經(jīng)典邏輯數(shù)據(jù)模型之間的區(qū)別在于數(shù)據(jù)之間聯(lián)系的表示方式不同格式化模型層次模型層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型層次數(shù)據(jù)庫系統(tǒng)的典型代表是IBM公司的IMS(InformationManagementSystem)數(shù)據(jù)庫管理系統(tǒng)層次模型用樹形結(jié)構(gòu)來表示各類實(shí)體以及實(shí)體間的聯(lián)系
層次模型的數(shù)據(jù)結(jié)構(gòu)記錄(record)
:描述事物或事物間關(guān)系的命名的數(shù)據(jù)單位,也是數(shù)據(jù)的存儲單位字段(field)
:記錄的構(gòu)成部分系系名系號系主任名地點(diǎn)圖記錄的型計(jì)算機(jī)系9xxx西一樓圖記錄的一個實(shí)例層次模型的數(shù)據(jù)結(jié)構(gòu)雙親子女關(guān)系(PCR)層次數(shù)據(jù)模型的基本關(guān)系,表示兩個記錄型間的1:N關(guān)系。雙親記錄子女記錄PCR型與PCR實(shí)例系班1N計(jì)算機(jī)系61班62班63班64班層次模型的數(shù)據(jù)結(jié)構(gòu)
滿足下面兩個條件的基本層次聯(lián)系的集合為層次模型1.有且只有一個結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個結(jié)點(diǎn)稱為根結(jié)點(diǎn)2.根以外的其它結(jié)點(diǎn)有且只有一個雙親結(jié)點(diǎn)層次模型中的幾個術(shù)語根結(jié)點(diǎn),雙親結(jié)點(diǎn),兄弟結(jié)點(diǎn),葉結(jié)點(diǎn)層次模型的數(shù)據(jù)結(jié)構(gòu)
R1
根結(jié)點(diǎn)
R2
兄弟結(jié)點(diǎn)
R3
葉結(jié)點(diǎn)
R4
兄弟結(jié)點(diǎn)
R5
葉結(jié)點(diǎn)
葉結(jié)點(diǎn)層次模型示例層次模型的數(shù)據(jù)結(jié)構(gòu)層次模型的特點(diǎn):結(jié)點(diǎn)的雙親是唯一的只能直接處理一對多的實(shí)體聯(lián)系每個記錄類型可以定義一個排序字段,也稱為碼字段任何記錄值只有按其路徑查看時(shí),才能顯出它的全部意義沒有一個子女記錄值能夠脫離雙親記錄值而獨(dú)立存在層次模型的數(shù)據(jù)結(jié)構(gòu)教員學(xué)生層次數(shù)據(jù)庫模型
根結(jié)點(diǎn)記錄型系的子女結(jié)點(diǎn)記錄型教員的雙親結(jié)點(diǎn)葉結(jié)點(diǎn)葉結(jié)點(diǎn)字段層次模型的數(shù)據(jù)結(jié)構(gòu)教員學(xué)生層次數(shù)據(jù)庫的一個值
多對多聯(lián)系在層次模型中的表示用層次模型間接表示多對多聯(lián)系方法將多對多聯(lián)系分解成一對多聯(lián)系分解方法冗余結(jié)點(diǎn)法虛擬結(jié)點(diǎn)法層次模型的數(shù)據(jù)操縱層次模型的數(shù)據(jù)操縱查詢插入刪除更新層次模型的完整性約束無相應(yīng)的雙親結(jié)點(diǎn)值就不能插入子女結(jié)點(diǎn)值如果刪除雙親結(jié)點(diǎn)值,則相應(yīng)的子女結(jié)點(diǎn)值也被同時(shí)刪除更新操作時(shí),應(yīng)更新所有相應(yīng)記錄,以保證數(shù)據(jù)的一致性層次模型的存儲結(jié)構(gòu)鄰接法按照層次樹前序遍歷的順序把所有記錄值依次鄰接存放,即通過物理空間的位置相鄰來實(shí)現(xiàn)層次順序?qū)哟文P偷拇鎯Y(jié)構(gòu)圖層次數(shù)據(jù)庫及其實(shí)例…A1A2C8C6C4B6C9C2B4C14C7C5C3B1A1鄰接法按鄰接法存放圖1.20(b)中以根記錄A1為首的層次記錄實(shí)例集按鄰接法存放圖中以根記錄A1為首的層次記錄實(shí)例集
層次模型的存儲結(jié)構(gòu)鏈接法用指引來反映數(shù)據(jù)之間的層次聯(lián)系子女-兄弟鏈接法層次序列鏈接法層次模型的存儲結(jié)構(gòu)子女-兄弟鏈接法每個記錄設(shè)兩類指針,分別指向最左邊的子女(每個記錄型對應(yīng)一個)和最近的兄弟層次模型的存儲結(jié)構(gòu)層次序列鏈接法按樹的前序穿越順序鏈接各記錄值層次模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn)層次模型的數(shù)據(jù)結(jié)構(gòu)比較簡單清晰查詢效率高,性能優(yōu)于關(guān)系模型,不低于網(wǎng)狀模型層次數(shù)據(jù)模型提供了良好的完整性支持缺點(diǎn)多對多聯(lián)系表示不自然對插入和刪除操作的限制多,應(yīng)用程序的編寫比較復(fù)雜查詢子女結(jié)點(diǎn)必須通過雙親結(jié)點(diǎn)由于結(jié)構(gòu)嚴(yán)密,層次命令趨于程序化網(wǎng)狀模型美國CODASYL(ConferenceOnDataSystemLanguages)委員會的DBTG(DataBaseTaskGroup)提出了網(wǎng)狀數(shù)據(jù)模型和數(shù)據(jù)庫語言報(bào)告基于此報(bào)告研制的網(wǎng)狀數(shù)據(jù)庫系統(tǒng)也為DBTG系統(tǒng)實(shí)際系統(tǒng)CullinetSoftwareInc.公司的IDMSUnivac公司的DMS1100Honeywell公司的IDS/2HP公司的IMAGE網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)記錄(Record):數(shù)據(jù)的存儲單位,可包含若干數(shù)據(jù)項(xiàng);
注意記錄有記錄型/記錄值的區(qū)別數(shù)據(jù)項(xiàng)(DataItem):相當(dāng)于字段,但與層次模型不同,數(shù)據(jù)項(xiàng)可以是簡單數(shù)據(jù)類型,也可以是多值或復(fù)合的數(shù)據(jù)簡單多值數(shù)據(jù)項(xiàng)稱為向量(vector),復(fù)合多值數(shù)據(jù)項(xiàng)稱為重復(fù)組(repeatinggroup)數(shù)據(jù)庫碼(databasekey,DBK):記錄的邏輯地址網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀模型:滿足下面條件的基本層次聯(lián)系的集合:1.允許一個以上的結(jié)點(diǎn)無雙親2.一個結(jié)點(diǎn)可以有多于一個的雙親3.允許兩個結(jié)點(diǎn)之間有多種關(guān)系(稱為復(fù)合關(guān)系)特點(diǎn):取消了層次數(shù)據(jù)模型數(shù)據(jù)結(jié)構(gòu)的限制,是對層次數(shù)據(jù)模型的擴(kuò)展,更具有普遍性適用網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)表示方法(與層次數(shù)據(jù)模型相同)實(shí)體型:用記錄類型描述,每個結(jié)點(diǎn)表示一個記錄類型(實(shí)體)屬性:用字段描述每個記錄類型,可包含若干個字段聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄(實(shí)體)類型之間的一對多父子聯(lián)系網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀模型中子女結(jié)點(diǎn)與雙親結(jié)點(diǎn)的聯(lián)系可以不唯一要為每個聯(lián)系命名,并指出與該聯(lián)系有關(guān)的雙親記錄和子女記錄R1與R3之間的聯(lián)系L1R2與R3之間的聯(lián)系L2
93網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)系(set)兩個記錄型之間的1:N聯(lián)系(首記錄,屬記錄)
系型和系值班級學(xué)生一班王一李紅丁杰網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀模型的例子
網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)多對多聯(lián)系在網(wǎng)狀模型中的表示用網(wǎng)狀模型間接表示多對多聯(lián)系方法:將多對多聯(lián)系直接分解成一對多聯(lián)系網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)例:一個學(xué)生可以選修若干門課程,某一課程可以被多個學(xué)生選修,學(xué)生與課程之間是多對多聯(lián)系引進(jìn)一個學(xué)生選課的聯(lián)結(jié)記錄,由3個數(shù)據(jù)項(xiàng)組成學(xué)號課程號成績表示某個學(xué)生選修某一門課程及其成績網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)學(xué)生/選課/課程的網(wǎng)狀數(shù)據(jù)模型
98網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)不允許一個記錄型同時(shí)作為一個系的首記錄和屬記錄為表示同一記錄型之間的聯(lián)系引入“連接記錄”例:圖中的聯(lián)系表示職工之間的領(lǐng)導(dǎo)關(guān)系S1EMPLINK111NS299網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)奇異系(無首系/單值系)多元聯(lián)系的表示系的鏈?zhǔn)?chain)實(shí)現(xiàn):向前指針、向后指針、首記錄指針OS2S1S3網(wǎng)狀模型與層次模型的區(qū)別網(wǎng)狀模型允許多個結(jié)點(diǎn)沒有雙親結(jié)點(diǎn)網(wǎng)狀模型允許結(jié)點(diǎn)有多個雙親結(jié)點(diǎn)網(wǎng)狀模型允許兩個結(jié)點(diǎn)之間有多種聯(lián)系(復(fù)合聯(lián)系)網(wǎng)狀模型可以更直接地描述現(xiàn)實(shí)世界層次模型實(shí)際上是網(wǎng)狀模型的特例網(wǎng)狀模型的存儲結(jié)構(gòu)關(guān)鍵實(shí)現(xiàn)記錄之間的聯(lián)系常用方法單向鏈接雙向鏈接環(huán)狀鏈接向首鏈接網(wǎng)狀模型的存儲結(jié)構(gòu)
學(xué)生/選課/課程的網(wǎng)狀數(shù)據(jù)庫實(shí)例
學(xué)生記錄課程記錄選課記錄網(wǎng)狀模型的完整性約束網(wǎng)狀數(shù)據(jù)庫系統(tǒng)(如DBTG)對數(shù)據(jù)操縱加了一些限制,提供了一定的完整性約束碼(Key):唯一標(biāo)識記錄的數(shù)據(jù)項(xiàng)的集合一個聯(lián)系中雙親記錄與子女記錄之間是一對多聯(lián)系支持雙親記錄和子女記錄之間某些約束條件網(wǎng)狀模型的完整性約束成員約束:一個記錄(值)不能出現(xiàn)在同一系型的多個系值中;插入約束:插入新記錄的插入系籍(setmembership)類別:AUTOMATIC(自動連接)MANUAL(人工連接)成員存在方式約束:已插入到某個系值中的屬記錄的留置系籍類別:OPTIONAL(任意的)MANDATORY(強(qiáng)制的)FIXED(固定的)網(wǎng)狀模型的完整性約束成員記錄序約束——刪除系的首記錄時(shí)對相關(guān)屬記錄值的處理規(guī)則:留置系籍類別為OPTIONAL留置系籍類別為MANDATORY留置系籍類別為FIXED網(wǎng)狀模型的數(shù)據(jù)操作導(dǎo)航式(navigational)數(shù)據(jù)庫:在操作數(shù)據(jù)庫時(shí),不但說明做什么,還要說明如何做存取路徑:操作的對象所在的物理位置網(wǎng)狀模型的數(shù)據(jù)操作基本概念運(yùn)行單位(rununit):程序工作區(qū)(UWA):記錄模板(RecordTemplates)當(dāng)前指示字表(Currencypointers)
:運(yùn)行單位當(dāng)前值:系的當(dāng)前值:當(dāng)前系值:記錄當(dāng)前值:網(wǎng)狀模型系統(tǒng)的邏輯結(jié)構(gòu)主語言+DMLUWA主語言+DMLUWA主語言+DMLUWA主語言+DMLUWA主語言+DMLUWA子模式A子模式B模式存儲模式數(shù)據(jù)庫DBMS應(yīng)用程序1應(yīng)用程序2應(yīng)用程序3應(yīng)用程序4應(yīng)用程序5主要的DML語句FIND(查找):按照指定的條件在數(shù)據(jù)庫中查找一個記錄,并設(shè)置適當(dāng)?shù)漠?dāng)前值;GET(讀入):將指定的記錄或數(shù)據(jù)項(xiàng)讀入內(nèi)存;STORE(保存):將一個記錄插入到數(shù)據(jù)庫中,并按照插入系籍約束加入到有關(guān)的系值中;MODIFY(修改):修改指定記錄中的數(shù)據(jù)項(xiàng);ERASE(刪除):從數(shù)據(jù)庫中刪除指定的記錄;CONNECT(加入):將一個屬記錄值加入指定的系值中;RECONNECT(轉(zhuǎn)移):將一個屬記錄值轉(zhuǎn)移到一個新的指定的系值中;DISCONNECT(撤離):將一個屬記錄值從所在的系值中撤離;網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn)能夠更為直接地描述現(xiàn)實(shí)世界,如一個結(jié)點(diǎn)可以有多個雙親具有良好的性能,存取效率較高缺點(diǎn)結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴(kuò)大,數(shù)據(jù)庫的結(jié)構(gòu)就變得越來越復(fù)雜,不利于最終用戶掌握DDL、DML語言復(fù)雜,用戶不容易使用關(guān)系模型采用關(guān)系模型作為數(shù)據(jù)組織方式的系統(tǒng)稱為關(guān)系數(shù)據(jù)庫系統(tǒng)(RDBS)1970年美國IBM公司SanJose研究室的研究員E.F.Codd首次提出了數(shù)據(jù)庫系統(tǒng)的關(guān)系模型目前數(shù)據(jù)庫軟件廠商推出的DBMS幾乎都支持關(guān)系模型
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)主碼整數(shù)字符串1,2,3,4,5域?qū)傩悦M(行)關(guān)系屬性列在用戶觀點(diǎn)下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是“二維表”,由行和列組成。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系(Relation)一個關(guān)系對應(yīng)通常說的一張表(Table)元組(Tuple)表中的一行(Row)即為一個元組屬性(Attribute)表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)主碼(Key)表中的某個屬性組,它可以唯一確定一個元組域(Domain)屬性的取值范圍分量元組中的一個屬性值關(guān)系模式對關(guān)系的描述,相當(dāng)于“表頭”部分表示形式:關(guān)系名(屬性1,屬性2,…,屬性n)例:學(xué)生(學(xué)號,姓名,年齡,性別,系,年級)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件最基本的規(guī)范條件:關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項(xiàng),不允許“表中套表”例:圖中工資和扣除是可分的數(shù)據(jù)項(xiàng),因此不符合關(guān)系規(guī)范化要求
職工號姓名職稱工資扣除實(shí)發(fā)基本津貼職務(wù)房租水電86051陳平講師13051200501601122283圖一個工資表(表中套表)實(shí)例關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系術(shù)語一般表格的術(shù)語關(guān)系名表名關(guān)系模式表頭(表格的描述)關(guān)系(一張)二維表元組記錄或行屬性列屬性名列名屬性值列值分量一條記錄中的一個列值非規(guī)范關(guān)系表中有表(大表中嵌有小表)術(shù)語對比
關(guān)系模型的數(shù)據(jù)操縱集合操作用戶對數(shù)據(jù)的檢索操作就是從原來的表中得到一張新的表即操作對象和操作結(jié)果都是若干元組的集合,而不象非關(guān)系模型中那樣單記錄的操作方式存取路徑對用戶隱藏,提高了數(shù)據(jù)的獨(dú)立性關(guān)系模型的完整性約束域完整性實(shí)體完整性參照完整性用戶定義的完整性關(guān)系模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn)建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上概念單一實(shí)體和各類聯(lián)系都用關(guān)系來表示對數(shù)據(jù)的檢索結(jié)果也是關(guān)系關(guān)系模型的存取路徑對用戶透明具有更高的數(shù)據(jù)獨(dú)立性,更好的安全保密性簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作關(guān)系模型的優(yōu)缺點(diǎn)缺點(diǎn)存取路徑對用戶透明導(dǎo)致查詢效率往往不如非關(guān)系數(shù)據(jù)模型為提高性能,必須對用戶的查詢請求進(jìn)行優(yōu)化增加了開發(fā)DBMS的難度數(shù)據(jù)庫模式和實(shí)例模式(Schema)是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及類型的描述,不涉及具體的值模式的一個具體值稱為模式的一個實(shí)例(Instance)型和值型(Type)是指對某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說明值(Value)是型的一個具體賦值例:類型—學(xué)生(學(xué)號,姓名,年齡)值——(PB00001001,張三,20)模式和實(shí)例舉例學(xué)生表(學(xué)號,姓名,年齡)課程表(課程號,課程名,學(xué)分)選課表(學(xué)號,課程號,成績)1個模式2個實(shí)例實(shí)際中的模式描述比本例要詳細(xì)得多模式的分級為了提高數(shù)據(jù)的物理獨(dú)立性和邏輯獨(dú)立性,使數(shù)據(jù)庫的用戶觀點(diǎn),即用戶看到的數(shù)據(jù)庫,與數(shù)據(jù)庫的物理方面,即實(shí)際存儲的數(shù)據(jù)庫區(qū)分開來,數(shù)據(jù)庫系統(tǒng)的模式是分級的三級模式結(jié)構(gòu)CODASYL(ConferenceOnDataSystemLanguage,美國數(shù)據(jù)系統(tǒng)語言協(xié)商會)提出模式、外模式、內(nèi)模式三級模式的概念三級模式之間有兩級映象三級模式結(jié)構(gòu)數(shù)據(jù)庫內(nèi)模式模式外模式2外模式3外模式1應(yīng)用A應(yīng)用B應(yīng)用C應(yīng)用D應(yīng)用E外模式/模式映象模式/內(nèi)模式映象模式模式也稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,屬于邏輯層抽象(LogicalLevel)模式是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,既不涉及數(shù)據(jù)的物理存儲細(xì)節(jié)和硬件環(huán)境,也與具體的應(yīng)用程序以及所使用的應(yīng)用開發(fā)工具及高級程序設(shè)計(jì)語言無關(guān)模式一個數(shù)據(jù)庫只有一個模式數(shù)據(jù)庫模式以某一種數(shù)據(jù)模型為基礎(chǔ),統(tǒng)一綜合地考慮了所有用戶的需求,并將這些需求有機(jī)地結(jié)合成一個邏輯整體定義模式時(shí)不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求外模式外模式也稱子模式(Subschema)或用戶模式(Userschema),屬于視圖層抽象(ViewLevel)外模式是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)邏輯表示外模式通常是模式的子集,一個數(shù)據(jù)庫可以有多個外模式內(nèi)模式內(nèi)模式也稱存儲模式(StorageSchema),屬于物理層抽象(PhysicalLevel)一個數(shù)據(jù)庫只有一個內(nèi)模式內(nèi)模式是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式內(nèi)模式內(nèi)模式描述的內(nèi)容包括:記錄的存儲方式是順序存儲、按照B樹結(jié)構(gòu)存儲還是按hash方法存儲;索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密;數(shù)據(jù)的存儲記錄結(jié)構(gòu)有何規(guī)定…兩層映象數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映象:外模式/模式映象模式/內(nèi)模式映象正是這兩層映象保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性外模式/模式映象對于每一個外模式,數(shù)據(jù)庫系統(tǒng)都有一個外模式/模式映象,它定義了該外模式與模式之間的對應(yīng)關(guān)系當(dāng)模式改變時(shí),對各個外模式/模式的映象作相應(yīng)改變,可以使外模式保持不變應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡稱數(shù)據(jù)的邏輯獨(dú)立性模式/內(nèi)模式映象定義數(shù)據(jù)邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系存儲結(jié)構(gòu)改變時(shí),修改模式/內(nèi)模式映象,使模式保持不變,從而應(yīng)用程序可以保持不變,稱為數(shù)據(jù)的物理獨(dú)立性數(shù)據(jù)庫模式與人員的關(guān)系圖各種人員的數(shù)據(jù)視圖不同的人員涉及不同的數(shù)據(jù)抽象級別,具有不同的數(shù)據(jù)視圖,如下圖所示1.4數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中對數(shù)據(jù)進(jìn)行管理的軟件系統(tǒng),是數(shù)據(jù)庫系統(tǒng)的核心組成部分DBMS介于用戶和操作系統(tǒng)之間,是一種通用的系統(tǒng)軟件DBMS的主要功能數(shù)據(jù)庫的定義功能數(shù)據(jù)庫的操縱功能數(shù)據(jù)庫的存儲功能數(shù)據(jù)庫的保護(hù)功能數(shù)據(jù)庫的維護(hù)功能數(shù)據(jù)庫定義功能DBMS一般提供數(shù)據(jù)定義語言(DDL)定義數(shù)據(jù)庫的三級結(jié)構(gòu),包括外模式、模式和內(nèi)模式及相互之間的映象;定義數(shù)據(jù)的完整性、安全控制等約束這些定義存于數(shù)據(jù)字典中,是DBMS存儲和管理數(shù)據(jù)的依據(jù)DBMS根據(jù)這些定義,從物理記錄導(dǎo)出全局邏輯記錄,再從全局邏輯記錄導(dǎo)出用戶所檢索的記錄DDL——DataDefinitionLanguage數(shù)據(jù)操縱功能DBMS一般提供數(shù)據(jù)操縱語言(DML)實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的基本操作檢索和更新(插入、修改和刪除)DML——DataManipulationLanguageDML有兩類:過程性DML:嵌入在主語言中使用非過程性DML:交互式命令語言,語法簡單,可以獨(dú)立使用數(shù)據(jù)存儲功能DBMS存儲管理子系統(tǒng)的功能是把各種DML語句轉(zhuǎn)換為低層的文件系統(tǒng)命令,起到數(shù)據(jù)的存儲、檢索和更新的作用數(shù)據(jù)保護(hù)功能DBMS一般提供對數(shù)據(jù)的保護(hù),包括數(shù)據(jù)庫的恢復(fù),并發(fā)控制、存取控制、完整性約束條件的檢查和執(zhí)行所有的操作都要在這些控制程序的統(tǒng)一管理下進(jìn)行,保證數(shù)據(jù)庫的正確有效數(shù)據(jù)庫的維護(hù)功能包括數(shù)據(jù)庫的裝載、數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)、重組織、系統(tǒng)性能監(jiān)視、分析等功能由DBMS的實(shí)用程序來完成DBMS體系結(jié)構(gòu)DBMS作為數(shù)據(jù)庫系統(tǒng)的核心,所有訪問數(shù)據(jù)庫的請求都由DBMS來處理考察用戶訪問數(shù)據(jù)的過程,可以簡單了解DBMS的主要組成部分與高級程序設(shè)計(jì)語言相似,作為數(shù)據(jù)庫語言的一個實(shí)現(xiàn)的DBMS也有編譯和解釋兩種實(shí)現(xiàn)方法下圖表示一個解釋執(zhí)行的DBMS的結(jié)構(gòu)解釋執(zhí)行的DBMS結(jié)構(gòu)DBMS運(yùn)行過程程序工作區(qū)返回狀態(tài)DB的系統(tǒng)緩沖區(qū)數(shù)據(jù)庫DBMS應(yīng)用程序A對應(yīng)的外模式模式內(nèi)模式數(shù)據(jù)字典應(yīng)用程序AOS運(yùn)行日志12345678910用戶訪問數(shù)據(jù)的過程DBMS運(yùn)行過程(9/1)Step1用戶向DBMS發(fā)出調(diào)用數(shù)據(jù)庫數(shù)據(jù)的命令Step2DBMS對命令進(jìn)行語法檢查、語義檢查、存取權(quán)限檢查,決定是否執(zhí)行該命令Step3DBMS執(zhí)行查詢優(yōu)化,把命令轉(zhuǎn)換為一串單記錄的存取操作序列DBMS運(yùn)行過程Step4執(zhí)行存取操作序列(反復(fù)執(zhí)行以下各步,直至結(jié)束)Step5DBMS首先在緩沖區(qū)內(nèi)查找記錄,若找到轉(zhuǎn)10,否則轉(zhuǎn)6Step6DBMS查看存儲模式,決定從哪個文件存取哪個物理記錄DBMS運(yùn)行過程Step7DBMS根據(jù)6的結(jié)果,向操作系統(tǒng)發(fā)出讀取記錄的命令Step8操作系統(tǒng)執(zhí)行讀取數(shù)據(jù)的命令Step9操作系統(tǒng)將數(shù)據(jù)從數(shù)據(jù)庫存儲區(qū)送到系統(tǒng)緩沖區(qū)DBMS運(yùn)行過程Step10DBMS根據(jù)用戶命令和數(shù)據(jù)字典的內(nèi)容導(dǎo)出用戶所要讀取的數(shù)據(jù)格式Step11DBMS將數(shù)據(jù)記錄從系統(tǒng)緩沖區(qū)傳送到用戶工作區(qū)Step12DBMS將執(zhí)行狀態(tài)信息返回給用戶DBMS運(yùn)行過程以上說明的是DBMS讀取數(shù)據(jù)的過程,其它一些操作,如插入、刪除、修改,其過程是類似的對于插入、刪除操作,先找到相應(yīng)記錄所在位置,然后執(zhí)行插入、刪除操作對于修改操作,先要找到要修改的記錄,進(jìn)行完修改后,再把修改后的記錄存儲起來DBMS運(yùn)行過程從DBMS執(zhí)行的過程可以看出,解釋方法具有靈活、應(yīng)變性強(qiáng)的特點(diǎn)能保持較高的數(shù)據(jù)獨(dú)立性,對在解釋過程中發(fā)生的數(shù)據(jù)結(jié)構(gòu)、存儲結(jié)構(gòu)的變化能夠適應(yīng)由于每次執(zhí)行都要經(jīng)過以上所有步驟,開銷會很大,效率比較低。隨著數(shù)據(jù)庫技術(shù)的發(fā)展,這種方法已逐步被預(yù)編譯方法所取代DBMS的預(yù)編譯方法
預(yù)編譯方法的基本思想,在運(yùn)行以前,對將要執(zhí)行的數(shù)據(jù)庫語句進(jìn)行編譯處理,保存生成的可執(zhí)行代碼,需要運(yùn)行時(shí),取出保存的可執(zhí)行代碼加以執(zhí)行當(dāng)數(shù)據(jù)庫中某些成分發(fā)生改變,使部分編譯結(jié)果無效時(shí),再對它們執(zhí)行一次編譯實(shí)踐證明,預(yù)編譯方法的主要優(yōu)點(diǎn)在于執(zhí)行效率高,系統(tǒng)開銷小DBMS的進(jìn)程結(jié)構(gòu)
DBMS是管理數(shù)據(jù)庫的軟件系統(tǒng),必須要在操作系統(tǒng)的支持下才能工作早期的計(jì)算機(jī)系統(tǒng)內(nèi)存容量有限,DBMS常按功能劃分為多個進(jìn)程,但進(jìn)程管理的開銷較大隨著計(jì)算機(jī)內(nèi)存越來越大,DBMS進(jìn)程的劃分不再受內(nèi)存限制,更多考慮的是結(jié)構(gòu)是否合理以及性能否提高線程的概念
現(xiàn)代操作系統(tǒng)中引入線程的概念,作為程序并發(fā)執(zhí)行的單位,分享CPU時(shí)間一個進(jìn)程中可以創(chuàng)建多個可以切換的線程,為進(jìn)程本身的并發(fā)執(zhí)行提供了基礎(chǔ)線程是比進(jìn)程更小的運(yùn)行單位,稱為輕量進(jìn)程(lightweightprocess),而進(jìn)程則稱為重量進(jìn)程(heavyweightprocess)線程的優(yōu)點(diǎn)
一個進(jìn)程可劃分為多個線程線程的創(chuàng)建、切換、通信等開銷遠(yuǎn)比進(jìn)程少線程為進(jìn)程本身的并發(fā)執(zhí)行提供了手段多線程DBMS
在單進(jìn)程多線程結(jié)構(gòu)的DBMS中,系統(tǒng)只創(chuàng)建一個DBMS進(jìn)程當(dāng)有用戶申請數(shù)據(jù)庫服務(wù)時(shí),DBMS分配至少一個線程為之服務(wù),多個線程并行工作,共享資源在支持多線程的系統(tǒng)中,線程管理功能可以由操作系統(tǒng)提供,也可以由DBMS進(jìn)程擴(kuò)充,最好由DBMS進(jìn)程管理線程多線程DBMS
因?yàn)榫€程作為DBMS的調(diào)度單位,可以按照DBMS的需要按一定的調(diào)度算法調(diào)度用戶請求由于調(diào)度算法是由DBMS設(shè)計(jì)與執(zhí)行,因此比操作系統(tǒng)直接對這些請求進(jìn)行調(diào)度高效,提高了DBMS的性能和可移植性多線程DBMS
由DBMS進(jìn)程管理線程增加了DBMS的復(fù)雜性,還對操作系統(tǒng)提出以下兩方面的新要求:提供非阻塞I/O(nonblockingI/O)和異步I/O(asynchronousI/O)功能支持“公平”調(diào)度(fairschedule)數(shù)據(jù)目錄DBMS的功能是管理大量的、共享的、持久的數(shù)據(jù),有關(guān)這些數(shù)據(jù)的定義和描述(即元數(shù)據(jù))也需要長期保存在系統(tǒng)中數(shù)據(jù)目錄(Catalog或Directory)是一組關(guān)于數(shù)據(jù)的數(shù)據(jù),也稱為元數(shù)據(jù)(meta-data)數(shù)據(jù)目錄數(shù)據(jù)目錄中存儲下列信息關(guān)系:包括關(guān)系名、每個關(guān)系的屬性名、屬性的類型和長度視圖:包括視圖名字以及定義、完整性約束等用戶:包括用戶名、帳號、密碼、訪問權(quán)限等索引:包括索引名、被索引的關(guān)系名、索引涉及的屬性、構(gòu)造的索引類型等統(tǒng)計(jì)和描述數(shù)據(jù):包括每個關(guān)系中元組的總數(shù)、存儲方法、存儲組織方式、存儲的位置等數(shù)據(jù)目錄數(shù)據(jù)目錄的特點(diǎn)數(shù)據(jù)目錄通常是自描述的,即還包括自身的定義和描述關(guān)系數(shù)據(jù)庫中數(shù)據(jù)目錄的組織通常與數(shù)據(jù)本身的組織相同數(shù)據(jù)目錄按不同的內(nèi)容在邏輯上組織為若干張表數(shù)據(jù)目錄數(shù)據(jù)目錄和一般數(shù)據(jù)的區(qū)別數(shù)據(jù)目錄由系統(tǒng)定義并為系統(tǒng)所有,在初始化時(shí)由系統(tǒng)自動生成,而不可能用SQL之類的語句定義,因?yàn)樵跀?shù)據(jù)目錄還未定義時(shí),任何SQL語句都無法執(zhí)行一般數(shù)據(jù)可以用SQL之類的語句定義,為用戶所有
相對一般數(shù)據(jù),數(shù)據(jù)目錄的數(shù)據(jù)量較少,使用更頻繁DBMS一般不允許用戶對數(shù)據(jù)目錄進(jìn)行更新操作,而只允許用戶有控制的訪問數(shù)據(jù)目錄作業(yè)P161.11.61.101.13第2章關(guān)系模型2.1基本概念2.2關(guān)系代數(shù)2.3關(guān)系演算2.1基本概念關(guān)系模型是以集合論中的關(guān)系(relation)概念為基礎(chǔ)發(fā)展起來的數(shù)據(jù)模型,由IBM公司SanJose研究實(shí)驗(yàn)室E.F.Codd率先提出早期代表系統(tǒng)SystemR:由IBM研制INGRES:由加州Berkeley分校研制目前主流的關(guān)系數(shù)據(jù)庫管理系統(tǒng)軟件產(chǎn)品包括:IBMDB2UDB,Oracle,Informix,Sybase,MSSQLServer,MySQLAccess,F(xiàn)oxpro,F(xiàn)oxbase定義2.1:域(domain)是一組值的集合,同一個域中的所有值均應(yīng)具有相同的數(shù)據(jù)類型例2-1:D1={袁玲,吳丹,劉杰}D2={男,女}D3={18,19}其中:D1(姓名)、D2(性別)和D3(年齡)為域名,分別表示“人員”關(guān)系中姓名、性別和年齡的可取值范圍D1的基數(shù)m1=3,D2的基數(shù)m2=2,D3的基數(shù)m3=2域中元素一般無排列次序,如:D2={男,女}={女,男}關(guān)系的定義(9/8)定義2.2:域D1,D2,…,Dn上的笛卡兒積是一個集合:
D1×D2×…×Dn={(d1,d2,…dn)|di∈Di,1≤i≤n}
其中允許Di=Dj且i≠j,將該集合中的每一個元素(d1,d2,…dn)稱為一個元組(tuple),元組中的每一個值di稱為一個分量(component),有n個分量的元組稱為n元組關(guān)系的定義關(guān)系的定義則D1、D2和D3的笛卡爾積可以表示成一張二維表,如表2-1所示。D1D2D3袁玲男18袁玲男19袁玲女18袁玲女19吳丹男18吳丹男19吳丹女18吳丹女19劉杰男18劉杰男19劉杰女18劉杰女19該笛卡爾積的基數(shù)為3×2×2=12,即共有12個元組,(袁玲、男、18)和(吳丹、女、19)就是元組,“袁玲”、“女”、“吳丹”、“19”就是分量。有時(shí)一個元組也被稱為一條記錄例2-2:已知三個域:D1={袁玲,吳丹,劉杰}D2={男,女}D3={18,19}定義2.3:D1×D2×…×Dn上的任意一個子集均是定義在域D1,D2,…Dn上的一個關(guān)系(relation),記為R由n個域構(gòu)成的關(guān)系通常稱為n元關(guān)系,關(guān)系中的每個元素即是這個關(guān)系的元組
關(guān)系的定義由于域可以相同,為了加以區(qū)分,必須為每列起一個名字,稱為屬性(Attribute)定義2.4:為關(guān)系的每個列所起的名字稱為關(guān)系的屬性,一般可表示為A,B,C…n目關(guān)系必有n個屬性,表的任意一列對應(yīng)一個屬性,屬性的名稱稱為“屬性名”,具體元組的屬性取值稱為“屬性值”
關(guān)系的定義定義2.5:如果一個關(guān)系中的某個屬性或?qū)傩约軌蛭ㄒ坏拇_定一個元組,則稱該屬性(集)是這個關(guān)系上的超鍵(superkey,SK);如果將超鍵中的任一屬性去掉后剩余的屬性集不能唯一標(biāo)識一個元組,則稱該屬性集是關(guān)系上的候選鍵(candidatekey,CK);通常從候選鍵中選擇一個使用,這個候選鍵稱為關(guān)系的主鍵(primarykey,PK)
關(guān)系的定義一般情況下,如不加特別說明,鍵即指主鍵。如果關(guān)系R1中的某個屬性集是另外一個關(guān)系R2的候選鍵,那么該屬性集對于關(guān)系R1而言是它的外鍵(foreignkey,F(xiàn)K)
關(guān)系的定義定義2.6:關(guān)系模式(relationschema)是對關(guān)系的型的描述,可以表示為:R(U,D,DOM,I,F(xiàn))其中,U是R的屬性集合{A1,A2,…,An},D是屬性的取值范圍,即域的集合{D1,D2,…,Dn},DOM是U到D的映射集合{A1→D1,A2→D2,…,An→Dn},I是完整性約束規(guī)則集,F(xiàn)是函數(shù)依賴集合習(xí)慣上將關(guān)系簡記為R(A1/D1,A2/D2,…,An/Dn)或者R(A1,A2,…,An)
關(guān)系模式關(guān)系模式與關(guān)系關(guān)系可看作是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,也就是說,關(guān)系模式是型,關(guān)系是值關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)
關(guān)系的特征(1)關(guān)系中不允許出現(xiàn)相同的元組(2)關(guān)系中元組的順序(即行序)是無關(guān)緊要的,在一個關(guān)系中可以任意交換兩行的次序(3)關(guān)系中屬性的順序是無關(guān)緊要的,即屬性的順序可以任意交換。交換時(shí)應(yīng)連同屬性名一起交換,否則將得到錯誤的關(guān)系(4)同一屬性名下的各個屬性值必須來自同一個域,是同一類型的數(shù)據(jù)(5)關(guān)系中各個屬性必須有不同的名字,不同的屬性可來自同一個域,即他們的分量可以取自同一個域(6)關(guān)系中每個分量必須是不可分的數(shù)據(jù)項(xiàng),或者說所有屬性值都是原子的,是一個確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”關(guān)系的類型在關(guān)系數(shù)據(jù)庫中,關(guān)系有以下三種類型:(1)基本表:實(shí)際存在的表,對應(yīng)實(shí)際存儲數(shù)據(jù)的邏輯表示(2)查詢表:對基表查詢得到的結(jié)果表(3)視圖表:從基本表或其他視圖中導(dǎo)出的表返回目錄關(guān)系數(shù)據(jù)庫在一個給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫的型與值關(guān)系數(shù)據(jù)庫的型:關(guān)系數(shù)據(jù)庫模式對關(guān)系數(shù)據(jù)庫的描述。關(guān)系數(shù)據(jù)庫模式包括若干域的定義在這些域上定義的若干關(guān)系模式關(guān)系數(shù)據(jù)庫的值:關(guān)系模式在某一時(shí)刻對應(yīng)的關(guān)系的集合,簡稱為關(guān)系數(shù)據(jù)庫關(guān)系模型的完整性(integrity)規(guī)則是為了保證數(shù)據(jù)的正確性和相容性而在關(guān)系上施加的約束條件
關(guān)系的完整性(1)域完整性約束元組分量在某個屬性上的取值應(yīng)在其值域之內(nèi);元組是否能在某個屬性上取空值null,由該屬性的語義決定
關(guān)系的完整性(2)實(shí)體完整性約束元組在鍵上的取值不可重復(fù),且不能為null按照鍵的定義,如果不同的元組在鍵上取相同值或空值,則將無法區(qū)分兩個不同的元組
關(guān)系的完整性(3)參照完整性約束屬性集FK是關(guān)系R上的外鍵,屬性集PK是關(guān)系S上的主鍵,F(xiàn)K引用PK,R和S可以是不同的關(guān)系,也可以是相同的關(guān)系。參照完整性約束要求R上的元組t在FK屬性上的取值t[FK]必須是如下兩種情況之一:
關(guān)系的完整性等于關(guān)系S中某個元組在主鍵PK上的值;取空值null;(4)用戶定義的完整性約束用戶定義的完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能
關(guān)系的完整性關(guān)系模型
關(guān)系模型(RelationModel)由一組相互聯(lián)系的關(guān)系組成,是用二維表結(jié)構(gòu)來表示實(shí)體與實(shí)體間的聯(lián)系的模型關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整性約束三部分組成,如圖所示:關(guān)系完整性約束關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合域-笛卡爾積-關(guān)系關(guān)系模式關(guān)系代數(shù)關(guān)系演算關(guān)系邏輯圖
關(guān)系模型的組成部分
關(guān)系模型關(guān)系操作集合是指關(guān)系模型提供的一組完備的高級關(guān)系運(yùn)算,這些關(guān)系運(yùn)算支持對數(shù)據(jù)庫的各種操作。關(guān)系運(yùn)算通常分成關(guān)系代數(shù)和關(guān)系演算為簡化分析,有時(shí)候也使用簡化的關(guān)系模型,如圖所示圖
簡化的關(guān)系模型數(shù)據(jù)定義語言(DDL)數(shù)據(jù)操縱語言(DML)數(shù)據(jù)控制語言(DCL)基本表、關(guān)系模式提供數(shù)據(jù)的存放格式提供數(shù)據(jù)庫、表結(jié)構(gòu)的定義、數(shù)據(jù)完整性提供對數(shù)據(jù)庫、表結(jié)構(gòu)的查詢、修改等操作提供對數(shù)據(jù)庫、表結(jié)構(gòu)的授權(quán)等安全操作+++關(guān)系模型的優(yōu)點(diǎn)單一的數(shù)據(jù)結(jié)構(gòu)形式,具有高度的簡明性和精確性邏輯結(jié)構(gòu)和相應(yīng)的操作完全獨(dú)立于數(shù)據(jù)存儲方式,具有高度的數(shù)據(jù)獨(dú)立性關(guān)系模型使數(shù)據(jù)庫的研究建立在比較堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)上關(guān)系數(shù)據(jù)庫語言與一階謂詞邏輯的固有內(nèi)在聯(lián)系,為以關(guān)系數(shù)據(jù)庫為基礎(chǔ)的推理系統(tǒng)和知識庫系統(tǒng)的研究提供了方便關(guān)系數(shù)據(jù)語言一體化一般關(guān)系系統(tǒng)的數(shù)據(jù)語言都同時(shí)具有數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制語言,而不是分為幾個語言。對象單一,都是關(guān)系,因此操作符也單一。而非關(guān)系型系統(tǒng),如DBTG,有對記錄的操作,有對系的操作非過程化用戶只需提出“做什么”,無須說明“怎么做”,存取路徑的選擇和操作過程由系統(tǒng)自動完成面向集合的存取方式操作對象是一個或多個關(guān)系,結(jié)果是一個新的關(guān)系(一次一關(guān)系);非關(guān)系系統(tǒng)是一次一記錄的方式關(guān)系數(shù)據(jù)語言抽象的查詢語言關(guān)系代數(shù)用對關(guān)系的運(yùn)算來表達(dá)查詢,需要指明所用操作關(guān)系演算用謂詞來表達(dá)查詢,只需描述所需信息的特性元組關(guān)系演算謂詞變元的基本對象是元組變量域關(guān)系演算謂詞變元的基本對象是域變量關(guān)系數(shù)據(jù)語言具體系統(tǒng)中的實(shí)際語言SQL介于關(guān)系代數(shù)和關(guān)系演算之間,由IBM公司在研制SystemR時(shí)提出QUEL基于Codd提出的元組關(guān)系演算語言ALPHA,在INGRES上實(shí)現(xiàn)QBE基于域關(guān)系演算,由IBM公司研制2.2關(guān)系代數(shù)關(guān)系運(yùn)算是關(guān)系數(shù)據(jù)庫的數(shù)學(xué)基礎(chǔ),分為關(guān)系代數(shù)和關(guān)系演算兩大類關(guān)系代數(shù)中運(yùn)算對象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系,運(yùn)算符包括四類:(1)集合運(yùn)算符:∪(并),-(差),∩(交),×(廣義笛卡爾積)(2)專門的關(guān)系運(yùn)算符:σ(選擇),π(投影),∞(連接),÷(除)(3)算術(shù)比較符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于)(4)邏輯運(yùn)算符:∧(與),∨(或),┐(非)關(guān)系代數(shù)--記號給定關(guān)系模式R(A1,A2,…,An),設(shè)R是它的一個具體的關(guān)系,t
R是關(guān)系的一個元組分量設(shè)t
R,則t[Ai]表示元組t中相應(yīng)于屬性Ai的一個分量屬性列Ai={Ai1,Ai2,…,Aik}{A1,A2,…,An},稱A為屬性列A表示{A1,A2,…,An}中去掉A后剩余的屬性組t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])選擇運(yùn)算定義在關(guān)系R中選擇滿足給定條件的元組(從行的角度)
F(R)={t|tR,F(t)=‘真’}F是選擇的條件,
tR,F(xiàn)(t)要么為真,要么為假F的形式:由邏輯運(yùn)算符連接算術(shù)表達(dá)式而成 邏輯表達(dá)式:,, 算術(shù)表達(dá)式:XY X,Y是屬性名、常量、或簡單函數(shù) 是比較算符,{,,,,,≠}選擇運(yùn)算:例ABC367257723443R
A<5(R)
ABC367257443
A<5
C=7(R)
ABC367257選擇運(yùn)算:例找年齡不小于20的男生
AGE≥20∧
SEX=‘male’(S)投影定義從關(guān)系R中取若干列組成新的關(guān)系(從列的角度)
A(R)={t[A]|tR},AR投影的結(jié)果中要去掉相同的行cbcfedcbaCBABCbcef
R
B,C(R)投影給出所有學(xué)生的姓名和年齡
SN,AGE(S)找001號學(xué)生所選修的課程號
C#(S#=001
(SC))并運(yùn)算定義所有至少出現(xiàn)在兩個關(guān)系中之一的元組集合R
S={r|r
R
r
S}R
S兩個關(guān)系R和S若進(jìn)行并運(yùn)算,則它們必須是相容的:關(guān)系R和S必須是同元的,即它們的屬性數(shù)目必須相同對
i,R的第i個屬性的域必須和S的第i個屬性的域相同并運(yùn)算ABC367257723443RABC345723SABC367257723443345R∪S并運(yùn)算示例求選修了001號或002號課程的學(xué)生號 方案1:∏S#(C#=001∨
C#=002(SC))
方案2:∏S#(C#=001(SC))∪∏S#(C#=002(SC))差運(yùn)算定義所有出現(xiàn)在一個關(guān)系而不在另一關(guān)系中的元組集合R
S={r|r
R
r
S}R和S必須是相容的R
S差運(yùn)算ABC367257723443RABC345723SABC367257443R-SABC367S-R差運(yùn)算示例求選修了001號而沒有選002號課程的學(xué)生號∏S#(C#=001(SC))-∏S#(C#=002(SC))交運(yùn)算定義所有同時(shí)出現(xiàn)在兩個關(guān)系中的元組集合R
S={r|r
R
r
S}交運(yùn)算可以通過差運(yùn)算來重寫R
S=R
(R
S)=S-(S-R)R
S交運(yùn)算ABC367257723443RABC345723SABC723R∩S交運(yùn)算示例求同時(shí)選修了001號和002號課程的學(xué)生號錯誤的寫法:∏S#(C#=001
C#=002(SC))正確的寫法:∏S#(C#=001(SC))∩∏S#(C#=002(SC))廣義笛卡爾積運(yùn)算元組的連串(Concatenation)若r=(r1,…
,rn),s=(s1,…,sm),則定義r與s的連串為:定義兩個關(guān)系R,S,其度分別為n,m,則它們的笛卡爾積是所有這樣的元組集合:元組的前n個分量是R中的一個元組,后m個分量是S中的一個元組R
S的度為R與S的度之和,R
S的元組個數(shù)為R和S的元組個數(shù)的乘積rs=(r1,…
,rn,s1,…
,sm)R
S={rs|r
R
s
S}廣義笛卡爾積運(yùn)算AB
12rCD
10102010EaabbsAB
11112222CD
1019201010102010Eaabbaabbrx
s廣義笛卡爾積運(yùn)算
A=C(rxs)rxs
A=C(rxs)AB
11112222CD
1019201010102010EaabbaabbABCDE
122
102020aab廣義笛卡爾積運(yùn)算示例求數(shù)學(xué)成績比王紅同學(xué)高的學(xué)生89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍成績課程姓名∏S.姓名(
R.成績S.成績R.課程=數(shù)學(xué)S.課程=數(shù)學(xué)R.姓名=王紅
(R
S(R))R86數(shù)學(xué)王紅86數(shù)學(xué)王紅86數(shù)學(xué)王紅R.成績R.課程R.姓名89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍S.成績S.課程S.姓名連接定義從兩個關(guān)系的廣義笛卡兒積中選取給定屬性間滿足一定條件的元組
A,B為R和S上度數(shù)相等且可比的屬性列為算術(shù)比較符,為等號時(shí)稱為等值連接
RS=
r[A]
S[B](
R×S)A
BA
BRS={rs|r
R
s
S
r[A]
S[B]}連接求數(shù)學(xué)成績比王紅同學(xué)高的學(xué)生。987654321CBADE3162ABCDE123311236245662
RSB<D
R
S∏S.姓名((課程=數(shù)學(xué)姓名=王紅(R))(
課程=數(shù)學(xué)
S(R)))R.成績<S.成績自然連接定義從兩個關(guān)系的廣義笛卡兒積中選取在相同屬性列B上取值相等的元組,并去掉重復(fù)的行自然連接與等值連接的不同自然連接中相等的分量必須是相同的屬性組,并且要在結(jié)果中去掉重復(fù)的屬性,而等值連接則不必。當(dāng)R與S無相同屬性時(shí),RS=R×SRS={rs[B]|r
R
s
S
r[B]=S[B]}自然連接AB
12412CD
aababrB13123DaaabbE
s
11112
aaaab
ABCDErs自然連接(9/11)示例求001號學(xué)生所在系的名稱∏DN(S#=001(S)DEPT)987654321CBACD3162
R
SABCD12314562
RS外連接例:列出所有教師的信息,包括姓名、工資、所教授的課程∏P#,PN,SAL,C#,CN((PROF)PCC)500李三P04600700800SAL孫立P03錢廣P02趙明P01PNP#化學(xué)C03數(shù)學(xué)C02物理C01CN
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漳州職業(yè)技術(shù)學(xué)院《金融審計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西管理職業(yè)學(xué)院《中國文化概況》2023-2024學(xué)年第二學(xué)期期末試卷
- 西北民族大學(xué)《框架技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽北軟信息職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)在環(huán)境工程中的應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州商學(xué)院《理論力學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古民族幼兒師范高等??茖W(xué)?!吨鞒炙囆g(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西北農(nóng)林科技大學(xué)《云計(jì)算與虛擬化技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊科技職業(yè)學(xué)院《教育學(xué)專題研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版初中歷史與社會七年級上冊 3.3.1耕海牧漁 教學(xué)設(shè)計(jì)
- 南昌職業(yè)大學(xué)《創(chuàng)業(yè)基礎(chǔ)創(chuàng)新教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 幼兒園多媒體課件設(shè)計(jì)與制作第2版(高職學(xué)前教育專業(yè))全套教學(xué)課件
- 動力電池包pack控制計(jì)劃
- 養(yǎng)老機(jī)構(gòu)員工考核表
- 臟腑辨證與護(hù)理
- 外科洗手、消毒、鋪巾講座課件
- 《小型局域網(wǎng)構(gòu)建》一體化課程標(biāo)準(zhǔn)
- 甲基丙烯酸甲酯生產(chǎn)工藝畢業(yè)設(shè)計(jì)設(shè)備選型與布置模板
- 單肺通氣策略
- dd5e人物卡可填充格式角色卡夜版
- RT Thread設(shè)備驅(qū)動開發(fā)指南
- 高一第二學(xué)期英語教學(xué)計(jì)劃進(jìn)度表
評論
0/150
提交評論