數據庫技術及應用_第1頁
數據庫技術及應用_第2頁
數據庫技術及應用_第3頁
數據庫技術及應用_第4頁
數據庫技術及應用_第5頁
已閱讀5頁,還剩291頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

數據庫技術及應用EMAIL:qj@@中國QQ:171995639POPO:BistoneMSN:bistone_shao@課件下載:/

1課程內容:1.數據庫原理2.數據庫設計3.數據庫產品學習:MSACCESS上機練習MSSQLServer2000提供課件自學ORACLE8提供課件自學2從這門課中我們將學到什么?1.領進門:學習數據庫方面的一些基本概念2.查詢資料和理解資料的能力3.最重要的學習能力:發現問題,解決問題3教材:1.王能斌。數據庫系統。電子工業出版社。1995年。2.王能斌編。數據庫系統原理。電子工業出版社。2000年。3.[美]J·D·厄爾曼。數據庫系統原理。4參考書目1.薩師煊,王珊.數據庫系統概論(第三版).北京:高等教育出版社,20012.李昭原.數據庫原理與應用.北京:科學出版社,20003.張健沛.數據庫原理及應用系統開發.北京:中國水利水電出版社,19994.王珊,陳紅.數據庫系統原理教程.北京:清華大學出版社,19995.(美)PhilipJ.Pratt,JoseJ.Adamski.陸洪毅,楊文波,程華等譯.數據庫管理系統基礎.北京:機械工業出版社.19996.AbrahamSilberschatz,HenryF.Korth,S.Sudarshan.楊冬青,唐世渭等譯.數據庫系統概念.北京:機械工業出版社.20007.HectorGarcia-Molina,JeffreyD.Ullman,JenniferWidom.楊冬青,唐世渭,徐其鈞等譯.數據庫系統實現.北京:機械工業出版社,20015上機實驗內容:1。MSACCESS2。使用多種檢索方法找資料,完成考核課程考核:6

第1章

數據庫系統概述7本章概要

在本章中,首先介紹數據庫中有關的主要概念,然后回顧數據管理技術的三個發展階段。要求了解數據庫的三個發展階段及各階段的主要特點,掌握數據庫中的有關的基本概念、數據庫系統的組成及各部分的主要功能。重點掌握實體、屬性定義和實體型之間的聯系類型及特點。了解三種數據模型的特點及區別,為后面各章的學習打下基礎。了解面向對象數據模型的基本特征。

81.1信息、數據與數據處理1.1.1數據與信息在數據處理中,我們最常用到的基本概念就是數據和信息,信息與數據有著不同的含義。信息(Information)1.信息的定義信息是關于現實世界事物的存在方式或運動狀態的反映的綜合,具體說是一種被加工為特定形式的數據,但這種數據形式對接收者來說是有意義的,而且對當前和將來的決策具有明顯的或實際的價值。

如“2000年碩士研究生將擴招30%”,對接受者有意義,使接受者據此作出決策。92.信息的特征信息源于物質和能量,它不可能脫離物質而存在,信息的傳遞需要物質載體,信息的獲取和傳遞要消耗能量。如信息可以通過報紙、電臺、電視、計算機網絡進行傳遞。信息是可以感知的,人類對客觀事物的感知,可以通過感覺器官,也可以通過各種儀器儀表和傳感器等,不同的信息源有不同的感知形式。如報紙上刊登的信息通過視覺器官感知,電臺中廣播的信息通過聽覺器官感知。信息是可存儲、加工、傳遞和再生的。動物用大腦存儲信息,叫做記憶。計算機存儲器、錄音、錄像等技術的發展,進一步擴大了信息存儲的范圍。借助計算機,還可對收集到的信息進行取舍整理。

10數據(Data)1.

數據的定義數據是用來記錄信息的可識別的符號,是信息的具體表現形式。2.

數據的表現形式可用多種不同的數據形式表示同一信息,而信息不隨數據形式的不同而改變。如“2000年碩士研究生將擴招30%”,其中的數據可改為漢字形式“兩千年”、“百分之三十”。數據的概念在數據處理領域中已大大地拓寬了,其表現形式不僅包括數字和文字,還包括圖形、圖象、聲音等。這些數據可以記錄在紙上,也可記錄在各種存儲器中。

11數據與信息的聯系數據是信息的符號表示或載體,信息則是數據的內涵,是對數據的語義解釋。如上例中的數據2000、30%被賦予了特定的語義,它們就具有了傳遞信息的功能。1.1.2數據處理數據處理是將數據轉換成信息的過程,包括對數據的收集、存儲、加工、檢索、傳輸等一系列活動。其目的是從大量的原始數據中抽取和推導出有價值的信息,作為決策的依據??捎孟率胶唵蔚谋硎拘畔?、數據與數據處理的關系:

信息=數據+數據處理數據是原料,是輸入,而信息是產出,是輸出結果。“信息處理”的真正含義應該是為了產生信息而處理數據。121.2數據庫技術的產生、發展與研究領域1.2.1數據庫技術的產生與發展數據處理的中心問題是數據管理。數據管理是指對數據的組織、分類、編碼、存儲、檢索和維護。隨著計算機硬件和軟件的發展,數據管理經歷了人工管理、文件系統和數據庫系統三個發展階段。人工管理階段(50年代中期以前)這一階段計算機主要用于科學計算。硬件中的外存只有卡片、紙帶、磁帶,沒有磁盤等直接存取設備。軟件只有匯編語言,沒有操作系統和管理數據的軟件。數據處理的方式基本上是批處理。13人工管理階段的特點如下:1.數據不保存因為當時計算機主要用于科學計算,對于數據保存的需求尚不迫切。2.系統沒有專用的軟件對數據進行管理每個應用程序都要包括數據的存儲結構、存取方法、輸入方式等,程序員編寫應用程序時,還要安排數據的物理存儲,因此程序員負擔很重。3.數據不共享數據是面向程序的,一組數據只能對應一個程序。多個應用程序涉及某些相同的數據時,也必須各自定義,因此程序之間有大量的冗余數據。144.數據不具有獨立性程序依賴于數據,如果數據的類型、格式、或輸入輸出方式等邏輯結構或物理結構發生變化,必須對應用程序做出相應的修改。在人工管理階段,程序與數據之間的關系可用圖1.1表示。

應用程序1數據集1應用程序2數據集2數據集3應用程序3圖1.1人工管理階段15文件系統階段(50年代后期至60年代中期)這一階段,計算機不僅用于科學計算,還大量用于信息管理。大量的數據存儲、檢索和維護成為緊迫的需求。硬件有了磁盤、磁鼓等直接存儲設備。在軟件方面,出現了高級語言和操作系統。操作系統中有了專門管理數據的軟件,一般稱為文件系統。處理方式有批處理,也有聯機處理。16文件管理數據的特點如下:1.數據以文件形式可長期保存下來用戶可隨時對文件進行查詢、修改和增刪等處理。2.文件系統可對數據的存取進行管理程序員只與文件名打交道,不必明確數據的物理存儲,大大減輕了程序員的負擔。

3.文件形式多樣化有順序文件、倒排文件、索引文件等,因而對文件的記錄可順序訪問,也可隨機訪問,更便于存儲和查找數據。

4.程序與數據間有一定獨立性由專門的軟件即文件系統進行數據管理,程序和數據間由軟件提供的存取方法進行轉換,數據存儲發生變化不一定影響程序的運行。17在文件系統階段,程序與數據之間的關系可用圖1.2表示。

文件n應用程序1應用程序2應用程序n文件1文件2文件系統……圖1.2文件系統階段18與人工管理階段相比,文件系統階段對數據的管理有了很大的進步,但一些根本性問題仍沒有徹底解決,主要表現在以下三方面:1.數據冗余度大各數據文件之間沒有有機的聯系,一個文件基本上對應于一個應用程序,數據不能共享。2.數據獨立性低數據和程序相互依賴,一旦改變數據的邏輯結構,必須修改相應的應用程序。而應用程序發生變化,如改用另一種程序設計語言來編寫程序,也需修改數據結構。3.數據一致性差由于相同數據的重復存儲、各自管理,在進行更新操作時,容易造成數據的不一致性。

19數據庫系統階段(60年代末開始)60年代后期,計算機應用于管理的規模更加龐大,數據量急劇增加;硬件方面出現了大容量磁盤,使計算機聯機存取大量數據成為可能;硬件價格下降,而軟件價格上升,使開發和維護系統軟件的成本增加。文件系統的數據管理方法已無法適應開發應用系統的的需要。為解決多用戶、多個應用程序共享數據的需求,出現了統一管理數據的專門軟件系統,即數據庫管理系統。20數據庫系統管理數據的特點如下:

1.數據共享性高、冗余少這是數據庫系統階段的最大改進,數據不再面向某個應用程序而是面向整個系統,當前所有用戶可同時存取庫中的數據。這樣便減少了不必要的數據冗余,節約存儲空間,同時也避免了數據之間的不相容性與不一致性。2.數據結構化按照某種數據模型,將全組織的各種數據組織到一個結構化的數據庫中,整個組織的數據不是一盤散沙,可表示出數據之間的有機關聯。21例:要建立學生成績管理系統,系統包含學生(學號、姓名、性別、系別、年齡)、課程(課程號、課程名)、成績(學號、課程號、成績)等數據,分別對應三個文件。若采用文件處理方式,因為文件系統只表示記錄內部的聯系,而不涉及不同文件記錄之間的聯系,要想查找某個學生的學號、姓名、所選課程的名稱和成績,必須編寫一段不很簡單的程序來實現。而采用數據庫方式,數據庫系統不僅描述數據本身,還描述數據之間的聯系,上述查詢可以非常容易地聯機查到。223.數據獨立性高數據的獨立性是指邏輯獨立性和物理獨立性。數據的邏輯獨立性是指當數據的總體邏輯結構改變時,數據的局部邏輯結構不變,由于應用程序是依據數據的局部邏輯結構編寫的,所以應用程序不必須修改,從而保證了數據與程序間的邏輯獨立性。例如,在原有的記錄類型之間增加新的聯系,或在某些記錄類型中增加新的數據項,均可確保數據的邏輯獨立性。數據的物理獨立性是指當數據的存儲結構改變時,數據的邏輯結構不變,從而應用程序也不必改變。例如,改變存儲設備和增加新的存儲設備,或改變數據的存儲組織方式,均可確保數據的物理獨立性。234.有統一的數據控制功能數據庫為多個用戶和應用程序所共享,對數據的存取往往是并發的,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中的同一個數據,為確保數據庫數據的正確有效和數據庫系統的有效運行,數據庫管理系統提供下述四方面的數據控制功能。(1)數據的安全性(security)控制:防止不合法使用數據造成數據的泄露和破壞,保證數據的安全和機密;例如,系統提供口令檢查或其他手段來驗證用戶身份,防止非法用戶使用系統;也可以對數據的存取權限進行限制,只有通過檢查后才能執行相應的操作。(2)數據的完整性(integrity)控制:系統通過設置一些完整性規則以確保數據的正確性、有效性和相容性。24正確性是指數據的合法性,如年齡屬于數值型數據,只能含0,1,…9,不能含字母或特殊符號;有效性是指數據是否在其定義的有效范圍,如月份只能用1~12之間的正整數表示;相容性是指表示同一事實的兩個數據應相同,否則就不相容,如一個人不能有兩個性別。(3)并發(concurrency)控制:多用戶同時存取或修改數據庫時,防止相互干擾而提供給用戶不正確的數據,并使數據庫受到破壞。25(4)數據恢復(recovery):當數據庫被破壞或數據不可靠時,系統有能力將數據庫從錯誤狀態恢復到最近某一時刻的正確狀態。數據庫系統階段,程序與數據之間的關系可用圖1.3表示。

圖1.3數據庫系統階段應用程序1應用程序2應用程序n數據庫數據庫管理系統26從文件系統管理發展到數據庫系統管理是信息處理領域的一個重大變化。在文件系統階段,人們關注的是系統功能的設計,因此程序設計處于主導地位,數據服從于程序設計;而在數據庫系統階段,數據的結構設計成為信息系統首先關心的問題。數據庫技術經歷了以上三個階段的發展,已有了比較成熟的數據庫技術,但隨著計算機軟硬件的發展,數據庫技術仍需不斷向前發展。

271.2.2數據庫技術的研究領域數據庫學科的研究范圍主要包括以下三個領域:1.數據庫管理系統軟件的研制DBMS是數據庫系統的基礎。DBMS的研制包括研制DBMS本身及以DBMS為核心的一組相互聯系的軟件系統,包括工具軟件和中間件。研制的目標是提高系統的性能和提高用戶的生產率。2.數據庫設計數據庫設計的研究范圍包括:數據庫的設計方法、設計工具和設計理論的研究,數據模型和數據建模的研究,計算機輔助數據庫設計及其軟件系統的研究,數據庫設計規范和標準的研究等。283.數據庫理論數據庫理論的研究主要集中于關系規范化理論、關系數據理論等。近年來,隨著人工智能與數據庫理論的結合以及并行計算技術的發展,數據庫邏輯演繹和知識推理、并行算法等都成為新的研究方向。隨著數據庫應用領域的不斷擴展,計算機技術的迅猛發展,數據庫技術與人工智能技術、網絡通信技術、并行計算技術等到相互滲透、相互結合,使數據庫技術不斷涌現新的研究方向。

291.3數據庫系統的組成和結構1.3.1數據庫系統的組成數據庫系統通常是指數據庫和相應的軟硬件系統。主要由數據(庫)、用戶、軟件和硬件四部分組成。數據(庫)數據庫是長期存儲在計算機內有組織的共享的數據的集合。它可以供用戶共享,具有盡可能小的冗余度和較高的數據獨立性,使得數據存儲最優,數據最容易操作,并且具有完善的自我保護能力和數據恢復能力。30數據庫特點如下:1.集成性:把某特定應用環境中的各種應用相關的數據及其數據之間的聯系全部地集中地并按照一定的結構形式進行存儲,或者說,把數據庫看成為若干個單個性質不同的數據文件的聯合和統一的數據整體。2.共享性:數據庫中的一塊塊數據可為多個不同的用戶所共享,即多個不同的用戶,使用多種不同的語言,為了不同的應用目的,而同時存取數據庫,甚至同時存取同一塊數據,即多用戶系統。31用戶用戶是指使用數據庫的人,即對數據庫的存儲、維護和檢索等操作。用戶分為三類:1.第一類用戶,終端用戶(EndUser)主要是使用數據庫的各級管理人員、工程技術人員、科研人員,一般為非計算機專業人員;2.第二類用戶,應用程序員(ApplicationProgrammer)負責為終端用戶設計和編制應用程序,以便終端用戶對數據庫進行存取操作。3.第三類用戶,數據庫管理員(DadabaseAdministrator,簡稱DBA)DBA是指全面負責數據庫系統的“管理、維護和正常使用的”人員,其職責如下:32(1)參與數據庫設計的全過程,決定數據庫的結構和內容;(2)定義數據的安全性和完整性,負責分配用戶對數據庫的使用權限和口令管理;(3)監督控制數據庫的使用和運行,改進和重新構造數據庫系統。當數據庫受到破壞時,應負責恢復數據庫;當數據庫的結構需要改變時,完成對數據結構的修改。DBA不僅要有較高的技術專長和較深的資歷,并應具有了解和闡明管理要求的能力。特別對于大型數據庫系統,DBA極為重要。對于常見的微機數據庫系統,通常只有一個用戶,常常不設DBA,DBA的職責由應用程序員或終端用戶代替。33軟件(Software)負責數據庫存取、維護和管理的軟件系統,即數據庫管理系統(DataBaseManagementSystem,簡稱DBMS),數據庫系統的各類人員對數據庫的各種操作請求,都由DBMS完成,DBMS是數據庫系統的核心軟件。硬件(Hardware)存儲和運行數據庫系統的硬件設備。包括CPU、內存、大容量的存儲設備、外部設備等。34編譯系統OS硬件應用系統應用開發工具DBMS數據庫系統層次結構圖如下圖由上圖看出:DBMS在操作系統(OS)的支持下工作,應用程序在DBMS支持下才能使用數據庫。351.3.2數據庫系統的結構可以從多種不同的角度考查數據庫系統的結構。從數據庫管理系統的角度看,數據庫系統通常采用三級模式結構,這是數據庫系統內部的體系結構;從數據庫最終用戶的角度看,數據庫系統的結構分為集中式結構、分布式結構和客戶/服務器結構,這是數據庫系統外部的體系結構。數據庫系統的三級模式結構模式(Schema)是數據庫中全體數據的邏輯結構和特征的描述。例如:學生記錄定義為(學號、姓名、性別、系別、年齡),稱為記錄型,而(001101,張立,男,計算機,20)則是該記錄型的一個記錄值。模式只是對記錄型的描述,而與具體的值無關。36在數據庫系統中,對于同一意義下的數據,如:學生數據,從計算機中處理的二進制表示到用戶處理的諸如學生姓名、年齡等概念的數據之間,存在著許多抽象和轉換。通常DBMS把數據庫從邏輯上分為三級,即外模式、模式和內模式,它們分別反映了看待數據庫的三個角度。三級模式結構如圖1.5所示。37應用1應用2應用n……子模式1……子模式m子模式/模式映象模式模式/內模式映象內模式數據庫圖1.5數據庫系統的三級模式結構

381.模式模式(Schema)是數據庫中全體數據的邏輯結構和特征的描述,又稱概念模式或概念視圖。視圖可理解為一組記錄的值,用戶或程序員看到和使用的數據庫的內容。模式處于三級結構的中間層,它是整個數據庫實際存儲的抽象表示,也是對現實世界的一個抽象,是現實世界某應用環境(企業或單位)的所有信息內容集合的表示,也是所有個別用戶視圖綜合起來的結果,所以又稱用戶共同視圖。它表示了數據庫的整體數據。由多個“概念記錄”組成,包含數據庫的所有信息,也稱“概念數據庫”、“DBA視圖”。DBMS提供模式描述語言(模式DDL)來定義模式。392.外模式又稱子模式或用戶模式或外視圖,是三級結構的最外層,個別用戶只對整個數據庫的一部分感興趣,所以外視圖是個別用戶看到和使用的數據庫內容,因此也常把外視圖稱為用戶數據庫。它由多種外記錄值構成,這些記錄值是概念視圖的某一部分的抽象表示。即個別用戶看到和使用的數據庫內容,也稱“用戶DB”。由多個“外記錄值”組成,是概念視圖的某一部分的抽象表示。從邏輯關系上看,外模式包含于概念模式。DBMS提供子模式描述語言(子模式DDL)來定義子模式。403.內模式又稱存儲模式或內視圖,是三級結構中的最內層,也是靠近物理存儲的一層,即與實際存儲數據方式有關的一層,由多個存儲記錄組成,但并非物理層,不必關心具體的存儲位置。DBMS提供內模式描述語言(內模式DDL)來定義內模式。在數據庫系統中,外模式可有多個,而概念模式、內模式只能各有一個。內模式是整個數據庫實際存儲的表示,而概念模式是整個數據庫實際存儲的抽象表示,外模式是概念模式的某一部分的抽象表示。414.三級結構的優點(1)保證數據的獨立性。將模式和內模式分開,保證了數據的物理獨立性;將外模式和模式分開,保證了數據的邏輯獨立性。(2)簡化了用戶接口。按照外模式編寫應用程序或敲入命令,而不需了解數據庫內部的存儲結構,方便用戶使用系統。(3)有利于數據共享。在不同的外模式下可有多個用戶共享系統中數據,減少了數據冗余。(4)利于數據的安全保密。在外模式下根據要求進行操作,不能對限定的數據操作,保證了其他數據的安全。

42數據庫系統的二級映象數據庫系統的三級模式是對數據的三個抽象級別,它使用戶能邏輯地抽象地處理數據,而不必關心數據在計算機內部的存儲方式,把數據的具體組織交給DBMS管理。為了能夠在內部實現這三個抽象層次的聯系和轉換,DBMS在三級模式之間提供了二級映象功能。431.模式/內模式映象數據庫中的模式和內模式都只有一個,所以模式/內模式映象是唯一的。它確定了數據的全局邏輯結構與存儲結構之間的對應關系。例如,存儲結構變化時,模式/內模式映象也應有相應的變化,使其概念模式仍保持不變,即把存儲結構的變化的影響限制在概念模式之下,這使數據的存儲結構和存儲方法較高的獨立于應用程序,通過映象功能保證數據存儲結構的變化不影響數據的全局邏輯結構的改變,從而不必修改應用程序,即確保了數據的物理獨立性。442.外模式/模式映象數據庫中的同一模式可以有任意多個外模式,對于每一個外模式,都存在一個外模式/模式映象。它確定了數據的局部邏輯結構與全局邏輯結構之間的對應關系。例如,在原有的記錄類型之間增加新的聯系,或在某些記錄類型中增加新的數據項時,使數據的總體邏輯結構改變,外模式/模式映象也發生相應的變化,這一映象功能保證了數據的局部邏輯結構不變,由于應用程序是依據數據的局部邏輯結構編寫的,所以應用程序不必須修改,從而保證了數據與程序間的邏輯獨立性。451.4數據庫管理系統(DBMS)

數據庫管理系統是對數據進行管理的大型系統軟件,它是數據庫系統的核心組成部分,用戶在數據庫系統中的一切操作,包括數據定義、查詢、更新及各種控制,都是通過DBMS進行的。DBMS就是實現把用戶意義下的抽象的邏輯數據處理轉換成計算機中的具體的物理數據的處理軟件,這給用戶帶來很大的方便。461.4.1DBMS的主要功能

1.數據定義DBMS提供數據定義語言DDL(DataDefineLanguage),定義數據的模式、外模式和內模式三級模式結構,定義模式/內模式和外模式/模式二級映象,定義有關的約束條件,例如,為保證數據庫安全而定義的用戶口令和存取權限,為保證正確語義而定義完整性規則。2.數據操縱DBMS提供數據操縱語言DML(DataManipulationLanguage)實現對數據庫的基本操作,包括檢索、插入、修改、刪除等。SQL語言就是DML的一種。473.數據庫運行管理DBMS對數據庫的控制主要通過四個方面實現:數據的安全性控制數據的完整性控制多用戶環境下的并發控制數據庫的恢復以確保數據正確有效和數據庫系統的正常運行。4.數據庫的建立和維護功能包括數據庫的初始數據的裝入,數據庫的轉儲、恢復、重組織,系統性能監視、分析等功能。5.數據通信DBMS提供與其他軟件系統進行通信的功能。實現用戶程序與DBMS之間的通信,通常與操作系統協調完成。481.4.2DBMS的組成DBMS是許多“系統程序”所組成的一個集合。每個程序都有自己的功能,共同完成DBMS的一件或幾件工作。1.語言編譯處理程序(1)數據定義語言DDL及其編譯程序它把用DDL編寫的各級源模式編譯成各級目標模式,這些目標模式是對數據庫結構信息的描述,而不是數據本身,它們被保存在數據字典中,供以后數據操縱或數據控制時使用。(2)數據操縱語言DML及其編譯程序,實現對數據庫的基本操作。DML有兩類,一類是宿主型,嵌入在高級語言中,不能單獨使用;另一類是自主型或自含型,可獨立地交互使用。492.系統運行控制程序,主要包括以下幾部分:系統總控程序:是DBMS運行程序的核心,用于控制和協調各程序的活動;安全性控制程序:防止未被授權的用戶存取數據庫中的數據;完整性控制程序:檢查完整性約束條件,確保進入數據庫中的數據的正確性、有效性和相容性;并發控制程序:協調多用戶、多任務環境下各應用程序對數據庫的并以操作,保證數據的一致性;數據存取和更新程序:實施對數據庫數據的檢索、插入、修改、刪除等操作;通信控制程序:實現用戶程序與DBMS間的通信。

503.系統建立、維護程序,主要包括以下幾部分:裝配程序:完成初始數據庫的數據裝入;重組程序:當數據庫系統性能變壞時(如查詢速度變慢),需要重新組織數據庫,重新裝入數據;系統恢復程序:當數據庫系統受到破壞時,將數據庫系統恢復到以前某個正確的狀態。4.數據字典(DataDictionary,簡稱DD)用來描述數據庫中有關信息的數據目錄,包括數據庫的三級模式、數據類型、用戶名、用戶權限等有關數據庫系統的信息,起著系統狀態的目錄表的作用,幫助用戶、DBA、DBMS本身使用和管理數據庫。511.4.3DBMS的數據存取的過程在數據庫系統中,DBMS與操作系統、應用程序、硬件等協同工作,共同完成數據各種存取操作,其中DBMS起著關鍵的作用。DBMS對數據的存取通常需要以下四步:1.用戶使用某種特定的數據操作語言向DBMS發出存取請求;2.DBMS接受請求并解釋;3.DBMS依次檢查外模式、外模式/模式映象、模式、模式/內模式映象及存儲結構定義;4.DBMS對存儲數據庫執行必要的存取操作;上述存取過程中還包括安全性控制、完整性控制,以確保數據的正確性、有效性和一致性。521.5數據模型1.5.1數據模型的組成要素數據模型是模型的一種,是現實世界數據特征的抽象。數據模型通常由數據結構、數據操作和數據的約束條件三個要素組成。1.數據結構數據結構用于描述系統的靜態特性。數據結構是所研究的對象類型的集合,它是刻畫一個數據模型性質最重要的方面。在數據庫系統中,人們通常按照其數據結構的類型來命名數據模型。數據結構有層次結構、網狀結構和關系結構三種類型,按照這三種結構命名的數據模型分別稱為層次模型、網狀模型和關系模型。532.數據操作數據操作用于描述系統的動態特性。數據操作是對數據庫中各種數據操作的集合,包括操作及相應的操作規則。如數據的檢索、插入、刪除和修改等。數據模型必須定義這些操作的確切含義、操作規則以及實現操作的語言。3.數據的約束條件數據的約束條件是一組完整性規則的集合。完整性規則是給定的數據模型中數據及其聯系所具有的制約和依存規則,用以限定符合數據模型的數據庫狀態以及狀態的變化,以保證數據的正確、有效、相容。數據模型還應該提供定義完整性約束條件的機制,以反映具體應用所涉及的數據必須遵守的特定的語義約束條件。例如,在學生數據庫中,學生的年齡不得超過40歲。541.5.2數據之間的聯系三個世界的劃分由于計算機不能直接處理現實世界中的具體事物,所以人們必須將具體事物轉換成計算機能夠處理的數據。在數據庫中用數據模型來抽象、表示和處理現實世界中的數據。數據庫即是模擬現實世界中某應用環境(一個企業、單位或部門)所涉及的數據的集合,它不僅要反映數據本身的內容,而且要反映數據之間的聯系。這個集合或者包含了信息的一部分(用用戶視圖模擬),或者包含了信息的全部(用概念視圖模擬),而這種模擬是通過數據模型來進行的。55為了把現實世界中的具體事物抽象、組織為某一DBMS支持的數據模型,在實際的數據處理過程中,首先將現實世界的事物及聯系抽象成信息世界的信息模型,然后再抽象成計算機世界的數據模型。信息模型并不依賴于具體的計算機系統,不是某一個DBMS所支持的數據模型,它是計算機內部數據的抽象表示,是概念模型;概念模型經過抽象,轉換成計算機上某一DBMS支持的數據模型。所以說,數據模型是現實世界的兩級抽象的結果。在數據處理中,數據加工經歷了現實世界、信息世界和計算機世界三個不同的世界,經歷了兩級抽象和轉換。這一過程如圖1.6所示。

56圖1.6數據處理的抽象和轉換過程現實世界信息世界認識抽象計算機世界57信息世界中的基本概念在信息世界中,常用的主要概念如下:1.實體(Entity)客觀存在并且可以相互區別的“事物”稱為實體。實體可以是可觸及的對象,如一個學生,一本書,一輛汽車;也可以是抽象的事件,如一堂課,一次比賽等。2.屬性(Attributes)實體的某一特性稱為屬性。如學生實體有學號、姓名、年齡、性別、系等方面的屬性。屬性有"型"和“值”之分,"型"即為屬性名,如姓名、年齡、性別是屬性的型;“值”即為屬性的具體內容,如(990001,張立,20,男,計算機)這些屬性值的集合表示了一個學生實體。583.實體型(EntityType)若干個屬性型組成的集合可以表示一個實體的類型,簡稱實體型。如學生(學號,姓名,年齡,性別,系)就是一個實體型。4.實體集(EntitySet)同型實體的集合稱為實體集。如所有的學生、所有的課程等。5.鍵(Key)能唯一標識一個實體的屬性或屬性集稱為實體的鍵。如學生的學號,學生的姓名可能有重名,不能作為學生實體的鍵。596.域(Domain)屬性值的取值范圍稱為該屬性的域。如學號的域為6位整數,姓名的域為字符串集合,年齡的域為小于40的整數,性別的域為(男,女)。7.聯系(Relationship)在現實世界中,事物內部以及事物之間是有聯系的,這些聯系同樣也要抽象和反映到信息世界中來,在信息世界中將被抽象為實體型內部的聯系和實體型之間的聯系。實體內部的聯系通常是指組成實體的各屬性之間的聯系;實體之間的聯系通常是指不同實體集之間的聯系。反映實體型及其聯系的結構形式稱為實體模型,也稱作信息模型,它是現實世界及其聯系的抽象表示。60兩個實體型之間的聯系有如下三種類型:(1)一對一聯系(1:1)實體集A中的一個實體至多與實體集B中的一個實體相對應,反之亦然,則稱實體集A與實體集B為一對一的聯系。記作1:1。如:班級與班長,觀眾與座位,病人與床位。(2)一對多聯系(1:n)實體集A中的一個實體與實體集B中的多個實體相對應,反之,實體集B中的一個實體至多與實體集A中的一個實體相對應。記作1:n。如:班級與學生、公司與職員、省與市。(3)多對多(m:n)實體集A中的一個實體與實體集B中的多個實體相對應,反之,實體集B中的一個實體與實體集A中的多個實體相對應。記作(m:n)。如:教師與學生,學生與課程,工廠與產品。61實際上,一對一聯系是一對多聯系的特例,而一對多聯系又是多對多聯系的特例。可以用圖形來表示兩個實體型之間的這三類聯系,如圖書1.7所示。

ABABAB(a)(b)(c)圖1.7不同實體集實體之間的聯系62計算機世界中的基本概念信息世界中的實體抽象為計算機世界中的數據,存儲在計算機中。在計算機世界中,常用的主要概念如下:1.字段(Field)對應于屬性的數據稱為字段,也稱為數據項。字段的命名往往和屬性名相同。如學生有學號、姓名、年齡、性別、系等字段。2.記錄(Record)對應于每個實體的數據稱為記錄。如一個學生(990001,張立,20,男,計算機)為一個記錄。3.文件(File)對應于實體集的數據稱為文件。如所有學生的記錄組成了一個學生文件。63在計算機世界中,信息模型被抽象為數據模型,實體型內部的聯系抽象為同一記錄內部各字段間的聯系,實體型之間的聯系抽象為記錄與記錄之間的聯系?,F實世界是設計數據庫的出發點,也是使用數據庫的最終歸宿。實體模型和數據模型是現實世界事物及其聯系的兩級抽象。而數據模型是實現數據庫系統的根據。通過以上的介紹,我們可總結出三個世界中各術語的對應關系如圖1.8所示。

現實世界 信息世界計算機世界 事物總體 實體集文件 事物個體 實體記錄 特征 屬性字段 事物間聯系 實體模型數據模型圖1.8三個世界各術語的對應關系641.5.3數據模型的分類數據模型的好壞,直接影響數據庫的性能。數據模型的選擇,是設計數據庫的一項首要任務。目前最常用的數據模型有層次模型(HierarchicalModel)、網狀模型(NetworkModel)和關系模型(RelationalModel)。這三種數據模型的根區別在于數據結構不同,即數據之間聯系的表示方式不同。層次模型用“樹結構”來表示數據之間的聯系;網狀模型是用“圖結構”來表示數據之間的聯系;關系模型是用“二維表”來表示數據之間的聯系。65其中層次模型和網狀模型是早期的數據模型,統稱為非關系模型。20世紀70年代至80年代初,非關系模型的數據庫系統非常流行,在數據庫系統產品中占據了主導地位,現在已逐漸被關系模型的數據庫系統取代,但在美國等國,由于早期開發的應用系都是基于層次數據庫或網狀數據庫系統,因此目前層次數據庫或網狀數據庫的系統仍很多。20世紀80年代以來,面向對象的方法和技術在計算機各個領域,包括程序設計語言、軟件工程、計算機硬件等各方面都產生了深遠的影響,出現了一種新的數據模型——面向對象的數據模型

66層次模型層次模型是數據庫系統中最早出現的數據模型,采用層次模型的數據庫的典型代表是IBM公司的IMS(InformationManagementSystem)數據庫管理系統,現實世界中,許多實體之間的聯系都表現出一種很自然的層次關系,如家族關系,行政機構等。層次模型用一棵“有向樹”的數據結構來表示各類實體以及實體間的聯系。在樹中,每個結點表示一個記錄類型,結點間的連線(或邊)表示記錄類型間的關系,每個記錄類型可包含若干個字段,記錄類型描述的是實體,字段描述實體的屬性,各個記錄類型及其字段都必須命名。如果要存取某一記錄型的記錄,可以從根結點起,按照有向樹層次向下查找。67圖1.9是層次模型有向樹的示意圖。結點A為根結點,D,F,G為葉結點,B,D為兄結點……圖1.9層次模型有向樹的示意圖

ABCDEF681.層次模型的特征(1)有且僅有一個結點沒有雙親,該結點就是根結點;(2)根以外的其他結點有且僅有一個雙親結點,這就使得層次數據庫系統只能直接處理一對多的實體關系;(3)任何一個給定的記錄值只有按其路徑查看時,才能顯出它的全部意義,沒有一個子女記錄值能夠脫離雙親記錄值而獨立存在。例如:以下是一個層次模型的例子,如圖1.10所示。D#DNDLR#RNS#SNSST#TNTDTS教研室R學生S圖1.10TS數據庫模型69層次數據庫為TS,它具有四個記錄型,分別是:記錄型D(系)是根結點,由字段D#(系編號)、DN(系名)、DL(系地點)組成,它有兩個孩子結點,:R和S,記錄型R(教研室)是D的孩子結點,同時又是T的雙親結點,它由R#(教研室編號)、RN(教研室名)兩個字段組成,記錄型S(學生)由S#(學號)、SN(姓名)、SS(成績)三個字段組成,記錄型T(教師)由T#(職工號)、TN(姓名)、TD(研究方向)三個字段組成,S與T是葉結點,它們沒有子女結點,由D到R,R到T,由D到S均是一對多的關系。70對應上述數據模型的一個值,該值是D02系(計算機系)記錄值及其所有后代記錄值組成的一棵樹,D02系有3個教研室子記錄值:R01、R02、R03和3個學生記錄值:S63871、S63874、S63876,教研室R01有3個教師記錄值:T2101、T17090、T3501.712.層次模型的數據操縱與數據完整性約束層次模型的數據操縱主要有查詢、插入、刪除和修改,進行插入、刪除和修改操作時要滿足層次模型的完整性約束條件。進行插入操作時,如果沒有相應的雙親結點值就不能插入子女結點值;進行刪除操作時,如果刪除雙親結點值,則相應的子女結點值也被同時刪除;修改操作時,應修改所有相應的記錄,以保證數據的一致性。723.層次模型的優缺點層次模型的優點主要有:(1)比較簡單,只需很少幾條命令就能操縱數據庫,比較容易使用。(2)結構清晰,結點間聯系簡單,只要知道每個結點的雙親結點,就可知道整個模型結構?,F實世界中許多實體間的聯系本來就呈現出一種很自然的層次關系,如表示行政層次,家族關系很方便。(3)它提供了良好的數據完整性支持。73層次模型的缺點主要有:(1)不能直接表示兩個以上的實體型間的復雜的聯系和實體型間的多對多聯系,只能通過引入冗余數據或創建虛擬結點的方法來解決,易產生不一致性。(2)對數據的插入和刪除的操作限制太多。(3)查詢子女結點必須通過雙親結點。74網狀模型現實世界中事物之間的聯系更多的是非層次關系的,用層次模型表示這種關系很不直觀,網狀模型克服了這一弊病,可以清晰的表示這種非層次關系。20世紀70年代,數據系統語言研究會CODASYL(ConferenceOnDataSystemLanguage)下屬的數據庫任務組DBTG(DataBaseTaskGroup)提出了一個系統方案,DBTG系統,也稱CODASYL系統,成為了網狀模型的代表。網狀模型取消了層次模型的兩個限制,兩個或兩個以上的結點都可以有多個雙親結點,則此時有向樹變成了有向圖,該有向圖描述了網狀模型。75網狀模型的特征(1)有一個以上的結點沒有雙親;(2)至少有一個結點可以有多于一個雙親。即允許兩個或兩個以上的結點沒有雙親結點,允許某個結點有多個雙親結點,則此時有向樹變成了有向圖,該有向圖描述了網狀模型。網狀模型中每個結點表示一個記錄型(實體),每個記錄型可包含若干個字段(實體的屬性),結點間的連線表示記錄類型(實體)間的父子關系。76如:學生和課程間的關系。一個學生可以選修多門課程,一門課程可以由多個學生選修。如圖1.11所示

圖1.11學生與課程的網狀模型

學生課程772.網狀模型的數據操縱與完整性約束網狀模型的數據操縱主要包括查詢、插入、刪除和修改數據。插入數據時,允許插入尚未確定雙親結點值的子女結點值,如可增加一名尚未分配到某個教研室的新教師,也可增加一些剛來報到,還未分配宿舍的學生。刪除數據時,允許只刪除雙親結點值,如可刪除一個教研室,而該教研室所有教師的信息仍保留在數據庫中。修改數據時,可直接表示非樹形結構,而無需像層次模型那樣增加冗余結點,因此,修改操作時只需更新指定記錄即可。它沒有像層次數據庫那樣有嚴格的完整性約束條件,只提供一定的完整性約束。783.網狀模型的優缺點網狀模型的優點主要有:(1)能更為直接地描述客觀世界,可表示實體間的多種復雜聯系。(2)具有良好的性能和存儲效率網狀模型的缺點主要有(1)結構復雜,其DDL語言極其復雜。(2)數據獨立性差,由于實體間的聯系本質上是通過存取路徑表示的,因此應用程序在訪問數據時要指定存取路徑。79關系模型關系模型是發展較晚的一種模型,1970年美國IBM公司的研究員E.F.Codd首次提出了數據庫系統的關系模型。他發表了題為“大型共享數據銀行數據的關系模型”(ARelationModelofDataforLargeSharedDataBanks),在文中解釋了關系模型,定義了某些關系代數運算,研究了數據的函數相關性,定義了關系的第三范式,從而開創了數據庫的關系方法和數據規范化理論的研究,他為此獲得了1981年的圖靈獎。此后許多人把研究方向轉到關系方法上,陸續出現了關系數據庫系統。1977年IBM公司研制的關系數據庫的代表SystemR開始運行,其后又進行了不斷的改進和擴充,出現了基于SystemR的數據庫系統SQL/DB。

8020世紀80年代以來,計算機廠商新推出的數據庫管理系統幾乎都支持關系模型,非關系系統的產品也都加上了關系接口。數據庫領域當前的研究工作也都是以關系方法為基礎。關系數據庫已成為目前應用最廣泛的數據庫系統,如現在廣泛使用的小型數據庫系統Foxpro、Acess,大型數據庫系統Oracle、Informix、Sybase、SQLServer、DB2等都是關系數據庫系統。811.關系模型的基本概念關系模型的數據結構是一個“二維表框架”組成的集合,每個二維表又可稱為關系,所以關系模型是“關系框架”的集合。關系模型與層次模型、網狀模型不同,它是建立在嚴格的數學概念之上的。教學數據庫的關系模型及其實例,包含五個關系:教師關系T、學生關系S、課程關系C、選課關系SC和授課關系TC,分別對應五張表。下面以其為例,介紹關系模型中所涉及的一些基概念。82T(教師表)TNO教師號TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別T1李力男47教授15003000計算機T2王平女28講師8001200信息T3劉偉男30講師9001200計算機T4張雪女51教授16003000自動化T5張蘭女39副教授13002000信息圖1.12教學數據庫中的關系83S(學生表)SNO學號SN姓名SEX性別AGE年齡DEPT系別S1趙亦女17計算機S2錢爾男18信息S3孫珊女20信息S4李思男21自動化S5周武男19計算機S6吳麗女20自動化圖1.12教學數據庫中的關系(續一)84C(課程表)CNO課程號CN課程名CT課時C1程序設計60C2微機原理80C3數字邏輯60C4數據結構80C5數據庫60C6編譯原理60C7操作系統60圖1.12教學數據庫中的關系(續二)85SC(選課表)TNO教師號CNO課程號T1C1T1C4T2C5T3C1T3C5T4C2T4C3T5C5T5C7SNO學號CNO課程號SCORE成績S1C190S1C285S2C557S2C680S2C7

S2C570S3C10S3C270S3C485S4C193S4C285S4C383S5C289TC(授課表)

圖1.12教學數據庫中的關系(續三)86(1)關系(Relation)一個關系對應一張二維表,如圖的五張表對應五個關系。(2)元組(Tuple)表格中的一行,如S表中的一個學生記錄即為一個元組。(3)屬性(Attribute)表格中的一列,相當于記錄中的一個字段,如S表中有五個屬性(學號,姓名,性別,年齡,系別)。(4)關鍵字(Key)可唯一標識元組的屬性或屬性集,也稱為關系鍵或碼,如S表中學號可以唯一確定一個學生,為學生關系的主碼/主關鍵字。87(5)域(Domain)屬性的取值范圍,如年齡的域是(14~40),性別的域是(男,女)。(6)分量每一行對應的列的屬性值,即元組中的一個屬性值,如學號、姓名、年齡等均是一個分量。(7)關系模式對關系的描述,一般表示為:關系名(屬性1,屬性2,……屬性n),如:學生(學號,姓名,性別,年齡,系別)。88在關系模型中,實體是用關系來表示的,如:學生(學號,姓名,性別,年齡,系別)課程(課程號,課程名,課時)實體間的關系也是用關系來表示的,如:學生和課程之間的關系選課關系(學號,課程號,成績)892.關系模型的數據操縱與完整性約束數據操縱主要包括查詢、插入、刪除和修改數據,這些操作必須滿足關系的完整性約束條件,即實體完整性、參照完整性和用戶定義的完整性。有關完整性的具體含義將在下一章介紹。在非關系模型中,操作對象是單個記錄,而關系模型中的數據操作是集合操作,操作對象和操作結果都是關系,即若干元組的集合;用戶只要指出“干什么”,而不必詳細說明“怎么干”,從而大大地提高了數據的獨立性,提高了用戶的生產率。903、關系模型的優缺點關系模型的優點主要有:(1)

與非關系模型不同,它有較強的數學理論根據。(2)

數據結構簡單、清晰,用戶易懂易用,不僅用關系描述實體,而且用關系描述實體間的聯系。(3)

關系模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作和數據庫建立和開發的工作。關系模型的缺點主要有:由于存取路徑對用戶透明,查詢效率往往不如非關系模型,因此,為了提高性能,必須對用戶的查詢表示進行優化,增加了開發數據庫管理系統的負擔。

911.6數據模型與數據庫系統的發展數據模型是數據庫系統的核心和基礎,數據模型的發展經歷了格式化數據模型(層次數據模型和網狀數據模型的統稱)、關系數據模型和面向對象的數據模型三個階段,按照這種劃分,數據庫技術的發展也經歷了三個發展階段。921.6.1第一代數據庫系統層次數據庫系統和網狀數據庫系統的數據模型分別為層次模型和網狀模型,但從本質上講層次模型是網狀模型的特例,二者從體系結構、數據庫語言到數據存儲管理上均具有共同的特征,都是格式化模型,屬于第一代數據庫系統。第一代數據庫系統的特點是:1.支持三級模式的體系結構層次數據庫和網狀數據庫均支持三級模式結構,即外模式、模式和內模式,并通過外模式與模式、模式與內模式二級映象,保證了數據的物理獨立性和邏輯獨立性。2.用存取路徑來表示數據之間的聯系數據庫不僅存儲數據而且存儲數據之間的聯系。數據之間的聯系在層次和網狀數據庫系統中是用存取路徑來表示和實現的。933.獨立的數據定義語言第一代數據庫系統使用獨立的數據定義語言來描述數據庫的三級模式以及二級映象。格式一經定義就很難修改,這就要求數據庫設計時,不僅要充分考慮用戶的當前需求,還要了解需求可能的變化和發展。4.導航的數據操縱語言導航的含義就是用戶使用某種高級語言編寫程序,一步一步的引導程序按照數據庫中預先定義的存取路徑來訪問數據庫,最終達到要訪問的數據目標。在訪問數據庫時,每次只能存取一條記錄值。若該記錄值不滿足要求就沿著存取路徑查找下一條記錄值。941.6.2第二代數據庫系統第二代數據庫系統是指支持關系數據模型的關系數據庫系統。關系模型不僅簡單、清晰,而且有關系代數作為語言模型,有關系數據理論作為理論基礎。所以在關系模型提出后,很快便從實驗室走向了社會,20世紀80年代幾乎所有新開發的數據庫系統都是關系型數據庫系統。這些商用數據庫系統的運行,特別是微機RDBMS的使用,使數據庫技術日益廣泛地應用到企業管理、情報檢索、輔助決策等各個方面,成為實現和優化信息系統的基本技術。95關系模型之所以能成為深受廣大用戶歡迎的數據模型,與第一代數據庫系統所支持的格式化模型相比,主要具有以下特點:關系模型的概念單一,實體以及實體之間的聯系都用關系來表示;關系模型以關系代數為基礎,形式化基礎好;數據獨立性強,數據的物理存取路徑對用戶隱蔽;關系數據庫語言是非過程化的,將用戶從編程數據庫記錄的導航式檢索中解脫出來,大大降低了用戶編程的難度。961.6.3傳統數據庫的局限性一般說來,將第一代數據庫和第二代數據庫稱為傳統數據庫。由于傳統數據庫尤其是關系數據庫系統具有許多優點,人們紛紛采用數據庫技術來進行數據管理,數據庫技術被應用到了許多新的領域,如計算機輔助設計/計算機輔助制造(CAD/CAM),計算機輔助工程(CASE),圖像處理等,這些新領域的應用不僅需要傳統數據庫所具有的快速檢索和修改數據的特點,而且在應用中提出了一些新的數據管理的需求,如要求數據庫能夠處理聲音、圖像、視頻等多媒體數據。在這些新領域中,傳統數據庫暴露了其應用的局限性,主要表現在以下幾個方面:971.面向機器的語法數據模型傳統數據庫中采用的數據模型是面向機器的語法數據模型,只強調數據的高度結構化,只能存儲離散的數據和有限的數據與數據之間的關系,語義表示能力較差,無法表示客觀世界中的復雜對象,如聲音、圖像、視頻等多媒體數據,工程、測繪等領域中的非格式化數據。此外,傳統數據模型缺乏數據抽象,無法揭示數據之間的深層含義和內在聯系。2.數據類型簡單、固定傳統的DBMS主要面向事務處理,只能處理簡單的數據類型,如整數、實數、字符串、日期等,而不能根據特定的需要定義新的數據類型。例如,不能定義包含三個實數分量(x,y,z)的數據類型circle來表示圓,而只能分別定義三個實型的字段。這樣對于復雜的數據類型只能由用戶編寫程序來處理,加重了用戶的負擔,也不能保證數據的一致性。983.結構與行為完全分離從應用程序員的角度來看,在某一應用領域內標識的對象可以包含兩方面的內容,即對象的結構和對象的行為。傳統的數據庫可以采用一定的數據庫模式來表示前者,而對于后者,卻不能直接存儲和處理,必須通過另外的應用程序加以實現。例如,對于多媒體數據,雖然可以在帶有前面所提到的缺陷的情況下以簡單的二進制代碼形式存儲其結構,但卻無法存儲其行為(如播放聲音、顯示圖像等)。這樣,這些多媒體數據必須由相應的應用程序來識別,而對于其他不了解其格式的用戶來說,數據庫中存儲的是沒有任何意義的二進制數據。由此可見,在傳統數據庫中,對象的結構可以存儲在數據庫中,而對象的行為必須由應用程序來表示,對象的結構與行為完全相分離。994.被動響應傳統數據庫只能根據用戶的命令執行特定的服務,屬于被動響應,用戶要求做什么,系統就做什么。而在實際應用中,往往要求一個系統能夠管理它本身的狀態,在發現異常情況時及時通知用戶;能夠主動響應某些操作或外部事件,自動采取規定的行動等等。例如,一個倉庫管理系統除了希望數據庫系統能夠正確,高效地存儲有關物品的數據,還希望數據庫系統能夠對倉庫庫存進行監控,當庫存太少或太多時主動向用戶發出警告。要完成這樣的工作,數據庫系統必須更加主動、更加智能化,而傳統的數據庫顯然不能適應這一要求。5.事務處理能力較差傳統數據庫只能支持非嵌套事務,對于較長事務的運行較慢,且中事務發生故障時恢復比較困難。由于存在上述種種缺陷,使得傳統數據庫無法滿足新領域的應用需求,數據庫技術遇到了挑戰,在這種情況下,新一代數據庫技術應運而生。1001.6.4第三代數據庫系統第三代數據庫系統的特點第三代數據庫系統是指支持面向對象(ObjectOriented,簡稱OO)數據模型的數據庫系統。在數據庫面臨許多新的應用領域時,1989年9月,一批專門研究面向對象技術的著名學者著文“面向對象的數據庫系統宣言”,提出繼第一代(層次、網狀)和第二代(關系)數據庫系統后,新一代DBS將是OODBS。1990年9月,一些長期從事關系數據庫理論研究的學者組建了高級DBMS功能委員會,發表了“第三代數據庫系統宣言”的文章,提出了第三代DBMS應具有的三個基本特點。1011.第三代數據庫系統應支持面向對象的數據模型除提供傳統的數據管理服務外,第三代數據庫系統應支持數據管理、對象管理和知識管理,支持更加豐富的對象結構和規則,以提供更加強大的管理功能,支持更加復雜的數據類型,以便能夠處理非傳統的數據元素(如超文本、圖片、聲音等)。90年代成功的DBMS都會提供上述服務。有關OO模型的基本內容,將在下一節“面向對象的數據庫技術”中詳細介紹。2.第三代數據庫系統必須保持或繼承第二代數據庫系統的優點第三代數據庫系統不僅能很好的支持對象管理和規則管理,還要更好地支持原有的數據管理,保持第二代數據庫系統的非過程化的數據存取方式和數據獨立性。1023.第三代數據庫系統必須具有開放性數據庫系統的開放性(open)是指必須支持當前普遍承認的計算機技術標準,如支持SQL語言,支持多種網絡標準協議,使得任何其他系統或程序只要支持同樣的計算機技術標準即可使用第三代數據庫系統;開放性還包括系統的可移植性、可連接性、可擴展性和可互操作性等。103研究第三代數據庫系統的途徑數據庫工作者為了給應用建立合適的數據庫系統,進行了艱苦的探索,從多方面發展了現行的數據庫系統技術,主要的研究途徑和方向有:對傳統數據庫(主要是關系數據庫)進行不同層次上的擴充。與計算機領域中其他學科的新技術緊密結合,豐富和發展數據庫系統的概念、功能和技術。面向應用領域的數據庫技術的研究。其中,前兩個途徑是立足于數據庫已有的成果和技術,加以發展進化,有人稱之為“進化論”的觀點和方法。后者是立足于新的應用需求和計算機未來的發展,研究全新的數據庫系統,有人稱之為“革新論”的觀點和方法。1041.7.1面向對象模型的核心概念面向對象的程序設計方法是目前程序設計中主要的方法之一,它簡單、直觀、自然,十分接近人類分析和處理問題的自然思維方式,同時又能有效地用來組織和管理不同類型的數據。把面向對象程序設計方法和數據庫技術相結合能夠有效地支持新一代數據庫應用。于是,面向對象數據庫系統研究領域應運而生,吸引了相當面多的數據庫工作者,獲得了大量的研究成果,開發了很多面向對象數據庫管理系統,包括實驗系統和產品。比較典型的有POSTGRES系統和Gemstone系統,其中POSTGRES系統是以INGRES關系數據庫系統為基礎,擴充其功能,使之具有面向對象的特性;Gemstone系統是在面向對象程序語言基礎上擴充得到的。目前,各個關系數據庫廠商都在不同程度上擴展了關系模型,推出了符合面向對象數據模型的數據庫系統。1.7面向對象的數據庫技術105面向對象的數據模型吸收了面向對象程序設計方法的核心概念和基本思想,用面向對象的觀點來描述現實世界的實體。一系列面向對象的核心概念構成了面向對象數據模型的基礎,其中主要包括對象和對象標識、屬性和方法、封裝和消息、類和繼承。下面簡要介紹這些概念:1.對象(Object)和對象標識(ObjectIdentifier,簡稱OID)對象是面向對象編程中最重要的概念,用對象來表示現實世界中的實體。一個學生,一門課程,一次考試記錄等等都可以看作對象。每個對象都包含一組屬性和一組方法。106屬性用來描述對象的狀態、組成和特性,是對象的靜態特征。一個簡單對象如整數,其值本身就是其狀態的完全描述,不再需要其它屬性,這樣的對象稱為原子對象。屬性的值也可以是復雜對象。一個復雜對象包含若干個屬性,而這些屬性作為一種對象,又可能包含多個屬性,這樣就形成了對象的遞歸引用,從而組成各種復雜對象。

方法用以描述對象的行為特性。一個方法實際是一段可對對象操作的程序。方法可以改變對象的狀態,所以稱為對象的動態特征。如一臺計算機,它不僅具有描述其靜態特征的屬性:CPU型號、硬盤大小、內存大小等,還具有開機、關機、睡眠等動態特征。由此可見,每個對象都是屬性和方法的統一體。與關系模型的實體概念相比,對象模型中的對象概念更為全面,因為關系模型主要描述對象的屬性,而忽視了對象的方法,因此會產生前面提到過的“結構與行為相分離”的缺陷。107每一對象都由唯一的對象標識來識別,用于確定和檢索這個對象。對象標識獨立于對象的內容和存儲位置,是一種邏輯標識符,通常由系統產生,在整個系統范圍內是唯一的。兩個對象即使內部狀態值和方法都相同,如標識符不同,仍認為是兩個相等而不同的對象。如同一型號的兩個零件,在設計圖上被用在不同的地方,這兩個零件是“相等”的,但被視為不同的對象具有不同的標識符。在這一點上,面向對象的模型與關系模型不同,在關系模型中,如果兩個元組的屬性值完全相同,則被認為是同一元組。1082.封裝(Encapsulation)和消息(Message)每一個對象都是其屬性和方法的封裝。用戶只能見到對象封裝界面上的信息,對象內部對用戶是隱蔽的。封裝的目的是為了使對象的使用和實現分開,使用者不必知道行為實現的細節,只需用消息來訪問對象,這種數據與操作統一的建模方法有利于程序的模塊化,增強了系統的可維護性和易修改性。例如,在一個面向對象的系統中,把計算機定義為一個對象,用戶只要掌握如何開機、關機等操作就可以使用計算機了,而不用去管計算機內部是如何完成這些操作的細節問題。消息是用來請求對象執行某一處理或回答某些信息的要求。一個對象所能接受的消息與其所帶參數構成對象的外部界面。某一對象在執行相應處理時,如果需要,它可以通過傳遞消息請求其它對象完成某些操作,消息傳遞是對象之間聯系的唯一方式。一個對象可以向許多對象同時發出消息,也可以接受多個對象發來的消息。109消息中只包含發送者的要求,它告訴接收者需要完成哪些處理。如何處理由接收者解釋。接收者獨立決定采用什么方式完成所需的處理。

在面向對象系統中對對象的操作在于選擇一個對象并通知它要作什么,該對象決定如何完成這一工作,即在它的一組方法中選擇合適的方法作用于其自身。因此,在面向對象的系統中,對象是操作的基本單位。3.類(Class)和繼承(Inheritance)具有同樣屬性和方法集的所有對象構成了一個對象類(簡稱類),一個對象是某一類的實例(Instance)。例如,把學生定義一個類,則某個學生張三、李四等則是學生類中的對象。在OODB中,類是“型”,對象是某一類的“值”。110此外,類的表示具有層次性。在OO模型中,可以通過對已有的類定義進行擴充和細化來定義一個新類,從而形成了一種層次結構,有了超類和子類的概念。所謂超類就是可以通過擴充和細化導出其他類,而子類是指由通過擴展類定義而得到的類。這種層次結構的一重要特點是繼承性。因為一個類可以有多個子類,也可以有多個超類,因此,一個類可以直接繼承多個類,這種繼承方式稱為多重繼承。如在職研究生,既屬于職工類,又屬于學生類,他繼承了職工和學生的所有性質。如果一個類至多只有一個超類,則一個類只能從單個超類繼承屬性和方法,這種繼承方式稱為單重繼承。在多重繼承情況下,類的層次結構不再是一棵樹,而是一個網絡結構。1111.7.2面向對象數據庫系統的特點OODBS是面向對象技術與數據庫技術相結合的產物,所以稱一個數據庫系統為面向對象的數據庫系統至少應滿足兩個條件,一個是支持面向對象數據模型的內核;另一個是支持傳統數據庫的所有數據成份,所以OODBS除了具有原來關系數據庫的各種特點外,還具有以下特點:1.擴充數據類型RDBMS只支持某些固定的類型,不能依據某一特定的應用所需來擴展其數據類型,而OODBS允許用戶在關系數據庫系統中擴充數據類型。新數據類型可定義為原有類型的子類或超類,新的數據類型定義之后,存放在數據庫管理系統核心中,如同基本數據類型一樣,可供所有用戶共享。1122.支持復雜對象OODBS中的基本結構是對象而不是記錄,一個對象不僅包括描述它的數據,還包括對它操作的方法。OODBS不僅支持簡單的對象,還支持由多種基本數據類型或用戶自定義的數據類型構成的復雜對象,支持子類、超類和繼承的概念,因而能對現實世界的實體進行自然而直接的模擬,可表示諸如某個對象由“哪些對象組成”,有“什么性質”,處在“什么狀態”,具有豐富的語義信息,這是傳統數據庫所不能比擬的。3.提供通用的規則系統規則在DBMS及其應用中是十分重要的,在傳統的RDBMS中用觸發器來保證數據庫的完整性。觸發器可以看成規則的一種形式。OODBS支持的規則系統將更加通用,更加靈活。例如規則中的事件和動作可以是任何的SQL語句,可以使用用戶自定義的函數,規則還能夠被繼承。這就大大增強了OODBS功能,使之具有主動數據庫的特性。1131.7.3面向對象數據庫語言OODB語言融程序語言和數據庫語言于一體,用于描述面向對象數據庫模式,說明并操縱類定義與對象實例。Gemstone數據庫系統中所采用的OPAL語言被認為是OODB語言的典型代表,主要包括對象定義語言(ODL)和對象操縱語言(OML)。1.對象定義語言ODL可以對類進行定義與操縱,其中包括定義類的屬性、操縱特征、繼承性與約束,可以修改和撤銷類。ODL還可以用于對象方法的定義與實現。在操作實現中,語言的命令可用于操作對象的局部數據結構。對象模型中的封裝性允許方法由不同程序設計語言來實現,并且隱藏不同程序設計語言實現的事實。2.對象操縱語言對象操縱包括對實例對象進行插入、修改、刪除和查詢等操作。1141.7.4面向對象數據庫的研究內容把面向對象的技術與數據庫技術相結合形成面向對象的數據庫系統,有許多新的課題要研究。1.數據模型研究目前,面向對象的數據庫還沒有一個確定的數據模型,支持面向對象數據庫的數據模型大多源于支持面向對象程序設計語言的數據模型,并進行了一些數據庫功能的擴充。它們都包含了面向對象的基本思想,但缺乏一個公共的形式框架,以至在這個框架中可以定義面向對象的數據模型,給出這個數據模型中對象及其方法的形式語義以建立面向對象數據庫系統的理論基礎。2.與程序設計語言集成的研究面向對象程序設計語言著重于數據庫的行為特征和結構特征,而數據庫著重于對永久性數據的管理,兩者的集成將會對更廣泛的應用領域有更好的支持。1153.體系結構的研究將面向對象的概念引入數據庫中,對傳統數據庫系統中的一些結構概念需要重新考慮,包括查詢、索引、并發控制以及存儲結構,這些都要涉及到對類的處理,要比傳統數據模型中的結構得多。人們認為OODBS將成為下一代數據庫系統的典型代表,但是,OODBS在奠基其新一代數據庫地位之前要清除兩個障礙:標準化和性能。關系數據庫的成功不僅在于其簡單的數據模型和高度的數據獨立性,還在于其標準化。標準化對OODBMS實際上更為重要,因為OODBMS涉及范圍遠遠超出RDBMS,應用更加復雜,為了使應用實際可行,為了使應用實際可以在不同環境間移植和操作,以及為了使用戶容易學習新的OODBS,標準尤其重要。即將頒布的SQL99(俗稱SQL3)增加了OODB的許多特征,會對OODB的標準化有所貢獻。116數據庫技術與其他相關技術的結合是當前數據庫技術發展的重要特征。計算機領域中其他新興技術的發展對數據庫技術產生了重大影響。面對傳統數據庫技術的不足和缺陷,人們自然而然地想到借鑒其他新興的計算機技術,從中吸取新的思想、原理和方法,將其與傳統的數據庫技術相結合,以推出新的數據庫模型,從而解決傳統數據庫存在的問題。通過這種方法,人們研制出了各種各樣的新型數據庫,例如:數據庫技術與分布處理技術相結合,出現了分布式數據庫;數據庫技術與人工智能技術相結合,出現了演繹數據庫、主動數據庫和知識庫等;數據庫技術與多媒體技術相結合,出現了多媒體數據庫。下面我們將對其中的幾個新型數據庫中以介紹。1.8數據庫技術與其他相關技術的結合1171.8.1

分布式數據庫(DistributedDatabase)集中式系統和分布式系統到目前為止,我們所介紹的數據庫系統都是集中式數據庫系統。所謂集中式數據庫就是集中在

溫馨提示

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

評論

0/150

提交評論