數(shù)據(jù)庫系統(tǒng)概論課件_第1頁
數(shù)據(jù)庫系統(tǒng)概論課件_第2頁
數(shù)據(jù)庫系統(tǒng)概論課件_第3頁
數(shù)據(jù)庫系統(tǒng)概論課件_第4頁
數(shù)據(jù)庫系統(tǒng)概論課件_第5頁
已閱讀5頁,還剩696頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章

數(shù)據(jù)庫系統(tǒng)概述信息信息是指現(xiàn)實世界事物的存在方式或運動狀態(tài)的反映。具體地說,信息是一種已經(jīng)被加工為特定形式的數(shù)據(jù),這種數(shù)據(jù)形式對接收者來說是有意義的,而且對當(dāng)前和將來的決策具有明顯的或?qū)嶋H的價值。在信息社會中,信息是一種資源,其重要性可以與物質(zhì)和能量相提并論,是企業(yè)賴以生存和發(fā)展所必須的。數(shù)據(jù)數(shù)據(jù)是將現(xiàn)實世界中的各種信息記錄下的、可以識別的符號,是信息的載體,信息的具體表示形式。數(shù)據(jù)可用多種不同的形式來表示一種同樣的信息,信息不隨它的數(shù)據(jù)形式不同而改變。數(shù)據(jù)的表現(xiàn)形式多種多樣,不僅有我們熟知的數(shù)字和文字,還可以有圖形、圖像、聲音等形式。信息與數(shù)據(jù)信息與數(shù)據(jù)的聯(lián)系數(shù)據(jù)是信息的符號表示,或稱載體;信息是數(shù)據(jù)的內(nèi)涵,是數(shù)據(jù)的語義解釋。數(shù)據(jù)是符號化的信息。信息是語義化的數(shù)據(jù)。例,一幅圖像數(shù)據(jù)——彩色位圖點陣信息——微軟產(chǎn)品數(shù)據(jù)處理數(shù)據(jù)處理實際上就是利用計算機進(jìn)行數(shù)據(jù)處理的過程。該過程包括:數(shù)據(jù)的采集、整理、編碼和輸入,有效地把數(shù)據(jù)組織到計算機中,由計算機系統(tǒng)對數(shù)據(jù)進(jìn)行一系列的加工、儲存、合并、分類、計算、檢索、傳輸、輸出等操作過程。其目的是從大量原始數(shù)據(jù)中抽取和推導(dǎo)出對人們有價值的信息,以作為行動和決策的依據(jù)。數(shù)據(jù)庫所謂數(shù)據(jù)庫是長期儲存在計算機內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、存儲和描述,由DBMS統(tǒng)一管理,多用戶共享。數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)是指一個計算機存儲記錄的系統(tǒng)。即,它是一個計算機系統(tǒng),該系統(tǒng)的目標(biāo)是存儲信息并支持用戶檢索和更新所需要的信息。它通常由數(shù)據(jù)庫,軟件,硬件,用戶幾個部分組成。數(shù)據(jù)庫管理系統(tǒng)是一個通用的軟件系統(tǒng),由一組計算機程序構(gòu)成。它能夠?qū)?shù)據(jù)庫進(jìn)行有效的管理,并為用戶提供了一個軟件環(huán)境,方便用戶使用數(shù)據(jù)庫中的信息。數(shù)據(jù)定義功能數(shù)據(jù)操縱功能數(shù)據(jù)庫的運行管理功能數(shù)據(jù)庫的建立和維護功能數(shù)據(jù)處理的三個階段人工處理階段(50年代中期以前)文件系統(tǒng)階段(50年代后期---60年代中期)數(shù)據(jù)庫系統(tǒng)階段(60年代后期開始)人工處理階段背景:計算機主要用于科學(xué)計算。外存只有磁帶、卡片、紙帶等,沒有磁盤等直接存取設(shè)備。沒有操作系統(tǒng),沒有數(shù)據(jù)管理軟件。人工處理階段(續(xù)I)特點:數(shù)據(jù)不保存應(yīng)用程序管理數(shù)據(jù)數(shù)據(jù)不共享數(shù)據(jù)不具有獨立性人工處理階段(續(xù)II)應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)n……文件系統(tǒng)階段背景:計算機不但用于科學(xué)計算,還用于管理。外存有了磁盤、磁鼓等直接存取設(shè)備。有了專門管理數(shù)據(jù)的軟件,一般稱為文件系統(tǒng)。文件系統(tǒng)階段(續(xù)I)特點:數(shù)據(jù)以文件的形式長期保存。文件形式多樣化(索引文件、鏈接文件、直接存取文件、倒排文件等)。一個數(shù)據(jù)文件對應(yīng)一個或幾個用戶程序,還是面向應(yīng)用的,具有一定的共享性。由文件系統(tǒng)管理數(shù)據(jù)。通過文件系統(tǒng)提供存取方法,支持對文件的基本操作(增、刪、改、查等),用戶程序不必考慮物理細(xì)節(jié)。數(shù)據(jù)的存取基本上以記錄為單位。數(shù)據(jù)與程序有一定的獨立性,因為文件的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)由系統(tǒng)進(jìn)行轉(zhuǎn)換,數(shù)據(jù)在存儲上的改變不一定反映在程序上。文件系統(tǒng)階段(續(xù)II)文件系統(tǒng)應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)n文件系統(tǒng)階段的缺點數(shù)據(jù)冗余和不一致數(shù)據(jù)訪問困難數(shù)據(jù)孤立數(shù)據(jù)獨立性差文件系統(tǒng)階段的缺點(續(xù)I)完整性問題原子性問題并發(fā)訪問異常安全性問題數(shù)據(jù)庫系統(tǒng)階段背景:大規(guī)模數(shù)據(jù)管理。計算機管理的數(shù)據(jù)量大,關(guān)系復(fù)雜,共享性要求強(多種應(yīng)用、不同語言共享數(shù)據(jù))。外存有了大容量磁盤,光盤。軟件價格上升,硬件價格下降,編制和維護軟件及應(yīng)用程序成本相對增加,其中維護的成本更高。數(shù)據(jù)庫系統(tǒng)階段(續(xù)I)數(shù)據(jù)庫觀點:數(shù)據(jù)不是依賴于處理過程的附屬品,而是現(xiàn)實世界中獨立存在的對象。數(shù)據(jù)庫系統(tǒng)階段(續(xù)II)…應(yīng)用程序1應(yīng)用程序2應(yīng)用程序nDBMS數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)的特點面向全組織的結(jié)構(gòu)化。支持全企業(yè)的應(yīng)用而不是某一個應(yīng)用。通過統(tǒng)一的結(jié)構(gòu)來描述數(shù)據(jù)及數(shù)據(jù)之間客觀存在的本質(zhì)聯(lián)系,這是數(shù)據(jù)庫系統(tǒng)的主要特征之一,是與文件系統(tǒng)的根本差別。數(shù)據(jù)庫系統(tǒng)的特點(續(xù)I)數(shù)據(jù)集成與共享,可控冗余度數(shù)據(jù)面向整個系統(tǒng),而不是面向某一應(yīng)用,數(shù)據(jù)集中管理,并可以被多個用戶和多個應(yīng)用程序所共享。數(shù)據(jù)共享可以減少數(shù)據(jù)冗余,節(jié)省存儲空間,減少存取時間,并避免數(shù)據(jù)之間的不相容性和不一致性。每個應(yīng)用選用數(shù)據(jù)庫的一個子集,只要重新選取不同子集或者加上一小部分?jǐn)?shù)據(jù),就可以滿足新的應(yīng)用要求,這就是易擴充性。根據(jù)應(yīng)用的需要,可以控制數(shù)據(jù)的冗余度。數(shù)據(jù)庫系統(tǒng)的特點(續(xù)II)數(shù)據(jù)獨立性好數(shù)據(jù)與程序相對獨立,把數(shù)據(jù)庫的定義和描述從應(yīng)用程序中分離出去。描述又是分級的(全局邏輯、局部邏輯、存儲),數(shù)據(jù)的存取由系統(tǒng)管理,用戶不必考慮存取路徑等細(xì)節(jié),從而簡化了應(yīng)用程序。數(shù)據(jù)獨立性:當(dāng)數(shù)據(jù)的結(jié)構(gòu)發(fā)生變化時,通過系統(tǒng)提供的映象(轉(zhuǎn)換)功能,使應(yīng)用程序不必改變。它包括數(shù)據(jù)的物理獨立性和邏輯獨立性。數(shù)據(jù)庫系統(tǒng)的特點(續(xù)III)統(tǒng)一的控制機制。數(shù)據(jù)的安全性控制(Security)保護數(shù)據(jù)以防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。措施:用戶標(biāo)識與鑒定,存取控制。數(shù)據(jù)的完整性控制(Integrity)數(shù)據(jù)的正確性、有效性、相容性。措施:完整性約束條件定義和檢查。數(shù)據(jù)庫系統(tǒng)的特點(續(xù)IV)并發(fā)控制(Concurrency)對多用戶的并發(fā)操作加以控制、協(xié)調(diào),防止其互相干擾而得到錯誤的結(jié)果并使數(shù)據(jù)庫完整性遭到破壞。措施:封鎖。數(shù)據(jù)庫恢復(fù)(Recovery)將數(shù)據(jù)庫從錯誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài),防止數(shù)據(jù)丟失和損害,保證數(shù)據(jù)的正確性。數(shù)據(jù)模型模型是現(xiàn)實世界特征的模擬和抽象。數(shù)據(jù)模型則是現(xiàn)實世界數(shù)據(jù)特征的抽象。數(shù)據(jù)模型應(yīng)滿足三個方面的要求:能比較真實地模擬現(xiàn)實世界;容易為人理解;便于在計算機上實現(xiàn)。數(shù)據(jù)模型的分類概念數(shù)據(jù)模型按用戶的觀點來對數(shù)據(jù)和信息建模。用于組織信息世界的概念,表現(xiàn)從現(xiàn)實世界中抽象出來的事物以及它們之間的聯(lián)系。這類模型強調(diào)其語義表達(dá)能力,概念簡單、清晰,易于用戶理解。它是現(xiàn)實世界到信息世界的抽象,是用戶與數(shù)據(jù)庫設(shè)計人員之間進(jìn)行交流的語言。如E-R模型。數(shù)據(jù)模型的分類(續(xù)I)邏輯數(shù)據(jù)模型從計算機實現(xiàn)的觀點來對數(shù)據(jù)建模。是信息世界中的概念和聯(lián)系在計算機世界中的表示方法。一般有嚴(yán)格的形式化定義,以便于在計算機上實現(xiàn)。如層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P汀N锢頂?shù)據(jù)模型從計算機的物理存儲角度對數(shù)據(jù)建模。是數(shù)據(jù)在物理設(shè)備上的存放方法和表現(xiàn)形式的描述,以實現(xiàn)數(shù)據(jù)的高效存取。如索引,HASH文件等等。數(shù)據(jù)抽象數(shù)據(jù)模型的組成要素數(shù)據(jù)模型是實現(xiàn)數(shù)據(jù)抽象的主要工具。它包括以下組成部分:數(shù)據(jù)結(jié)構(gòu)描述系統(tǒng)的靜態(tài)特性,是所研究的對象類型的集合。包括:數(shù)據(jù)本身:類型、內(nèi)容、性質(zhì)。如網(wǎng)狀模型中的數(shù)據(jù)項、記錄,關(guān)系模型中的域、屬性,關(guān)系等。數(shù)據(jù)之間的聯(lián)系:例如網(wǎng)狀模型中的系型(SetType)在數(shù)據(jù)庫系統(tǒng)中一般按數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型。數(shù)據(jù)模型的組成要素(續(xù)I)數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述,用于描述施加于數(shù)據(jù)之上的各種操作,即對數(shù)據(jù)庫中對象的實例允許執(zhí)行的操作的集合,包括操作及操作規(guī)則。一般有檢索、更新(插入、刪除、修改)操作。數(shù)據(jù)模型要定義操作含義、操作符號、操作規(guī)則,以及實現(xiàn)操作的語言。數(shù)據(jù)的約束條件數(shù)據(jù)的約束條件是完整性規(guī)則的集合,規(guī)定數(shù)據(jù)庫狀態(tài)及狀態(tài)變化所應(yīng)滿足的條件,以保證數(shù)據(jù)的正確、有效、相容。概念數(shù)據(jù)模型的主要概念實體(Entity):客觀存在并可相互區(qū)分的事物叫實體。實體可以是具體的人、事、物,也可以是抽象的概念或聯(lián)系。如一個學(xué)生、一次選課、老師與系的工作關(guān)系。屬性(Attribute):實體所具有的某一特性。一個實體可以由若干個屬性來刻畫。例如,學(xué)生實體可由學(xué)號、姓名、性別,出生年份、系、年級等組成。域(Domain):屬性的取值范圍。例如,性別的域為(男、女),月份的域為1到12的整數(shù)。概念數(shù)據(jù)模型的主要概念(續(xù)I)實體型(EntityType):具有相同屬性的實體必然具有共同的特征和性質(zhì),因此用實體名與其屬性名集合來抽象和刻畫同類實體,稱為實體型。例,學(xué)生(學(xué)號、姓名、年齡、性別、系、年級)就是一個實體型。注意實體型與實體(值)之間的區(qū)別,后者是前者的一個特例。如(9808100,王平,21,男,計算機系,2)是一個實體。實體集(EntitySet):同型實體的集合稱為實體集。如全體學(xué)生。概念數(shù)據(jù)模型的主要概念(續(xù)II)碼(Key):能唯一標(biāo)識實體的屬性集稱為碼。如學(xué)號是學(xué)生實體的碼。聯(lián)系(Relationship):在現(xiàn)實世界中,事物內(nèi)部以及事物之間存在著聯(lián)系,這些聯(lián)系在信息世界中反映為實體(型)內(nèi)部的聯(lián)系和實體(型)之間的聯(lián)系。實體內(nèi)部的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系,實體之間的聯(lián)系通常是指不同實體集之間的聯(lián)系。如學(xué)生與老師間的授課關(guān)系,學(xué)生與學(xué)生間有班長關(guān)系。概念數(shù)據(jù)模型的主要概念(續(xù)III)聯(lián)系也可以有屬性,如學(xué)生與課程之間有選課聯(lián)系,每個選課聯(lián)系都有一個成績作為其屬性。同類聯(lián)系的集合稱為聯(lián)系集。聯(lián)系的種類可以有一對一的(1:1),一對多的(1:m),多對多的(m:n)幾種情況。一對一:如果對于實體集A中的每一個實體,實體集B中至多有一個(也可以沒有)實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系。即為1:1。如一個班級只有一個正班長,一個正班長只在一個班中任職,則班級和班長之間存在一對一聯(lián)系。概念數(shù)據(jù)模型的主要概念(續(xù)IV)一對多:如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系,記為1:n。如一個班級有若干學(xué)生,每個學(xué)生只在一個班級中學(xué)習(xí),則班級和學(xué)生是一對多聯(lián)系。多對多:如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m≥0)與之聯(lián)系,則稱實體集A與實體集B有多對多聯(lián)系,記為m:n。如一門課由若干學(xué)生選修,一個學(xué)生可以選修多門課,則課程和學(xué)生是多對多聯(lián)系。實際上,一對一是一對多的特例,而一對多又是多對多的特例。概念數(shù)據(jù)模型的主要概念(續(xù)V)一般地,兩個以上的實體型之間也存在著一對一、一對多、多對多聯(lián)系。同一個實體集內(nèi)的各實體間也可以存在著一對一、一對多、多對多聯(lián)系。概念數(shù)據(jù)模型(E/R)學(xué)生課程選修學(xué)號姓名系別課程名先修課主講老師成績用矩形表示實體型,在框內(nèi)寫上其名稱用橢圓表示實體的屬性用無向邊把實體與其屬性連接起來用菱形表示實體間的聯(lián)系將參與聯(lián)系的實體用線段連接例:學(xué)生選修課程mn聯(lián)系的數(shù)量最常用的數(shù)據(jù)模型層次模型網(wǎng)狀模型關(guān)系模型面向?qū)ο竽P蛯哟文P陀脴浣Y(jié)構(gòu)表示實體之間聯(lián)系的模型叫層次模型。樹由節(jié)點和連線組成,結(jié)點代表實體型,連線表示兩實體型間的一對多聯(lián)系。樹有以下特性:每棵樹有且僅有一個結(jié)點無雙親結(jié)點,此結(jié)點稱為樹的根(Root)。樹中的其它結(jié)點都有且僅有一個雙親結(jié)點。代表產(chǎn)品:IBM的IMS數(shù)據(jù)庫,1968年研制成功。層次模型(續(xù)I)層次模型(續(xù)II)優(yōu)點:結(jié)構(gòu)簡單,易于實現(xiàn)。較好的性能。良好的完整性支持。缺點:難以描述現(xiàn)實世界中非層次性的聯(lián)系。子結(jié)點的存取只能通過雙親結(jié)點來進(jìn)行。對插入和刪除操作的限制比較多。層次命令趨向程序化。網(wǎng)狀模型是一個滿足下列條件的有向圖:可以有一個以上的結(jié)點無雙親結(jié)點。至少有一個結(jié)點有多于一個的雙親結(jié)點。DBTG報告:1969年,由美國CODASYC(ConferenceOnDataSystemLanguage,數(shù)據(jù)系統(tǒng)語言協(xié)商會)下屬的DBTG(DataBaseTaskGroup)組提出,確立了網(wǎng)狀數(shù)據(jù)庫系統(tǒng)的概念、方法、技術(shù)。網(wǎng)狀模型(續(xù)I)科室醫(yī)生病房病人網(wǎng)狀模型(續(xù)II)特點:能夠更為直接地描述現(xiàn)實世界。具有良好的性能。缺點:結(jié)構(gòu)復(fù)雜,不利最終用戶掌握其DDL,DML語言復(fù)雜,用戶不易使用。關(guān)系模型用二維表來表示實體及其相互聯(lián)系關(guān)系模型(續(xù)I)優(yōu)點:建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上。簡單,表的概念直觀,用戶易理解。概念單一,實體和實體之間的聯(lián)系都用關(guān)系表示。存取路徑對用戶透明,具有更高的數(shù)據(jù)獨立性和更好的安全保密性,也簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。缺點:性能往往不如非關(guān)系數(shù)據(jù)模型數(shù)據(jù)庫系統(tǒng)的模式型與值型是指對某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說明,值是型的一個具體賦值。模式:是對數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及到型的描述,不涉及到具體的值。模式的一個具體值稱為模式的一個實例。同一個模式可以有很多實例。模式是相對穩(wěn)定的,而實例是相對變動的,因為數(shù)據(jù)庫的數(shù)據(jù)是在不斷更新的。模式反映的是數(shù)據(jù)的結(jié)構(gòu)及其聯(lián)系,而實例反映的是數(shù)據(jù)庫某一時刻的狀態(tài)。數(shù)據(jù)庫系統(tǒng)的模式(續(xù)I)模式的分級:為了提高數(shù)據(jù)的物理獨立性和邏輯獨立性,使數(shù)據(jù)庫的用戶觀點,即用戶看到的數(shù)據(jù)庫,與數(shù)據(jù)庫的物理方面,即實際存儲的數(shù)據(jù)庫區(qū)分開來,數(shù)據(jù)庫系統(tǒng)的模式是分級的。數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu):CODASYL(ConferenceOnDataSystemLanguage,美國數(shù)據(jù)系統(tǒng)語言協(xié)商會)提出概念模式、外模式、存儲模式三級模式的概念。三級模式之間有兩級映象。數(shù)據(jù)庫系統(tǒng)的模式(續(xù)II)數(shù)據(jù)庫內(nèi)模式概念模式外模式2外模式1外模式3應(yīng)用A應(yīng)用B應(yīng)用C應(yīng)用D應(yīng)用E外模式/概念模式映象

概念模式/內(nèi)模式映象數(shù)據(jù)庫系統(tǒng)的模式(續(xù)III)外模式(Sub-Schema):用戶的數(shù)據(jù)視圖。是數(shù)據(jù)的局部邏輯結(jié)構(gòu),模式的子集。概念模式(Schema):所有用戶的公共數(shù)據(jù)視圖。是數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特性的描述。內(nèi)模式(StorageSchema):又稱存儲模式。數(shù)據(jù)的物理結(jié)構(gòu)及存儲方式。數(shù)據(jù)庫系統(tǒng)的模式(續(xù)IV)外模式/概念模式映象:定義某一個外模式和概念模式之間的對應(yīng)關(guān)系,映象定義通常包含在各外模式中。當(dāng)概念模式改變時,修改此映象,使外模式保持不變,從而應(yīng)用程序可以保持不變,稱為邏輯獨立性。概念模式/內(nèi)模式映象:定義數(shù)據(jù)邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。存儲結(jié)構(gòu)改變時,修改此映象,使概念模式保持不變,從而應(yīng)用程序可以保持不變,稱為物理獨立性。數(shù)據(jù)庫系統(tǒng)的組成部分?jǐn)?shù)據(jù)庫全組織的日常運營所需要的各種數(shù)據(jù),包括目標(biāo)數(shù)據(jù)(數(shù)據(jù)本身)及描述數(shù)據(jù)(對數(shù)據(jù)的說明信息)軟件數(shù)據(jù)庫管理系統(tǒng)(DBMS)支持DBMS運行的操作系統(tǒng)具有與數(shù)據(jù)庫接口的高級語言及其編譯系統(tǒng)應(yīng)用開發(fā)工具為特定應(yīng)用環(huán)境開發(fā)的數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)庫系統(tǒng)的組成部分(續(xù)I)硬件足夠的內(nèi)存,以運行OS,DBMS,以及應(yīng)用程序和提供數(shù)據(jù)緩存。足夠的存取設(shè)備如磁盤,提供數(shù)據(jù)存儲和備份足夠的I/O能力和運算速度,保證較高的性能。其他設(shè)備數(shù)據(jù)庫系統(tǒng)的組成部分(續(xù)II)用戶數(shù)據(jù)庫管理員系統(tǒng)分析員和數(shù)據(jù)庫設(shè)計者應(yīng)用程序員最終用戶偶然用戶簡單用戶復(fù)雜用戶數(shù)據(jù)庫系統(tǒng)的組成部分(續(xù)III)DBA職責(zé):決定數(shù)據(jù)庫中的信息內(nèi)容和結(jié)構(gòu)決定數(shù)據(jù)庫的存儲結(jié)構(gòu)和存取策略定義數(shù)據(jù)的安全性要求和完整性約束條件監(jiān)控數(shù)據(jù)庫的使用和運行數(shù)據(jù)庫的改進(jìn)和重組重構(gòu)數(shù)據(jù)庫系統(tǒng)的軟硬件層次硬件操作系統(tǒng)DBMS,編譯系統(tǒng)應(yīng)用開發(fā)工具軟件應(yīng)用系統(tǒng)PB,VB,VCDELPHIOracle,Db2,Sybase,SQLServer,InformixDBMS的管理層次操作系統(tǒng)數(shù)據(jù)存儲層數(shù)據(jù)存取層語言翻譯處理層數(shù)據(jù)庫應(yīng)用層數(shù)據(jù)文件,數(shù)據(jù)字典,索引,統(tǒng)計數(shù)據(jù)緩沖區(qū)

DDL,DML,查詢計算引擎

事務(wù),日志,封鎖,存取路徑DBMS的主要功能數(shù)據(jù)庫定義功能提供DDL語言(DataDescriptionLanguage)描述外模式、模式、內(nèi)模式(源模式)。模式翻譯程序把源模式翻譯成目標(biāo)模式,存入數(shù)據(jù)字典中。源模式模式翻譯程序數(shù)據(jù)字典目標(biāo)模式DBMS的主要功能(續(xù)I)數(shù)據(jù)存取功能提供DML語言(Datamanipulationlanguage)對數(shù)據(jù)庫進(jìn)行檢索、插入、修改、刪除。DML類型宿主型:DML不獨立使用,嵌入到高級語言(主語言)程序中使用。自含型:獨立使用,交互式命令方式。DBMS控制并執(zhí)行DML語句宿主型:有預(yù)編譯和增強編譯兩種方式。自含型:解釋執(zhí)行。DBMS的主要功能(續(xù)II)數(shù)據(jù)庫運行管理并發(fā)控制、存取控制、完整性約束條件檢查和執(zhí)行,日志組織和管理,事務(wù)管理和自動恢復(fù)。數(shù)據(jù)組織、存儲和管理用戶數(shù)據(jù)、索引、數(shù)據(jù)字典的組織、存儲和管理,包括文件結(jié)構(gòu)、存取方式、數(shù)據(jù)之間的聯(lián)系的實現(xiàn)等。數(shù)據(jù)庫的建立和維護功能數(shù)據(jù)的裝入、轉(zhuǎn)換、卸出,數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)、性能監(jiān)視和分析等。數(shù)據(jù)庫技術(shù)的發(fā)展 第一代數(shù)據(jù)庫系統(tǒng)70年代的層次和網(wǎng)狀數(shù)據(jù)庫系統(tǒng)。代表:1969年IBM研制的IMS。60年代末,70年代初CODASYL給出的DBTG報告。第二代數(shù)據(jù)庫系統(tǒng)1970年IBMSanJose實驗室研究員E.F.Codd提出關(guān)系模型代表:IBM開發(fā)的SystemR和加州大學(xué)Berkley分校開發(fā)的INGRES。數(shù)據(jù)庫技術(shù)的發(fā)展 (續(xù)I)第三代數(shù)據(jù)庫系統(tǒng)面向?qū)ο髷?shù)據(jù)庫數(shù)據(jù)庫技術(shù)與其他學(xué)科的內(nèi)容相互結(jié)合面向應(yīng)用領(lǐng)域的數(shù)據(jù)庫技術(shù)研究數(shù)據(jù)庫技術(shù)的研究領(lǐng)域數(shù)據(jù)庫管理軟件的研制數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫理論第二章

關(guān)系數(shù)據(jù)庫簡介E.F.Codd于70年代初提出關(guān)系數(shù)據(jù)理論,他因此獲得1981年的ACM圖靈獎。關(guān)系理論是建立在集合代數(shù)理論基礎(chǔ)上的,有著堅實的數(shù)學(xué)基礎(chǔ)。早期代表系統(tǒng)SystemR:由IBM研制。INGRES:由加州Berkeley分校研制。目前主流的商業(yè)數(shù)據(jù)庫系統(tǒng)Oracle,Informix,Sybase,SQLServer,DB2。Access,F(xiàn)oxPro,F(xiàn)oxbase。關(guān)系數(shù)據(jù)模型關(guān)系模型是關(guān)系數(shù)據(jù)庫系統(tǒng)的基礎(chǔ),它由以下部分組成:數(shù)據(jù)結(jié)構(gòu):關(guān)系(二維表)。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一,無論是實體還是實體間的聯(lián)系均由關(guān)系表示。完整性約束:包括關(guān)系模型所要求的完整性約束(實體完整性約束,參照完整性約束),以及應(yīng)用領(lǐng)域需要遵循的用戶定義完整性約束。關(guān)系數(shù)據(jù)模型(續(xù)I)DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)C(C#,CN,PC#,CREDIT)SC(S#,C#,SCORE)PROF(P#,PN,D#,SAL)TEACH(P#,C#)學(xué)生課程選修屬于系教師教授工作關(guān)系數(shù)據(jù)模型(續(xù)II)關(guān)系操作:包括:選擇、投影、連接、除、并、交、差等查詢操作和增加、刪除、修改操作兩大部分。其特點是集合操作方式,操作的對象及結(jié)果都是集合。關(guān)系數(shù)據(jù)語言:關(guān)系代數(shù):用對關(guān)系的運算來表達(dá)查詢,需要指明所用操作。關(guān)系演算:用謂詞來表達(dá)查詢,只需描述所需信息的特性。元組關(guān)系演算:謂詞變元的基本對象是元組變量。域關(guān)系演算:謂詞變元的基本對象是域變量。SQL語言關(guān)系數(shù)據(jù)模型(續(xù)III)特點:面向集合的存取方式。關(guān)系操作是集合操作,操作的對象及結(jié)果都是集合,是一次一集合(Set-at-a-time)的方式。而非關(guān)系型的數(shù)據(jù)操作方式是一次一記錄(Record-at-a-time)。非過程化。關(guān)系操作不要求用戶提供存取路徑,存取路徑的選擇由DBMS完成。用戶只需提出“做什么”,無須說明“怎么做”,存取路徑的選擇和操作過程由系統(tǒng)自動完成。數(shù)據(jù)結(jié)構(gòu)域(Domain)一組具有相同的數(shù)據(jù)類型的值的集合。如整數(shù)的集合、字符串的集合、全體學(xué)生的集合。笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}笛卡爾積的每個元素(d1,d2,…,dn)稱作一個n-元組(n-tuple)或簡稱元組。元組的每一個值di叫做一個分量(component)。若Di(i=1,…,n)為有限集,其基數(shù)(Cardinalnumber)為mi,則笛卡爾積的基數(shù)為數(shù)據(jù)結(jié)構(gòu)(續(xù)I)例:設(shè)D1為教師集合(Teacher)={T1,T2}D2為專業(yè)集合(Speciality)={CS,MATH}D3為學(xué)生集合(Student)={S1,S2,S3}

則D1×D2×D3是個三元組集合,元組個數(shù)為2×2×3是所有可能的(教師,專業(yè),學(xué)生)元組集合。笛卡爾積可表為二維表的形式:數(shù)據(jù)結(jié)構(gòu)(續(xù)II)TeacherSpecialityStudentT1CSS1T1CSS2T1CSS3T1MATHS1T1MATHS2T1MATHS3T2CSS1T2CSS2T2CSS3T2MATHS1T2MATHS2T2MATHS3數(shù)據(jù)結(jié)構(gòu)(續(xù)III)關(guān)系笛卡爾積D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的關(guān)系,用R(D1,D2,…,Dn)表示。R是關(guān)系的名字,n是關(guān)系的度或目(Degree)。當(dāng)n=1時稱為單元關(guān)系,當(dāng)n=2時稱為二元關(guān)系,依此類推。關(guān)系可以表示為二維表,表的每一行對應(yīng)一個元組,每列對應(yīng)一個域。由于域有可能相同,為了加以區(qū)分,必須對每個列起一個名稱,稱為屬性。n元關(guān)系必有n個屬性。關(guān)系TEACH(Teacher,Speciality,Student)TeacherSpecialityStudentT1CSS1T1CSS2T2MATHS3屬性元組數(shù)據(jù)結(jié)構(gòu)(續(xù)IV)關(guān)系模型對關(guān)系的限定和擴充無限關(guān)系在數(shù)據(jù)庫系統(tǒng)中是無意義的。因此,限定關(guān)系數(shù)據(jù)模型中的關(guān)系必須是有限集合。通過為關(guān)系的每一個列附加一個屬性名取消關(guān)系的有序性,即(d1,d2,…,di,dj,…,dn,)=(d1,d2,…,dj,di,…,dn,)(i,j=1,2,…,n)數(shù)據(jù)結(jié)構(gòu)(續(xù)V)關(guān)系的性質(zhì)列是同質(zhì)的(Homogeneous)即每一列中的分量來自同一域,是同一類型的數(shù)據(jù)。如TEACH(Teacher,Speciality,Student)={(t1,CS

,s1),(t1,t2,s1)}是錯誤的。不同的列可出自同一域,每列必須有不同的屬性名。如Person={t1,t2,

s1,s2,s3},Speciality={c1,c2},則TEACH不能寫成TEACH(Person,Speciality,Person),還應(yīng)寫成TEACH(Teacher,Speciality,Student)。數(shù)據(jù)結(jié)構(gòu)(續(xù)VI)列的順序無關(guān)緊要,即列次序可以互換。任意兩個元組不能完全相同(集合內(nèi)不能有相同的兩個元素)。行的順序無關(guān)緊要,即行次序可以互換。每一分量必須是不可再分的數(shù)據(jù)。滿足這一條件的關(guān)系稱作滿足第一范式(1NF)的。數(shù)據(jù)結(jié)構(gòu)(續(xù)VII)關(guān)系模式關(guān)系的描述稱作關(guān)系模式,它可以形式化地表示為:R(U,D,dom,F(xiàn),I),其中,R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性集U所來自的域,dom為屬性向域的映象集合、F為屬性間的數(shù)據(jù)依賴關(guān)系集合,I為完整性約束集合。關(guān)系模式通??梢院営涀鱎(A1,A2,…,An)。關(guān)系是關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容。關(guān)系模式是相對穩(wěn)定的。而關(guān)系是動態(tài)的,是隨時間不斷變化的。數(shù)據(jù)結(jié)構(gòu)(續(xù)VIII)關(guān)系數(shù)據(jù)庫在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間的聯(lián)系的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫也有型和值之分:其型是關(guān)系模式的集合,即數(shù)據(jù)庫描述,稱為關(guān)系數(shù)據(jù)庫模式。其值是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,通常稱為關(guān)系數(shù)據(jù)庫。完整性約束候選碼關(guān)系模式R(U)的屬性集合k

U是候選碼,如果(1)R(U)的任何一個關(guān)系實例的任意兩個元組在屬性集合k上的值都不同。即唯一性,候選碼的屬性值必須能夠唯一地標(biāo)識關(guān)系中的所有元組。(2)k的任何真子集都不滿足條件(1)。即最小性,候選碼不能包含多余屬性。完整性約束(續(xù)I)主碼若一個關(guān)系具有多個候選碼時,選擇其中一個作為該關(guān)系的主碼。主屬性與非主屬性候選碼中的諸屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性。在最簡單的情況下,候選碼只包括一個屬性。在最極端的情況下,關(guān)系模式的所有屬性是這個關(guān)系模式的候選碼,稱為全碼。完整性約束(續(xù)II)外部碼設(shè)F是基本關(guān)系R的一個或一組屬性,但不是R的碼。如果F與基本關(guān)系S的主碼Ks相對應(yīng),則稱F是關(guān)系R的外部碼(ForeignKey),并稱R為參照關(guān)系(ReferencingRelation),S為被參照關(guān)系(ReferencedRelation)或目標(biāo)關(guān)系(TargetRelation)。R和S不一定是不同的關(guān)系。顯然,目標(biāo)關(guān)系S的主碼Ks和參照關(guān)系的外部碼F必須定義在一個域上。完整性約束(續(xù)III)實體完整性定義:關(guān)系R主碼中所包含的任意屬性都不能取空值??罩担翰恢阑驘o意義。意義:關(guān)系對應(yīng)到現(xiàn)實世界中的實體集,元組對應(yīng)到實體,實體是相互可區(qū)分的,通過主碼來唯一標(biāo)識,若主碼為空,則出現(xiàn)不可標(biāo)識的實體,這是不容許的。參照完整性如果關(guān)系R2的外部碼Fk與關(guān)系R1的主碼Pk相對應(yīng),則R2中的每一個元組的Fk值或者等于R1中某個元組的Pk值,或者為空值。意義:如果關(guān)系R2的某個元組t2參照了關(guān)系R1的某個元組t1,則t1必須存在。完整性約束(續(xù)IV)例如關(guān)系Student在Sdept上的取值有兩種可能:空值,表示該學(xué)生尚未分到任何系中。若非空值,則必須是DEPT關(guān)系中某個元組的Sdept值,表示該學(xué)生不可能分到一個不存在的系中。用戶定義的完整性用戶針對具體的應(yīng)用環(huán)境定義的完整性約束條件。如Sno要求是8位字符,Ssex要求取值為“男”或“女”。系統(tǒng)支持實體完整性和參照完整性由系統(tǒng)自動支持。系統(tǒng)應(yīng)提供定義和檢驗用戶定義的完整性的機制。關(guān)系代數(shù)傳統(tǒng)的集合運算集合并、集合交、集合差、廣義笛卡兒積專門的關(guān)系運算選擇、投影、連接、商基本運算集合并、集合差、廣義笛卡兒積、選擇、投影關(guān)系代數(shù)運算符運算符含義運算符含義集合運算符∪

并比較運算符>大于∩

交≥大于等于-

差<

小于×

廣義笛卡爾積≤小于等于=等于≠不等于專門的關(guān)系運算符

選擇邏輯運算符

非∏投影∧與連接∨或÷除并運算定義設(shè)R和S是n元關(guān)系,并且兩者各對應(yīng)屬性的數(shù)據(jù)類型也相同。則R和S的并運算定義為:R

S={t|t

RtS}其結(jié)果仍為n元關(guān)系,由屬于R或?qū)儆赟的元組構(gòu)成。R

S并運算(續(xù)I)ABCabcdafcbdbgaR∪SABCabcdafcbdABCbgadafRS差運算定義設(shè)R和S是n元關(guān)系,并且兩者各對應(yīng)屬性的數(shù)據(jù)類型也相同。則R和S的差運算定義為:R

S={t|t

RtS}其結(jié)果仍為n元關(guān)系,由屬于R而不屬于S的元組構(gòu)成。R

S差運算(續(xù)I)ABCabccbdR-SABCabcdafcbdABCbgadafRS交運算定義設(shè)R和S是n元關(guān)系,并且兩者各對應(yīng)屬性的數(shù)據(jù)類型也相同。則R和S的交運算定義為:R

S={t|t

RtS}其結(jié)果仍為n元關(guān)系,由既屬于R又屬于S的元組構(gòu)成。交運算可以通過差運算來重寫:R

S=R

(R

S)R

S交運算(續(xù)I)ABCdafR∩SABCabcdafcbdABCbgadafRS廣義笛卡爾積定義兩個關(guān)系R,S,其度分別為n,m,則它們的笛卡爾積是所有這樣的元組集合:元組的前n個分量是R中的一個元組,后m個分量是S中的一個元組。R

S={t|t=<r,s>

r

R

s

S}R

S的度為R與S的度之和,R

S的元組個數(shù)為R和S的元組個數(shù)的乘積。廣義笛卡爾積(續(xù)I)R×SR.AR.BR.CS.AS.BS.CabcbgaabcdafdafbgadafdafcbdbgacbddafABCabcdafcbdABCbgadafRS選擇運算基本定義在關(guān)系R中選擇滿足給定條件的元組。

F(R)={t|tRF(t)=‘真’}F是選擇的條件,取邏輯值“真”或“假”。F的形式:由邏輯運算符連接算術(shù)表達(dá)式而成。邏輯表達(dá)式:

,

,

算術(shù)表達(dá)式:XY X,Y是屬性名、常量、或簡單函數(shù)。

是比較算符,{,,,,,≠}選取運算(續(xù)I)

B=b(R)

ABCabccbd

B=b

C=c(R)

ABCabcABCabcdafcbdR投影運算定義從關(guān)系R中取若干屬性列組成新的關(guān)系。

A(R)={t[A]|tR},AR投影的結(jié)果中要去掉重復(fù)的行。cbcfedcbaCBABCbcef

R

B,C(R)連接運算定義從兩個關(guān)系的廣義笛卡兒積中選取給定屬性間滿足

操作的元組。RS={t|t=<r,s>

r

R

s

S

r[A]s[B]}

為算術(shù)比較符,當(dāng)

為等號時稱為等值連接,其他依此類推。連接運算可以用笛卡爾積和選擇運算重寫為RS=

AB(

R×S)A

BA

B連接運算(續(xù)I)987654321CBADE3162ABCDE123311236245662

RSB<D

R

S自然連接定義從兩個關(guān)系的廣義笛卡兒積中選取在相同屬性列上取值相等的元組,并去掉重復(fù)的屬性列。RS={(Z,X,W)|(Z,X)

R

(X,W)

S

r[X]=s[X]}計算R×S設(shè)R與S的公共屬性列為A1,…Ak,從R×S中選取滿足R.A1=S.A1,…,R.Ak=S.Ak的那些元組去掉S.A1,…,S.Ak自然連接(續(xù)I)ABCabcdbcbdfcadBDEbcdbceadbSRABCDEabccdabccedbccddbccecaddbRS復(fù)合連接與半連接復(fù)合連接類似于自然連接,是連接運算結(jié)果不包含連接屬性的自然連接。半連接在R與S的連接運算結(jié)果中只保留R的屬性列所得到的元組集合。外連接例:列出老師的有關(guān)信息,包括姓名、工資、所教授的課程?!荘#,PN,SAL,C#,CN((PROF)PCC)化學(xué)C03數(shù)學(xué)C02物理C01CNC#P04C02P02C02P01C01P#C#數(shù)學(xué)C02500李三P04數(shù)學(xué)C02700錢廣P02物理C01800趙明P01CNC#SALPNP#問題:有關(guān)P03號職工的姓名和工資信息沒有顯示出來。P#PNSALP01趙明800P02錢廣700P03孫立600P04李三500外連接(續(xù)I)外連接為避免自然連接時因失配而發(fā)生的信息丟失,可以假定往參與連接的一方表中附加一個取值全為空值的行,它和參與連接的另一方表中的任何一個未匹配上的元組都能匹配,稱之為外連接。外連接=自然連接+失配的元組。外連接的形式:左外連接、右外連接、全外連接。左外連接=自然連接+左側(cè)表中失配的元組。右外連接=自然連接+右側(cè)表中失配的元組。全外連接=自然連接+兩側(cè)表中失配的元組。外連接(續(xù)II)ABCabcbbfcadBCDbcdbceadbefgABCDabcdabcecadbABCDabcdabcecadbbbfnullnullefgABCDabcdabcecadbbbfnullABCDabcdabcecadbnullefgRSRSRSRSRS除運算象集(ImageSet)關(guān)系R(X,Y),X,Y是屬性組,x是X上的取值,定義x在R中的象集為Yx={r[Y]|r

Rr[X]=x}

從R中選出在X上取值為x的元組,去掉X上的分量,只留Y上的分量。XY張軍同學(xué)所選修的全部課程如何得到選修了全部課程的學(xué)生?x=張軍Yx姓名課程張軍物理王紅數(shù)學(xué)張軍數(shù)學(xué)課程數(shù)學(xué)物理除運算(續(xù)I)除運算給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z是屬性組,R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除法運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:R÷S={r[X]|r

R

∏y(S)

Yx}除運算(續(xù)II)ABCDabcdabefabdebcefedcdedefCDcdefABabed

=

RSR

S例子表SnoSnameSexSageSdept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19ISSTUDENTSnoCnoGrade9500119295001285950013889500229095002380SCCnoCnameCpnoCcredit1數(shù)據(jù)庫542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27Pascal語言64COURSE練習(xí)查詢信息系(IS)的全體學(xué)生

Sdept=‘IS’(STUDENT)查詢年齡小于20歲的學(xué)生

Age<20(STUDENT)查詢學(xué)生的姓名和所在系

Sname,Sdept(STUDENT)求選修了2號課程的學(xué)生的學(xué)號?!荢no(Cno=‘2’(SC))練習(xí)(續(xù)II)查找學(xué)號為95001的學(xué)生姓名和年齡

Sname,Sage(Sno=‘95001’(STUDENT))查找信息系的男學(xué)生的學(xué)號和姓名

Sno,Sname(Sdept=‘IS’∧Ssex=‘男’(STUDENT))查找選修了1號課程或3號課程的學(xué)生的學(xué)號

Sno(Cno=1∨Cno=3(SC))或:

Sno(Cno=1(SC))

∪Sno(Cno=3(SC))練習(xí)(續(xù)III)求選修了1號而沒有選2號課程的學(xué)生號?!荢no(Cno=1(SC))-∏Sno(Cno=2(SC))求選修了1號和2號課程的學(xué)生號?!荢no(Cno=1(SC))∩∏Sno(Cno=2(SC))求選修了1號課程的學(xué)生號和姓名?!荢no,Sname(Cno=1(StudentSC))練習(xí)(續(xù)IV)查詢至少選修了一門其直接先行課為5號課程的學(xué)生姓名。∏Sname(Cpno=5(Course)SC∏Sno,Sname(STUDENT))查詢選修了全部課程的學(xué)生號和姓名∏Sno,Cno(SC)∏Cno(Course)∏Sno,sname(STUDENT)關(guān)系運算元組關(guān)系演算域關(guān)系演算關(guān)系運算的安全性元組關(guān)系演算在元組關(guān)系演算系統(tǒng)中,稱{t|

(t)}為元組演算表達(dá)式,表示所有使謂詞

為真的元組集合。t為元組變量。如果元組變量前有“全稱”(

)或“存在”(

)量詞,則稱其為約束元組變量,否則稱為自由元組變量。

(t)是元組關(guān)系演算公式,由原子公式和運算符組成,簡稱公式。原子公式:R(t)。t是關(guān)系R中的一個元組。t[i]

u[j]。t[i]與u[j]分別為t的第i個分量和u的第j個分量,它們之間滿足比較關(guān)系

。t[i]

c或c

t[i]

。分量t[i]與常量c之間滿足比較關(guān)系

。公式的遞歸定義:每個原子公式是公式。如果

1,

2是公式,則

1

2,

1

2,┑

也是公式。如果

是公式,則

t(

)和

t(

)

也是公式。元組關(guān)系演算(續(xù)I)元組關(guān)系演算(續(xù)II)在元組演算公式中,各種運算符的優(yōu)先次序為:算術(shù)比較運算符最高。量詞次之,且

的優(yōu)先級高于

,多個相同量詞的優(yōu)先級從左向右遞增。邏輯運算符最低,且┑優(yōu)先級高于

,

高于

,多個相同的邏輯運算符優(yōu)先級從左向右遞增。加括號時,括號內(nèi)運算符優(yōu)先,同一括號內(nèi)的運算符之優(yōu)先級遵循I,II,III。有限次地使用上述五條規(guī)則得到的公式是元組關(guān)系演算公式,其他公式不是元組關(guān)系演算公式。元組關(guān)系演算(續(xù)III)查詢信息系(IS)的全體學(xué)生{t|STUDENT(t)t[5]=‘IS’}查詢年齡小于20歲的學(xué)生{t|STUDENT(t)t[5]<20}查詢學(xué)生的姓名和所在的系{t(2)|(

u)(STUDENT(u)t[1]=u[2]t[2]=u[5])}元組關(guān)系演算(續(xù)IV)查找學(xué)號為95001的學(xué)生姓名和年齡{t|(

u)(STUDENT(u)u[1]=‘95001’t[1]=u[2]

t[2]=u[4])}查找選修了1號課程或3號課程的學(xué)生的學(xué)號{t|(

u)(SC(u)(u[2]=1

u[2]=3)t[1]=u[1])}元組關(guān)系演算(續(xù)V)求選修了1號而沒有選2號課程的學(xué)生號。{t|(

u)(SC(u)u[2]=1

(v)(SC(v)u[1]=v[1]v[2]=2)

t[1]=u[1])}求選修了1號課程的學(xué)生號和姓名。{t|(

u)(v)(Student(u)

SC(v)

v[2]=1

u[1]=v[1]

t[1]=u[1]

t[2]=u[2])}元組關(guān)系演算(續(xù)VI)元組關(guān)系演算與關(guān)系代數(shù)的等價性∏i1,i2,…,ik(R)={tk|(u)(R(u)

t[1]=u[i1])

t[k]=u[ik])}

F(R)={t|R(t)

F}R

S={t(n+m)|(u(n))(v(m))(R(u)S(v)t[1]=u[1]

t[n]=u[n]t[n+1]=v[1]

t[n+m]=v[m])}R

S={t|R(t)

S(t)}R

S={t|R(t)

┑S(t)}元組關(guān)系演算(續(xù)VII)設(shè)R和S都是二元關(guān)系,試把關(guān)系代數(shù)表達(dá)式∏1,4(2=3(R×S))轉(zhuǎn)換為元組表達(dá)式

R×S={t|(u)(v)(R(u)

S(v)

t[1]=u[1]

t[2]=u[2]

t[3]=v[1]

t[4]=v[2])}

2=3(R×S)={t|(u)(v)(R(u)

S(v)

t[1]=u[1]

t[2]=u[2]

t[3]=v[1]

t[4]=v[2]u[2]=v[1])}

∏1,4(2=3(R×S))={t|(u)(v)(R(u)

S(v)

t[1]=u[1]

t[2]=v[2]u[2]=v[1])}

域關(guān)系演算在域關(guān)系演算系統(tǒng)中,稱{t1t2…tk|

(t1,t2,…,tk

)}

為域演算表達(dá)式。表示所有使謂詞

為真的元組集合。ti代表域變量,如果域變量前有“全稱”(

)或“存在”(

)量詞,則稱其為約束域變量,否則稱為自由域變量。

為由域關(guān)系演算公式,由原子公式和運算符組成。原子公式:R(t1,

t2,…,tk)

。ti是域變量或域常量。ti

uj。域變量ti與uj之間滿足比較關(guān)系

。ti

c或c

ti

。域變量ti與常量c之間滿足比較關(guān)系

。域關(guān)系演算(續(xù)I)公式的遞歸定義:每個原子公式是公式。如果

1,

2是公式,則

1

2,

1

2,┑

也是公式。如果

是公式,則

ti(

)和

ti(

)

也是公式。域關(guān)系演算公式中運算符優(yōu)先級與元組演算公式中運算符優(yōu)先級的規(guī)定相同。域關(guān)系演算公式是有限次運用上述規(guī)則得到的公式,其他公式不是域關(guān)系演算公式。域關(guān)系演算(續(xù)II)查找學(xué)號為95001的學(xué)生姓名和年齡{t1t2|(

u1)(

u3)(

u5)(Student(u1t1u3t2u5)

u1=‘95001’)}查找選修了1號課程或3號課程的學(xué)生的學(xué)號{t1|(

u2)(

u3)(SC(t1u2u3)(u2=1

u2=3))}關(guān)系演算的安全性關(guān)系演算有可能會產(chǎn)生無限關(guān)系或?qū)е聼o窮驗證,這樣的表達(dá)式是不安全的。如{t|┑R(t)}會導(dǎo)致無限關(guān)系。而當(dāng)t的定義域無窮時,要想判斷(t)(F(t))為假或判斷(t)(F(t))為真時會發(fā)生無窮驗證。為此,需對兩種關(guān)系演算進(jìn)行限制,使之具有安全性。設(shè)

是一個元組關(guān)系演算公式,

的符號集合(簡記為dom(

))是由如下兩類符號構(gòu)成的集合:

中的所有常量

中出現(xiàn)的關(guān)系的所有元組的所有分量值關(guān)系運算的安全性(續(xù)I)當(dāng)滿足下列條件時,一個元組關(guān)系演算表達(dá)式{t|

(t)}是安全的:如果

(t)為真,則元組t的每個分量都屬于dom(

)。對于

中的每個形如(t)(F(t))的子表達(dá)式,如果F(t)為真,則元組t的每個分量都屬于dom(

)。對于

中的每個形如(t)(F(t))的子表達(dá)式,如果F(t)為假,則元組t的每個分量都屬于dom(

)。域關(guān)系演算表達(dá)式也必須滿足類似的條件才是安全的。關(guān)系運算的安全性ABA1B1A1B2A2B3dom(┑R(t))={{A1,A2},{B1,B2,B3}}ABA1B3A2B1A2B2R{t|┑R(t)}第三章

關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQLSQL語言SQL概述SQL數(shù)據(jù)查詢功能SQL數(shù)據(jù)定義功能SQL數(shù)據(jù)更新功能嵌入式SQLSQL概述歷史1974年,由Boyce和Chamberlin提出,稱為SEQUEL(StructuredEnglishQueryLanguage)。1975-1979年,在IBM的SanJose研究室研制的SystemR上實現(xiàn)。1981年,IBM在推出SQL/DS關(guān)系數(shù)據(jù)庫時,將其命名為SQL(StructuredQueryLanguage)?,F(xiàn)在,不僅關(guān)系型數(shù)據(jù)庫系統(tǒng),甚至非關(guān)系型數(shù)據(jù)庫系統(tǒng)都將SQL作為其數(shù)據(jù)庫語言。SQL語言已成為當(dāng)今最為成功和應(yīng)用最廣的數(shù)據(jù)庫語言。SQL概述(I)有關(guān)標(biāo)準(zhǔn)

隨著SQL語言應(yīng)用的日益廣泛,ANSI和ISO先后制定了多個SQL標(biāo)準(zhǔn):SQL-86:較為簡單,主要包括數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言、嵌入式語法等幾個部分。SQL-89:增加了對完整性約束的支持。SQL-92:也稱SQL2,是SQL-89的超集,增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強的完整性、安全性支持等。SQL-3:正在討論中的新的標(biāo)準(zhǔn),將增加對面向?qū)ο竽P偷闹С帧QL概述(II)特點綜合統(tǒng)一集數(shù)據(jù)定義,數(shù)據(jù)操縱,數(shù)據(jù)查詢和數(shù)據(jù)控制于一體。單一的結(jié)構(gòu)----關(guān)系,帶來了數(shù)據(jù)操作符的統(tǒng)一。高度非過程化用戶只需提出“做什么”,無須告訴“怎么做”,不必了解存取路徑。面向集合的操作方式操作的對象和操作的結(jié)果均為集合。以同一種語法結(jié)構(gòu)提供兩種使用方式

SQL既是自含式語言,又是嵌入式語言SQL概述(III)語言簡捷,易學(xué)易用類似于英語自然語言SQL功能操作符數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKESQL對關(guān)系數(shù)據(jù)庫模式的支持用戶視圖1視圖2SQL基本表1基本表2基本表3基本表4存儲文件1存儲文件2外模式內(nèi)模式概念模式SQL對關(guān)系數(shù)據(jù)庫模式的支持基本表是本身獨立存在的表,一個(或多個)基本表對應(yīng)一個存儲文件存儲文件由數(shù)據(jù)塊構(gòu)成的存儲空間,用于存儲基本表、索引等。其邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式視圖是從一個或幾個基本表中導(dǎo)出的表,其本身不獨立存儲于數(shù)據(jù)庫中例子表SnoSnameSexSageSdept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19ISSTUDENTSnoCnoGrade9500119295001285950013889500229095002380SCCnoCnameCpnoCcredit1數(shù)據(jù)庫542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27Pascal語言64COURSESQL數(shù)據(jù)查詢功能查詢語句SELECT的語法:Select[ALL|DISTINCT]<目標(biāo)表達(dá)式>[{,<目標(biāo)表達(dá)式>}]From<表名或視圖名>[{,<表名或視圖名>}][Where<條件表達(dá)式>][GroupBy<分組列>[{,<分組列>}][HAVING<條件表達(dá)式>]][OrderBy<排序列><排序方式>[{,<排序列><排序方式>}]SQL數(shù)據(jù)查詢功能其語義是:從FROM子句給定的表中,檢索出滿足WHERE子句給定檢索條件的記錄,并根據(jù)SELECT子句從這些記錄中選出指定的列(屬性)所構(gòu)成的結(jié)果集合。SELECT和FROM兩個子句定義了投影操作。WHERE子句給出了選取操作的定義(當(dāng)涉及多表操作時,WHERE子句要同時給出連接操作條件)??梢?,查詢語句作為整體代表著關(guān)系代數(shù)中的投影、選取、連接等操作的組合。但是,由于在查詢語句中并不規(guī)定投影、選取、連接等操作的執(zhí)行順序。因此,它比關(guān)系代數(shù)更一般,更少過程化。SQL數(shù)據(jù)查詢功能單表查詢連接查詢嵌套查詢集合查詢單表查詢查詢?nèi)w學(xué)生的姓名與學(xué)號SelectSname,SnoFromStudent;查詢?nèi)w學(xué)生的全部屬性Select*FromStudent;查看全體學(xué)生的姓名及其出生年份SelectSname,2001-SageFromStudent;單表查詢(續(xù)I)查詢?nèi)w學(xué)生所在學(xué)校、姓名、出生年份和所在系(用小寫字母顯示系名)。Select“北航”,Sname,2001-Sage,ISLOWER(Sdept)FromStudent;Select“北航”School,Sname,2001-SageBirth,ISLOWER(Sdept)FromStudent;單表查詢(續(xù)II)查詢條件謂詞比較>,>=,<,<=,=,!=,<>,!>,!<;NOT+上述比較運算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,OR單表查詢(續(xù)III)查詢選修了課程的學(xué)生學(xué)號SelectDistinctSnoFromSTUDENT;查詢計算機系全體學(xué)生的姓名SelectSnameFromStudentwhereSdept=‘CS’;查詢所有年齡在20歲以下的學(xué)生姓名及其年齡SelectSnameFromStudentwhereSage<20;單表查詢(續(xù)IV)查詢年齡在20~23(含20和23歲)之間的學(xué)生姓名、性別和年齡。SelectSname,Ssex,SageFromStudentWhereSageBETWEEN20AND23;查詢數(shù)學(xué)系和計算機系的學(xué)生的姓名和性別。SelectSname,SsexFromStudentWhereSdeptIN(‘MA’,‘CS’);單表查詢(續(xù)V)查詢所有姓劉的學(xué)生的學(xué)號、姓名SelectSno,SnameFromStudentWhereSnameLike‘劉%’查詢所有姓劉,并且名字為兩個漢字的學(xué)生的學(xué)號、姓名SelectSno,SnameFromStudentWhereSnameLike‘劉__’單表查詢(續(xù)VI)查詢所選課程沒有成績的學(xué)生的學(xué)號,所選課程號。SelectSno,CnoFromSCWhereGradeISNULL單表查詢(續(xù)VII)ORDERBY子句可以將查詢結(jié)果按照一個或多個屬性列的升序(ASC)或降序(DESC)排序。查詢?nèi)w學(xué)生的情況,并按所在系的升序和年齡的降序排列Select*FromStudentOrderBySdeptAsc,SageDesc單表查詢(續(xù)VIII)聚集函數(shù)Count()求元組個數(shù)Sum()對數(shù)值列求總和Avg()求數(shù)值列的平均值Max()求最大值Min()求最小值單表查詢(續(xù)IX)查詢學(xué)生總數(shù)SelectCount(*)FromStudent;查詢選修了課程的學(xué)生人數(shù)SelectCount(DistinctSno)FromSC;計算1號課程的學(xué)生平均成績SelectAVG(Grade)FromSCWhereCno=‘1’;查詢選修1號課程的學(xué)生最高分?jǐn)?shù)SelectMAX(Grade)FromSCWhereCno=‘1’;單表查詢(續(xù)X)查詢各門課及其相應(yīng)選課人數(shù)。SelectCno,Count(Sno)FromSCGroupByCno;查詢選課至少為三門的學(xué)生的學(xué)號及其選課門數(shù)。SelectSno,Count(Sno)FromSCGroupBySnoHavingCount(Sno)>=3;連接查詢連接條件連接查詢中用來連接兩個表的條件稱為連接條件或連接謂詞,其一般格式為:

[<表名>.]<列名><比較運算符>[<表名>.]<列名>其中的<列名>稱為連接字段,連接條件的各個連接字段類型必須是可比的,但不必是相同的。<比較運算符>主要有:=,>,<,>=,<=,!=。當(dāng)連接運算符為等號時,稱為等值連接,否則稱非等值連接。連接查詢(續(xù)I)查詢每個學(xué)生及其所選課程的情況SelectStudent.*,SC.*FromStudent,SCWhereStudent.Sno=SC.Sno;查詢每一門課的間接先修課(即先修課的先修課)SelectFIRST.Cno,SECOND.CpnoFromCourseFIRST,CourseSECONDWhereFIRST.Cpno=SECOND.Cno查詢所有學(xué)生的學(xué)號、姓名、所選修課程的課程號和成績SelectStudent.Sno,Sname,Cno,GradeFromStudent,SCWhereStudent.Sno=SC.Sno(*)嵌套查詢在SQL語言中,一個SELECT-FROM-WHERE稱為一個查詢塊,將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。上層的查詢塊稱為外層查詢或父查詢,下層查詢稱為內(nèi)層查詢或子查詢。外層查詢利用子查詢來獲取檢索條件的條件值,并根據(jù)這個條件值確定外層查詢的結(jié)果集合。通過子查詢,可以利用一系列簡單查詢來構(gòu)造一個復(fù)雜查詢。子查詢中的SELECT語句中不能使用ORDERBY子句,ORDERBY子句只能對最終查詢結(jié)果排序。嵌套查詢(續(xù)I)不相關(guān)子查詢不相關(guān)子查詢的執(zhí)行順序是由內(nèi)向外,即每個子查詢在上一級查詢處理前求解,子查詢的結(jié)果集合作為其外部查詢的檢索條件的條件值。相關(guān)子查詢相關(guān)子查詢的查詢條件引用了其外部查詢的某個屬性值,從而其執(zhí)行依賴于其外部查詢。其執(zhí)行順序是:首先取外部查詢選取一行記錄(稱為候選行),然后子查詢利用候選行中相關(guān)列的值查詢結(jié)果數(shù)據(jù)。接著外部查詢利用子查詢返回的結(jié)果集合判斷候選行是否滿足檢索條件,若滿足,則把它放入外部查詢的結(jié)果集合。重復(fù)上述步驟直到處理完外部查詢的每一行候選行。嵌套查詢(續(xù)II)查詢與劉晨在同一個系學(xué)習(xí)的學(xué)生。SelectSno,Sname,SdeptFromStudentWhereSdept=(SelectSdeptFromStudentWhereSname=‘劉晨’);嵌套查詢(續(xù)III)查詢選修了課程名為‘信息系統(tǒng)’的學(xué)生的學(xué)號和姓名。SelectSno,SnameFromStudentWhereSnoIN(SelectSnoFromSCWhereCnoIN(SelectCnoFromCourseWhereCname=‘信息系統(tǒng)’));嵌套查詢(續(xù)IV)查詢其他系中比信息系中某一學(xué)生年齡小的學(xué)生姓名和年齡。SelectSname,SageFromStudentWhereSdept<>‘IS’AndSage<Any(SelectSageFromStudentWhereSdept=‘IS’)嵌套查詢(續(xù)V)查詢其他系中比信息系中所有學(xué)生年齡都小的學(xué)生姓名和年齡。SelectSname,SageFromStudentWhereSdept<>‘IS’AndSage<All(SelectSageFromStudentWhereSdept=‘IS’)嵌套查詢(續(xù)VI)查詢選擇了1號課程的學(xué)生姓名。SelectSnameFromStudentWhereExists(Select*fromSCWhereSno=Student.SnoAndCno=‘1’)查詢沒有選擇1號課程的學(xué)生姓名。SelectSnameFromStudentWhereNotExists(Select*fromSCWhereSno=Student.SnoAndCno=‘1’)嵌套查詢(續(xù)VII)查詢選修了全部課程的學(xué)生姓名SelectSnameFromStudentWhereNotExists(Select*fromCourseWhereNotExists(Select*fromSCWhereSno=Student.SnoAndCno=Course.Cno));集合查詢查詢選修了1號或2號課程的學(xué)生SelectSnoFromSCWhereCno=‘1’UnionSelectSnoFromSCWhereCno=‘2’集合查詢(續(xù)I)查詢選修了1號課程的學(xué)生和選修了2號課程的學(xué)生的交集SelectSnoFromSCWhereCno=‘1’AndSnoIn(SelectSnoFromSCWhereCno=‘2’)集合查詢(續(xù)II)查詢計算機系的學(xué)生與年齡不大于19歲的學(xué)生的差集Select*fromStudentWhereSdept=‘CS’AndSage>19;SQL數(shù)據(jù)更新功能Insert語句Update語句Delete語句Insert語句插入數(shù)據(jù)InsertInto<表名

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論