數(shù)據(jù)庫復(fù)習(xí)資料 (2)_第1頁
數(shù)據(jù)庫復(fù)習(xí)資料 (2)_第2頁
數(shù)據(jù)庫復(fù)習(xí)資料 (2)_第3頁
數(shù)據(jù)庫復(fù)習(xí)資料 (2)_第4頁
數(shù)據(jù)庫復(fù)習(xí)資料 (2)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第一章 數(shù)據(jù)庫系統(tǒng)概論 一、數(shù)據(jù)庫技術(shù)概述 1. 數(shù)據(jù)、數(shù)據(jù)處理、數(shù)據(jù)管理數(shù)據(jù)是描述現(xiàn)實世界中各種具體事物或抽象概念的可存儲并具有明確意義的各種符號。數(shù)據(jù)處理是指包括數(shù)據(jù)采集、整理、編碼和輸入,從而有效地將數(shù)據(jù)組織到計算機中,由計算機對數(shù)據(jù)進行存儲、加工、分類、檢索、傳輸和輸出等一系列的操作過程。數(shù)據(jù)管理是指數(shù)據(jù)處理的一系列活動中的基本操作環(huán)節(jié),如對數(shù)據(jù)的組織、存儲、檢索和維護等工作,它是數(shù)據(jù)處理的核心。通俗說,數(shù)據(jù)管理就是指在計算機系統(tǒng)里對數(shù)據(jù)所進行的操作。在數(shù)據(jù)組織到計算機中之前不屬于數(shù)據(jù)管理,將數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)搅硪粋€計算機系統(tǒng)的傳輸動作也不屬于數(shù)據(jù)管理。人工管理階段背景:硬件,沒有直

2、接存取設(shè)備,軟件,沒有操作系統(tǒng)及管理數(shù)據(jù)的軟件;數(shù)據(jù)處理的方式為批處理文件系統(tǒng)階段背景:硬件,有直接存取設(shè)備,軟件,有操作系統(tǒng)和專門的數(shù)據(jù)管理的軟件;數(shù)據(jù)處理方式可為批處理方式也可為聯(lián)機方式數(shù)據(jù)庫系統(tǒng)階段背景:多用戶、多應(yīng)用共享數(shù)據(jù)要求,大量數(shù)據(jù)處理需求。. 數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,由六部分構(gòu)成:數(shù)據(jù)庫(DataBase,DB) 是存儲在計算機系統(tǒng)內(nèi)的、有結(jié)構(gòu)的數(shù)據(jù)的集合;數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,DBMS) 是管理數(shù)據(jù)庫的系統(tǒng)軟件,為用戶和數(shù)據(jù)之間提供接口,使用戶可對數(shù)據(jù)庫進行各種操作。是數(shù)據(jù)庫系統(tǒng)的核心部分。運

3、行環(huán)境 包括計算機硬件系統(tǒng)、操作系統(tǒng)、開發(fā)工具等;數(shù)據(jù)庫管理員(DataBase Administraor,DBA) 主要負責(zé)設(shè)計、建立、管理和維護數(shù)據(jù)庫,協(xié)調(diào)各用戶對數(shù)據(jù)庫的要求等;DBA不一定只是一個人,可以是一個工作組;用戶(Users) 數(shù)據(jù)庫系統(tǒng)的服務(wù)對象。數(shù)據(jù)庫應(yīng)用系統(tǒng) 滿足用戶功能需求的軟件系統(tǒng)。 二、數(shù)據(jù)模型1. 數(shù)據(jù)模型概述數(shù)據(jù)模型是數(shù)據(jù)抽象的工具,即用此工具來組織數(shù)據(jù),使數(shù)據(jù)結(jié)構(gòu)化。目前廣泛使用的數(shù)據(jù)模型可分為兩個層次。第一層數(shù)據(jù)模型是獨立于計算機系統(tǒng)的模型,它完全不涉及信息在系統(tǒng)中的表示,只是用來描述某個特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型”。第二層數(shù)據(jù)模

4、型是依賴于計算機系統(tǒng)的模型,它是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),這類模型涉及到計算機系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),這類模型稱為“結(jié)構(gòu)數(shù)據(jù)模型”?,F(xiàn)實世界(事物 事物特性)信息世界(實體 實體屬性)數(shù)據(jù)世界(記錄 數(shù)據(jù)項)概念模型結(jié)構(gòu)模型1. 現(xiàn)實世界的抽象過程現(xiàn)實世界客觀存在的世界。在現(xiàn)實世界中存在著各種運動著的物質(zhì),即各種事物及事物之間的聯(lián)系??陀^世界中的事物都有一些特征,人們正是利用這些特征來區(qū)分事物。信息世界人們通過大腦對客觀世界的感知,又通過分析、歸納、抽象等方法處理,形成信息,對這些信息進行記錄、整理、歸納和格式化,即構(gòu)成了信息世界。實體聯(lián)系模型、對象模型數(shù)據(jù)世界(機器世界)數(shù)據(jù)化了的信息世界稱為

5、數(shù)據(jù)世界,也叫機器世界。關(guān)系模型、層次模型、網(wǎng)狀模型2. 概念數(shù)據(jù)模型概念數(shù)據(jù)模型是獨立于計算機系統(tǒng),完全不涉及數(shù)據(jù)在計算機系統(tǒng)中的表示,按用戶的觀點在信息世界中對事物建模,強調(diào)其語義表達能力,主要用于數(shù)據(jù)庫概念設(shè)計。典型的概念模型有:實體聯(lián)系模型(ER模型)和對象模型。 3. 結(jié)構(gòu)數(shù)據(jù)模型的三要素結(jié)構(gòu)數(shù)據(jù)模型是面向計算機系統(tǒng)的,是現(xiàn)實世界中的信息最終在機器世界中得到的反映,它通常有一組嚴(yán)格定義了語法和語義的語言,人們可以使用它來定義、操縱數(shù)據(jù)庫的數(shù)據(jù)。典型的結(jié)構(gòu)數(shù)據(jù)模型有:層次模型、網(wǎng)狀模型和關(guān)系模型。數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)操作數(shù)據(jù)約束3.1 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)用于描述數(shù)據(jù)的靜態(tài)特性。數(shù)據(jù)結(jié)構(gòu)不僅要描述

6、數(shù)據(jù)本身,如數(shù)據(jù)類型、內(nèi)容、屬性;還要描述數(shù)據(jù)之間的聯(lián)系。不同的數(shù)據(jù)模型采用不同的數(shù)據(jù)結(jié)構(gòu)。在關(guān)系數(shù)據(jù)模型中用數(shù)據(jù)記錄和數(shù)據(jù)項來描述。 3.2 數(shù)據(jù)操作數(shù)據(jù)操作用于描述數(shù)據(jù)的動態(tài)特性。是指對數(shù)據(jù)庫中的數(shù)據(jù)所允許執(zhí)行的操作的集合。主要有插入、刪除、修改和查詢四種操作。 3.3 數(shù)據(jù)約束數(shù)據(jù)約束是一組完整性規(guī)則的集合。完整性規(guī)則是數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的約束規(guī)則,用來限定數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確性。完備的數(shù)據(jù)模型都會提供描述約束的機制,盡可能完整地描述現(xiàn)實系統(tǒng)中對事物的約束規(guī)定,以達到真實描述現(xiàn)實系統(tǒng)的目的。4. 層次模型層次模型(Hierarchical Data Mod

7、el)是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。20世紀(jì)60年代后期,IBM開發(fā)出IMS (Information Management System) DBMS,是層次數(shù)據(jù)模型的基礎(chǔ)。 層次模型是以記錄型為結(jié)點的有向樹。用樹形結(jié)構(gòu)表示各類實體以及實體之間的聯(lián)系。現(xiàn)實世界中許多實體之間的聯(lián)系就呈現(xiàn)出一種很自然的層次關(guān)系,如:行政機構(gòu)、家庭關(guān)系等。層次模型中,每個結(jié)點表示一個記錄類型,結(jié)點之間的連線表示記錄類型間的聯(lián)系,但這種聯(lián)系只能是父子聯(lián)系。層次模型中,任何一個給定的記錄值,只有按其路徑查看時,才能顯示出它的完整意義。沒有一個子女記錄值能夠脫離雙親記錄值而獨立存在。 層次模型的數(shù)據(jù)結(jié)構(gòu)樹結(jié)點表示“實

8、體”,即一條記錄,樹結(jié)點之間的連線表示“聯(lián)系”。層次模型的數(shù)據(jù)操作按數(shù)據(jù)結(jié)構(gòu)中對樹的操作,實現(xiàn)結(jié)點的增加、刪除、修改和查詢。層次模型的數(shù)據(jù)約束一個模型一個根,根以外的結(jié)點只有一個雙親結(jié)點,一對多關(guān)系。5. 網(wǎng)狀模型(Net Data Model)網(wǎng)狀數(shù)據(jù)模型的典型代表是DBTG系統(tǒng),亦稱CODASYL系統(tǒng)。網(wǎng)狀模型去掉了層次模型的兩個限制,允許結(jié)點有多個雙親結(jié)點??杀葘哟文P透苯拥孛枋霈F(xiàn)實世界。它是層次模型的泛化。數(shù)據(jù)結(jié)構(gòu)用有向圖描述,圖頂點表示實體,邊表示實體間的聯(lián)系。數(shù)據(jù)操作實現(xiàn)對圖中頂點的插入、刪除、修改和查詢。數(shù)據(jù)約束沒有約束。 6. 關(guān)系模型關(guān)系模型是由E.F.Codd(埃德加.考

9、特)于1970年首先提出。它的基礎(chǔ)不是圖而是表。用二維表來表示實體和聯(lián)系。每個二維表稱為一個關(guān)系。表中每一行代表一個實體,表中每一列則代表實體的屬性。二維表既反映了實體本身,也反映了實體與實體間的聯(lián)系。數(shù)據(jù)結(jié)構(gòu)表中的行表示實體,表和表之間的相同屬性反映實體間的聯(lián)系。數(shù)據(jù)操作按行可以增加、刪除、修改和查詢實體。數(shù)據(jù)約束任何兩行不能完全相同,主鍵約束、域值約束、參照完整性約束、用戶自定義約束等。7. 面向?qū)ο竽P兔嫦驅(qū)ο竽P停∣bject-Oriented Data Model)用對象來描述事物,一個事物即為一個對象。面向?qū)ο竽P偷臄?shù)據(jù)結(jié)構(gòu)用對象、對象屬性及對象之間的聯(lián)系來描述。面向?qū)ο竽P偷臄?shù)據(jù)

10、操作及完整性約束則是統(tǒng)一封裝在對象之中的。三、數(shù)據(jù)庫系統(tǒng)的構(gòu)造數(shù)據(jù)庫系統(tǒng)的三級模式數(shù)據(jù)庫系統(tǒng)總體結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的主要特點1. 數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)1.1 數(shù)據(jù)的獨立性概念所謂數(shù)據(jù)獨立性,是指應(yīng)用程序獨立于數(shù)據(jù)的邏輯表示與物理存儲。通過將數(shù)據(jù)的定義與存儲從程序中獨立出來實現(xiàn)。 1.2 數(shù)據(jù)的邏輯獨立性數(shù)據(jù)邏輯獨立性是當(dāng)概念模式改變時,例如,增加了新的關(guān)系、新的屬性、改變了屬性的數(shù)據(jù)類型等,由DBA對各個外模式/概念模式的映象作相應(yīng)改變,可使外模式盡可能保持不變。由于應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨立性,簡稱數(shù)據(jù)的邏輯獨立性。 1.3 數(shù)據(jù)的物理獨

11、立性數(shù)據(jù)的物理獨立性 是指當(dāng)數(shù)據(jù)庫的內(nèi)模式發(fā)生改變時,如存儲設(shè)備或存儲方法發(fā)生改變,由DBA對概念模式/內(nèi)模式映象作相應(yīng)改變,使概念模式盡可能保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨立性,簡稱數(shù)據(jù)的物理獨立性。2. 數(shù)據(jù)庫系統(tǒng)總體結(jié)構(gòu)圖數(shù)據(jù)庫設(shè)計部分結(jié)合三級模式講透。案例教學(xué):以教學(xué)管理系統(tǒng)為例。教學(xué)管理系統(tǒng)面向教務(wù)管理員、教師、學(xué)生、教學(xué)管理領(lǐng)導(dǎo)。在此引出視圖的概念 3. 數(shù)據(jù)庫系統(tǒng)的主要特點數(shù)據(jù)結(jié)構(gòu)化可控數(shù)據(jù)冗余數(shù)據(jù)共享性好多種應(yīng)用、多種語言共享數(shù)據(jù)獨立性高集中統(tǒng)一控制數(shù)據(jù)的安全性控制數(shù)據(jù)的完整性控制并發(fā)控制 四、數(shù)據(jù)庫管理系統(tǒng)什么是數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的功能數(shù)據(jù)

12、庫管理系統(tǒng)的組成數(shù)據(jù)庫語言 1.什么是數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System)簡稱為DBMS。是一種負責(zé)數(shù)據(jù)庫定義、建立、操作、管理和維護的系統(tǒng)軟件。它的作用既類似于命令解釋器,把用戶對數(shù)據(jù)庫的操作命令轉(zhuǎn)換為對系統(tǒng)存儲文件的操作;又類似于一個向?qū)В延脩魧?shù)據(jù)庫的一次訪問,從用戶級帶到概念級,再導(dǎo)向物理級。 2. DBMS的功能數(shù)據(jù)庫的定義數(shù)據(jù)庫的建立數(shù)據(jù)庫的操作數(shù)據(jù)庫的控制數(shù)據(jù)庫的維護與故障恢復(fù)數(shù)據(jù)通信。 3. 數(shù)據(jù)庫管理系統(tǒng)的組成從程序的角度看,數(shù)據(jù)庫管理系統(tǒng)是一組程序的集合體,按程序的功能可分為如下三類。3.1 語言處理程序3.2 運行控制程序

13、3.3 服務(wù)性程序 3.1 語言處理程序向用戶提供數(shù)據(jù)庫的定義、操作等功能。由以下編譯程序或解釋程序組成:數(shù)據(jù)庫各級模式的語言處理程序。其作用是將各級源模式編譯成各級目標(biāo)模式。數(shù)據(jù)庫操作編譯處理程序。即將應(yīng)用程序中DML語句轉(zhuǎn)換成主語言編譯程序能處理的形式,實現(xiàn)預(yù)編譯。查詢語言解釋程序。處理終端查詢語句,并決定其操作的執(zhí)行過程。數(shù)據(jù)庫控制語言解釋程序。解釋每個數(shù)據(jù)庫控制命令的含義,決定操作的執(zhí)行過程。 3.2 運行控制程序負責(zé)數(shù)據(jù)庫運行時的管理、調(diào)度和控制。由以下程序模塊組成:系統(tǒng)總控程序。它是整個DBMS的核心,負責(zé)控制、協(xié)調(diào)DBMS各個程序的活動,保證系統(tǒng)有條不紊地工作。訪問控制程序。其內(nèi)

14、容包括核對用戶、口令,核對授權(quán)和密碼,檢驗訪問的合法性,以決定一個訪問是否能進入數(shù)據(jù)庫;并發(fā)控制程序。在多個用戶同時訪問數(shù)據(jù)庫時,通過管理訪問隊列和封鎖表,以及封鎖的建立和撤消等工作,協(xié)調(diào)各個用戶的訪問,以避免造成數(shù)據(jù)修改和丟失等不正?,F(xiàn)象,從而保證各應(yīng)用程序讀寫數(shù)據(jù)的正確性;保密控制程序。在執(zhí)行操作之前,核對保密規(guī)定。即數(shù)據(jù)加密約定。數(shù)據(jù)的完整性控制程序。在執(zhí)行用戶請求的每次操作前或后,核對數(shù)據(jù)的完整性約束條件,從而決定是否允許操作執(zhí)行。數(shù)據(jù)存取程序。執(zhí)行數(shù)據(jù)存取操作,是DBMS與文件系統(tǒng)的接口。把用戶對數(shù)據(jù)庫的訪問請求轉(zhuǎn)換為相應(yīng)的文件存取命令,通過文件系統(tǒng)從相應(yīng)的物理文件中讀出數(shù)據(jù),或向相

15、應(yīng)的物理文件寫入數(shù)據(jù)。數(shù)據(jù)更新程序。執(zhí)行數(shù)據(jù)庫中數(shù)據(jù)的插入、刪除和修改操作,并負責(zé)修改相應(yīng)的指針。通信控制程序。實現(xiàn)用戶程序與DBMS之間的通信。 3.3 服務(wù)性程序提供數(shù)據(jù)庫中數(shù)據(jù)的裝入和維護等服務(wù)性功能,由以下一些程序模塊組成:數(shù)據(jù)庫裝入程序 該程序?qū)⒊跏紨?shù)據(jù)裝入數(shù)據(jù)庫中。 運行日志程序 該程序記載對數(shù)據(jù)庫的所有訪問,包括用戶名、進入時間、操作方式、操作對象、數(shù)據(jù)修改前的值和數(shù)據(jù)修改后的值等。 重組織程序 當(dāng)數(shù)據(jù)庫性能變壞時,需要重新組織數(shù)據(jù)庫,該程序可按原組織方法重新裝入數(shù)據(jù)或采用新方法、新結(jié)構(gòu)重新組織數(shù)據(jù)。 數(shù)據(jù)庫恢復(fù)程序 當(dāng)數(shù)據(jù)庫系統(tǒng)遭到破壞時,數(shù)據(jù)庫系統(tǒng)恢復(fù)程序可將系統(tǒng)恢復(fù)到可用狀

16、態(tài)。性能監(jiān)控程序 該程序監(jiān)督用戶操作的執(zhí)行時間與數(shù)據(jù)存儲空間的占用情況,估算系統(tǒng)性能,以決定數(shù)據(jù)庫是否需要重新組織。 轉(zhuǎn)貯程序編輯和打印程序4. 數(shù)據(jù)庫語言數(shù)據(jù)庫管理系統(tǒng)是用戶與數(shù)據(jù)庫之間的接口。一個數(shù)據(jù)庫管理系統(tǒng)必須為用戶提供某種工具完成下列工作:建立自己的數(shù)據(jù)庫,對數(shù)據(jù)庫進行各種操作。這個工具就是數(shù)據(jù)庫語言。數(shù)據(jù)庫語言包括數(shù)據(jù)描述語言、數(shù)據(jù)操作語言、數(shù)據(jù)庫管理例行程序三大部分。最常用的數(shù)據(jù)庫語言就是SQL語言。 4.1 數(shù)據(jù)描述語言Data Description Language,負責(zé)描述和定義數(shù)據(jù)的各種特性。這些特性包括數(shù)據(jù)的結(jié)構(gòu)、數(shù)據(jù)之間的關(guān)系、數(shù)據(jù)的完整性約束等。這些描述和定義被存

17、儲在數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)字典中。數(shù)據(jù)字典(Data Dictionary, DD) 是數(shù)據(jù)庫管理系統(tǒng)中的一個特殊文件,用于存儲數(shù)據(jù)庫的一些說明信息,這些說明信息稱為元數(shù)據(jù)(Meta Data)。參見P20.SQL語言中的Create Table,Create View,Create Database,alter database,Drop table,Alter table等都是數(shù)據(jù)描述語言。 4.2 數(shù)據(jù)操作語言Data Manipulation Language,是用戶操作數(shù)據(jù)庫中數(shù)據(jù)的工具。一般包括以下幾方面的操作:從數(shù)據(jù)庫中檢索滿足條件的數(shù)據(jù);把新的數(shù)據(jù)記錄插入到數(shù)據(jù)庫中去;從數(shù)據(jù)庫

18、中刪除某些過時的、沒有保留價值的原有數(shù)據(jù); 修改某些已經(jīng)發(fā)生了變化的數(shù)據(jù)項值,使之能確切反映變化后的情況。如,Select, Insert, Delete,Update等。按使用方式可將數(shù)據(jù)操作語言分為宿主式操作語言和自主式操作語言。宿主式操作語言也稱為嵌入式操作語言。4.3 數(shù)據(jù)庫管理例行程序存取控制例行程序安全性控制例行程序完整性控制例行程序事務(wù)管理例行程序恢復(fù)例行程序監(jiān)控例行程序 五、數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)概述兩種模式C/S模式B/S模式組件與分布式對象技術(shù)組件技術(shù)分布式對象技術(shù) 1. C/S模式是一種分布式的計算模式。C/S模式通過網(wǎng)絡(luò)環(huán)境,將應(yīng)用劃分為“前端”和“后臺”。前端由客戶機擔(dān)任

19、GUI(Graphic User Interface)處理以及向服務(wù)器發(fā)送用戶請求和接收服務(wù)器回送的處理結(jié)果;后端為服務(wù)器,主要承擔(dān)數(shù)據(jù)庫的管理,按用戶請求進行數(shù)據(jù)處理并回送結(jié)果等工作。 兩層C/S結(jié)構(gòu)網(wǎng)絡(luò)為局域網(wǎng),表示層和功能層揉在一起的,邏輯上沒有分開,只是將數(shù)據(jù)層分開。 三層C/S結(jié)構(gòu)表示層、功能 層、數(shù)據(jù)層。表示層表示層是應(yīng)用的用戶接口部分,它擔(dān)負著用戶與應(yīng)用間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進行操作,一般要使用圖形用戶接口(GUI),操作簡單、易學(xué)易用。在變更用戶接口時,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內(nèi)容也只

20、限于數(shù)據(jù)的形式和值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。在這層的程序開發(fā)中主要是使用可視化編程工具。 功能層功能層相當(dāng)于應(yīng)用的本體,它將具體的業(yè)務(wù)處理邏輯編入程序中。例如,在制作訂購合同時要計算合同金額,按照定好的格式配置數(shù)據(jù)、打印訂購合同,而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交換要盡可能簡潔。例如,用戶檢索數(shù)據(jù)時,要設(shè)法將有關(guān)檢索要求的信息一次傳送給功能層,而由功能層處理過的檢索結(jié)果數(shù)據(jù)也一次傳送給表示層。在應(yīng)用設(shè)計中,一定要避免進行一次業(yè)務(wù)處理,在表示層和功能層間進行多幾次數(shù)據(jù)交換的笨拙設(shè)計。這層的程序多半是用可視化編程工具開發(fā)的,也有使用C語言的。數(shù)據(jù)層數(shù)據(jù)

21、層就是DBMS,負責(zé)管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。DBMS必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索?,F(xiàn)在的主流是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。因此,一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。 三層C/S的優(yōu)點:具有靈活的硬件系統(tǒng)構(gòu)成提高程序的可維護性 利于變更和維護應(yīng)用技術(shù)規(guī)范 進行嚴(yán)密的安全管理 2. B/S模式(多層)3. 組件技術(shù)組件(Component),是指具有某種功能的獨立軟件單元,其最重要的特性是可復(fù)用性。組件模型由組件和容器構(gòu)成。組件通過接口向外界提供功能入口。組件的范圍很廣,小到一個按鈕,大到一個系統(tǒng),如瀏覽器。容器(Container),是一種存放相關(guān)組件的“器皿”。如表單

22、(Form)、頁面(Page)、框架(Frame)等。組件技術(shù)應(yīng)解決兩個問題:復(fù)用和互操作。常見的組件規(guī)范有:VBX、OCX、ActiveX。VBX、OCX、ActiveX都是由微軟推出的 4. 分布式對象技術(shù)組件向分布式環(huán)境延伸,形成了分布式對象技術(shù)。利用分布式對象技術(shù),可以實現(xiàn)異構(gòu)平臺間分布式對象間的相互通信,極大地提高系統(tǒng)的可擴展性。組件技術(shù)與分布式技術(shù)用得較廣泛的模型有:CORBA、COM/DCOM/COM+、JavaBeans/EJB/J2EE。參見P32-33。 六、數(shù)據(jù)庫技術(shù)的發(fā)展第一代數(shù)據(jù)庫系統(tǒng)第二代數(shù)據(jù)庫系統(tǒng)OLTP與OLAP數(shù)據(jù)倉庫與數(shù)據(jù)挖掘并行與分布式數(shù)據(jù)庫系統(tǒng)Inter

23、net/Web數(shù)據(jù)庫面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng) 1. 第一代數(shù)據(jù)庫系統(tǒng)以層次數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫管理系統(tǒng)的出現(xiàn)為標(biāo)志,其典型代表分別是IMS和DBTG系統(tǒng)。層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫均支持三級模式的體系結(jié)構(gòu),均用存取路徑表示數(shù)據(jù)間的聯(lián)系,都有數(shù)據(jù)定義語言和導(dǎo)航式的數(shù)據(jù)操縱語言。對這兩種數(shù)據(jù)庫的應(yīng)用要求:一是要熟悉數(shù)據(jù)庫的各種路徑,二是有較高的應(yīng)用數(shù)據(jù)庫的編程技巧。層次型和網(wǎng)狀型均缺少相應(yīng)的數(shù)學(xué)理論基礎(chǔ)。 2. 第二代數(shù)據(jù)庫系統(tǒng)支持關(guān)系數(shù)據(jù)模型的關(guān)系數(shù)據(jù)庫系統(tǒng)是第二代數(shù)據(jù)庫系統(tǒng)。關(guān)系模型既簡單,又有堅實的數(shù)學(xué)基礎(chǔ)。 3. OLTP與OLAPOLTP(Online Transaction Proces

24、sing)即聯(lián)機事務(wù)處理。是一種數(shù)據(jù)庫應(yīng)用技術(shù)。如民航的訂票系統(tǒng)、銀行儲蓄系統(tǒng)、證券交易系統(tǒng)等均屬于OLTP的應(yīng)用。OLAP(Online Analysis Processing)即聯(lián)機分析處理。也是一種數(shù)據(jù)庫應(yīng)用技術(shù),1993年由E.F.Codd提出。OLAP著重于“數(shù)據(jù)分析”,而OLTP著重于“數(shù)據(jù)管理”。OLAP的典型應(yīng)用就是決策支持系統(tǒng)(DSS)。 4. 數(shù)據(jù)倉庫與數(shù)據(jù)挖掘數(shù)據(jù)倉庫(Data Warehouse)的概念由W.H.Inmon于1991年提出,其給出的定義為:數(shù)據(jù)倉庫是面向主題的、集成的、穩(wěn)定的、不同時間的數(shù)據(jù)集合,用以支持經(jīng)營管理中決策制定過程。Sybase: Indus

25、try Warehouse Studio 3.2IBM: Visual Warehouse OLAPOracle: Oracle Warehouse BuilderMicrosoft: SQL Server OLAP Service數(shù)據(jù)挖掘(Data Mining)是在大量的、不完整的、有噪聲的數(shù)據(jù)中發(fā)現(xiàn)潛在的、有價值的模式和數(shù)據(jù)間關(guān)系的過程。數(shù)據(jù)挖掘技術(shù)有:判斷法、決策樹、人工神經(jīng)網(wǎng)絡(luò)、遺傳算法、模糊技術(shù)、粗集方法、可視化技術(shù)等。5. 并行與分布式數(shù)據(jù)庫系統(tǒng)并行數(shù)據(jù)庫系統(tǒng)即將傳統(tǒng)的數(shù)據(jù)庫管理技術(shù)與并行處理技術(shù)相結(jié)合形成的數(shù)據(jù)庫系統(tǒng)。其特點是由多處理機及多個磁盤構(gòu)成,數(shù)據(jù)庫系統(tǒng)的吞吐量大大提高

26、,事務(wù)響應(yīng)時間大大縮短。分布式數(shù)據(jù)庫系統(tǒng),目前沒有統(tǒng)一的定義,多種理解參見P45。具有如下特點:數(shù)據(jù)的物理分散性;數(shù)據(jù)的邏輯整體性;數(shù)據(jù)分布的獨立性;站點自治與協(xié)調(diào);數(shù)據(jù)的冗余與冗余透明性。 6.Internet/Web數(shù)據(jù)庫Internet/Web數(shù)據(jù)庫,其實質(zhì)是在傳統(tǒng)的關(guān)系數(shù)據(jù)庫技術(shù)基礎(chǔ)上,對數(shù)據(jù)庫模型、存儲機制和檢索技術(shù)等方面進行改進,而構(gòu)造出基于Internet/Web應(yīng)用的數(shù)據(jù)庫系統(tǒng)。Internet/Web數(shù)據(jù)庫的主要特征:采用多維處理、變長存儲以及面向?qū)ο蟮刃录夹g(shù),使數(shù)據(jù)庫應(yīng)用轉(zhuǎn)為全面基于Internet的應(yīng)用。 7. 面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)(OODBS),即以

27、面向?qū)ο蟮某绦蛟O(shè)計語言為基礎(chǔ),引入數(shù)據(jù)庫技術(shù),來建立的新一代的數(shù)據(jù)庫系統(tǒng)。OODBS概念是1989年以英國Glasgow大學(xué)的Atkinson為首的6名學(xué)者首先提出的。1990年,以美國Berkeley大學(xué)Stonebraker為首的DBMS功能委員會提出以關(guān)系數(shù)據(jù)庫系統(tǒng)為基礎(chǔ),建立對象關(guān)系數(shù)據(jù)庫系統(tǒng)(ORDBS)。有人把ORDBS歸為第三代數(shù)據(jù)庫系統(tǒng),而把OODBS歸為第四代數(shù)據(jù)庫系統(tǒng)。第二章 實體聯(lián)系數(shù)據(jù)模型 一、數(shù)據(jù)模型綜述1.為什么需要數(shù)據(jù)模型?由于數(shù)據(jù)的定義與操作從應(yīng)用程序中剝離出來,交由DBMS來定義和管理。于是DBMS需要采用某種數(shù)據(jù)結(jié)構(gòu)來定義、存儲所要管理的數(shù)據(jù)。狹義上講,這種

28、數(shù)據(jù)結(jié)構(gòu)就是DBMS的數(shù)據(jù)模型。另一方面,現(xiàn)實系統(tǒng)要向計算機化的管理轉(zhuǎn)變,因此,在數(shù)據(jù)庫設(shè)計時,也必須用某種方式將其所關(guān)心、管理的數(shù)據(jù)抽取出來并組織起來,數(shù)據(jù)模型也正是起到這種作用。技術(shù)上的要求和應(yīng)用要求數(shù)據(jù)的靜態(tài)結(jié)構(gòu)。數(shù)據(jù)的動態(tài)操作(增刪改查詢)。數(shù)據(jù)的完整性約束。綜合說來,應(yīng)描述數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)語義及完整性限制,同時還需要提供對數(shù)據(jù)操作的方法。2. 如何描述數(shù)據(jù)模型?用數(shù)據(jù)模型的三要素 3.如何評價數(shù)據(jù)模型?真實地描述現(xiàn)實系統(tǒng)?;疽笠子跒橐话阌脩羲斫?。易于計算機實現(xiàn)。 4.數(shù)據(jù)模型為什么有層次性?從數(shù)據(jù)抽象的過程看。數(shù)據(jù)模型是數(shù)據(jù)庫設(shè)計時數(shù)據(jù)抽象的工具,由于抽象層次的存在,

29、相應(yīng)地,數(shù)據(jù)模型也會有層次。從評價指標(biāo)(第二、三項)的互斥性看。目前已被商用化DBMS支持的數(shù)據(jù)模型中,沒有一個能同時滿足上述三項要求。也就是說無法在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)時,從設(shè)計到實現(xiàn)只使用一個數(shù)據(jù)模型。 5.數(shù)據(jù)模型的未來有兩個發(fā)展方向:設(shè)計、開發(fā)與實現(xiàn)的一統(tǒng)數(shù)據(jù)模型。如面向?qū)ο竽P??!皩哟喂泊?,自動轉(zhuǎn)換”。即設(shè)計用的數(shù)據(jù)模型到數(shù)據(jù)庫管理系統(tǒng)所用的數(shù)據(jù)模型之間的相互轉(zhuǎn)換由計算機輔助完成。如實現(xiàn)ERM向關(guān)系模型相互轉(zhuǎn)換的工具有:Sybase公司的Power Designer、CA公司的ERwin等;實現(xiàn)對象模型向關(guān)系模型轉(zhuǎn)換的工具有:Rational公司的Rose。 6.ERM的地位與作用?傳

30、統(tǒng)三種數(shù)據(jù)模型的特點:能較好地滿足第一和第三項評價要求。三種數(shù)據(jù)模型的不足:不易被業(yè)務(wù)用戶理解。這是提出語義數(shù)據(jù)模型(Semantic Data Model)的基礎(chǔ)。 實體聯(lián)系模型(Entity Relationship Model, ERM)是用得最多且最成熟的語義數(shù)據(jù)模型。屬于數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計的內(nèi)容。 從數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計角度看,ER模型主要用于DB概念設(shè)計,是DB概念設(shè)計較常用的設(shè)計工具。 二、數(shù)據(jù)庫設(shè)計綜述數(shù)據(jù)庫設(shè)計一般分為如下步驟:需求分析概念數(shù)據(jù)庫設(shè)計邏輯數(shù)據(jù)庫設(shè)計模式優(yōu)化物理數(shù)據(jù)庫設(shè)計安全設(shè)計 三、實體聯(lián)系模型實體、實體集及屬性聯(lián)系及聯(lián)系集ERM中的完整性約束弱實體ERM各元素

31、圖示 1. 實體、實體型及屬性1.1 實體、實體型實體(Entity):現(xiàn)實世界中有別于其他對象的對象。對象可以是具體的,也可以是抽象的。具體的實體如某某學(xué)生、某某老師等;而抽象的實體如某門課程、某份合同等。實體型(Entity Set):同類實體的集合。通常情況下簡稱為實體。如學(xué)生、教師、課程、合同。實體是指具體的個體,而實體型是對有共同特性的實體進行歸類。實體用矩形來表示。學(xué)生 1.2 屬性屬性(Attribute):是指實體的特征或性質(zhì),即實體用屬性描述。如學(xué)生實體的屬性有:學(xué)號、姓名、生日、年齡、性別、住址等。屬性按結(jié)構(gòu)分:簡單屬性、復(fù)合屬性和子屬性。簡單屬性表示屬性不可再分;復(fù)合屬性

32、表示該屬性還可再分為子屬性。如姓名可分為現(xiàn)用名、曾用名、英文名等。實體用屬性描述,實體集中的所有實體具有相同的屬性。屬性用橢圓框表示。 1.3 域域(Domain):指屬性的取值范圍。屬性按取值分,有單值屬性,多值屬性、導(dǎo)出屬性和空值屬性。只有一個取值的屬性稱為單值屬性;多于一個取值的屬性為多值屬性;值不確定或還沒有值的屬性稱為空值屬性;其值可由另一個屬性的取值推導(dǎo)出來的屬性為導(dǎo)出屬性。多值屬性如學(xué)位,一個人可能獲得多個學(xué)位;導(dǎo)出屬性如年齡,可由生日導(dǎo)出;空值屬性如學(xué)位,當(dāng)還沒有獲得學(xué)位時,其值不定。1.4 鍵鍵(Key):能惟一標(biāo)識實體的一個或一組屬性。如學(xué)號、課程號等。按鍵所包含的屬性個數(shù)

33、分:簡單鍵和復(fù)合鍵。由一個屬性構(gòu)成的鍵稱為簡單鍵;由多個屬性構(gòu)成的鍵稱為復(fù)合鍵。候選鍵(Candidate Key):最小屬性集合的鍵。主鍵(Primary Key):當(dāng)存在多個候選鍵時,需選定其中一個作為主鍵,將其作為描述實體的惟一標(biāo)識。鍵用屬性名加下劃線表示。 學(xué)號最小屬性集合,意即在該集合中沒有一個屬性是多余的。如學(xué)生實體,其屬性有:學(xué)號,姓名,性別,年齡等,在這些屬性中,學(xué)號可惟一確定各個不同的實體,根據(jù)鍵的定義,學(xué)號是鍵;同樣,學(xué)號與姓名的集合也可以惟一確定各個不同的實體,(學(xué)號,姓名)也是鍵,但它不是候選鍵,因為在這個鍵的集合中,姓名是多余的。進而可以得出結(jié)論:單屬性的鍵一定是候選

34、鍵,多屬性構(gòu)成的鍵有可能不是候選鍵。 2. 聯(lián)系及聯(lián)系型2.1 聯(lián)系及聯(lián)系集聯(lián)系聯(lián)系(Relationship):是兩個或多個實體間的關(guān)聯(lián)。如“張三”選修“C語言”,此聯(lián)系用“成績”屬性來描述。 2.1 聯(lián)系及聯(lián)系型(續(xù))聯(lián)系型聯(lián)系型(Relationship Set):相似的一組聯(lián)系稱為聯(lián)系型。因此聯(lián)系型就是實體型與實體型之間的聯(lián)系。通常簡稱為聯(lián)系。聯(lián)系型的階:一個聯(lián)系型所關(guān)聯(lián)的實體型的數(shù)量n,稱為聯(lián)系型的階。即稱為n元聯(lián)系。如“學(xué)生”與“課程”兩個實體型通過“選課”關(guān)聯(lián),此聯(lián)系稱為二元聯(lián)系。如“商品”、“客戶”、“售貨員”三個實體型通過“門市另售”相關(guān)聯(lián),此聯(lián)系稱為三元聯(lián)系。見圖2-2。

35、2.2 聯(lián)系型存在的幾種情況聯(lián)系用棱型框表示。聯(lián)系型存在的4種情況二元聯(lián)系(Binary Relationship):三元聯(lián)系(Ternary Relationship):兩個實體型間存在多個不同的聯(lián)系:如“員工”和“部門”兩個實體之間既存在“工作”關(guān)系,又存在“管理”關(guān)系。遞歸聯(lián)系(Recursive Relationship):同一個實體型中的兩個實體之間存在的關(guān)聯(lián)。如“員工”實體型中的兩個具體的人之間存在的“領(lǐng)導(dǎo)”與“被領(lǐng)導(dǎo)”關(guān)系。 歸納上面所介紹的是關(guān)于實體聯(lián)系模型的數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。它是利用“實體”來描述現(xiàn)實世界中的客觀事物,實體又由“屬性”來描述,并用主鍵來惟一標(biāo)識;用“聯(lián)系”來描述

36、事物之間的關(guān)聯(lián),聯(lián)系也可有其屬性描述,聯(lián)系由所參與實體的主鍵共同惟一標(biāo)識。實體聯(lián)系模型縮寫為ERM。 3. ERM中的完整性約束3.1 一般性約束根據(jù)關(guān)聯(lián)的實體參與到聯(lián)系中數(shù)量間的約束,聯(lián)系型可分為:一對一(1:1)聯(lián)系一對多(1:n)聯(lián)系多對多(m:n)聯(lián)系 聯(lián)系型分類定義定義 設(shè)聯(lián)系型R關(guān)聯(lián)實體型A和B,如果A中的一個實體只與B中的一個實體關(guān)聯(lián),反過來,B中的一個實體也只與A中的一個實體關(guān)聯(lián),則稱R是一對一聯(lián)系型;如果A中的一個實體與B中的n個實體關(guān)聯(lián),反過來,B中的一個實體只與A中的一個實體關(guān)聯(lián),則稱R是一對多聯(lián)系型;如果A中的一個實體與B中的n個實體關(guān)聯(lián),反過來,B中的一個實體又與A中

37、的m個實體關(guān)聯(lián),則稱R是多對多聯(lián)系型。3.2 鍵約束鍵約束(Key Constraint)是指在一個聯(lián)系型R中,實體型A中的一個實體,對應(yīng)在實體型B中只能找到一個相關(guān)聯(lián)的實體;或?qū)嶓w型B中的一個實體,對應(yīng)在實體型A中只能找到一個相關(guān)聯(lián)的實體。鍵約束的作用鍵約束對于聯(lián)系型主鍵的確定有重要的作用。對于1:1聯(lián)系,其主鍵就可取關(guān)聯(lián)的任一實體的主鍵獨立擔(dān)當(dāng);對于1:n聯(lián)系,其主鍵只需由n方實體的主鍵擔(dān)當(dāng);對于m:n聯(lián)系,其主鍵必須由關(guān)聯(lián)的所有實體的主鍵擔(dān)當(dāng)。 3.3 參與約束參與約束(Participation Constraint)是實體與聯(lián)系之間的約束,也稱為實體關(guān)聯(lián)約束。參與約束分為完全參與(T

38、otal Participation)約束和部分參與(Partial Participation)約束。完全參與約束表示與聯(lián)系關(guān)聯(lián)的某個實體型中的所有實體,全部參與到聯(lián)系中來。如“學(xué)生”實體型與“選課”聯(lián)系型,所有的學(xué)生實體都會參與“選課”聯(lián)系。部分參與約束則表示與聯(lián)系關(guān)聯(lián)的某個實體型,只有部分實體參與到聯(lián)系中來。如“員工”實體型與“管理”聯(lián)系,只有部分員工參與管理。完全參與約束圖示時,用粗線表示。參見P63圖2-14。 4. 弱實體弱實體是指管理主體之外的實體型。也稱為外部實體。如,員工是企業(yè)管理的主體之一,然而企業(yè)為員工辦理保險時,不可避免地會涉及保險的受益人,受益人一般不是企業(yè)的員工,“

39、受益人”則稱為弱實體。識別實體:與弱實體型關(guān)聯(lián)的實體型,稱為識別實體型。如“員工”實體型。識別聯(lián)系:實體型與弱實體型之間的聯(lián)系稱為識別聯(lián)系。 對弱實體有如下約束:識別實體與弱實體之間的聯(lián)系必須是1:n聯(lián)系;弱實體必須完全參與識別聯(lián)系。弱實體和識別聯(lián)系用粗線條表示。 5. ERM各元素圖示四、應(yīng)用實例經(jīng)調(diào)研,了解到如下數(shù)據(jù)信息:某公司有多個原材料庫房,每個庫房分布在不同的地方,每個庫房有不同的編號,公司對這些庫房進行統(tǒng)一管理;每個庫房可以存放多種不同的原材料,為了便于管理,各種原材料分類存放,同一種原材料集中存放在同一個庫房里;每一個庫房可安排一名或多名員工管理庫房,在這些庫房里,每一個管理員有

40、且僅有一名員工是他的直接領(lǐng)導(dǎo);應(yīng)用實例同一種原材料可以供應(yīng)多個不同的工程項目,同一個工程項目要使用多種不同的原材料;同一種原材料可由多個不同的廠家生產(chǎn),同一個生產(chǎn)廠家可生產(chǎn)多種不同的原材料。從第4點了解到:工程項目實體編號,預(yù)算資金,開工日期,竣工日期;原材料與工程項目之間的供應(yīng)聯(lián)系為n:m;從第5點了解到:廠家實體編號,名稱,地址,聯(lián)系電話;原材料與廠家之間的供應(yīng)聯(lián)系為n:m。 應(yīng)用實例實體型及屬性庫房實體型:庫房號、地點、庫房面積、庫房類型。員工實體型:員工號、姓名、性別、出生年月、職務(wù)。原材料實體型:材料號、名稱、規(guī)格、單價、說明。工程項目實體型:項目號、預(yù)算資金、開工日期、竣工日期。生

41、產(chǎn)廠家實體型:廠家號、廠家名稱、通信地址、聯(lián)系電話。 應(yīng)用實例聯(lián)系型及屬性工作聯(lián)系型:1:n領(lǐng)導(dǎo)聯(lián)系型:1:n,且是遞歸聯(lián)系。存放聯(lián)系型:m:n,且有“庫存量”屬性。供應(yīng)聯(lián)系型:三元聯(lián)系,且有“供應(yīng)量”屬性。 五、擴展實體聯(lián)系模型擴展實體聯(lián)系模型實質(zhì)上是與面向?qū)ο竽P彤惽ぁ?1. 類層次子類(Subclass)概念:有時,需要將實體型中的實體分成子類。分類后體現(xiàn)為一種層次關(guān)系,最上層為超類(Superclass),下層即為子類。如,小時工和合同工是員工的子類。表示:小時工ISA(is a)員工、合同工ISA員工。ISA為這種類層次的聯(lián)系。子類屬性:除可繼承超類屬性外還可有自己獨特的屬性。小

42、時工合同工 2. 演繹與歸納2.1 演繹概念:演繹是根據(jù)超類來識別子類的處理過程。方法:先定義超類,再由超類來定義子類,然后加入子類的特定屬性,即由“一般”到“特殊”的方法。例如,員工按工作性質(zhì)分,可分為:管理人員(特定屬性為職務(wù)級別)、技術(shù)人員(特定屬性為技術(shù)職稱)、銷售人員(特定屬性為銷售業(yè)績)。 2.2 歸納概念:歸納是指歸納出多個實體型的共同特征,并形成由這些共同特征構(gòu)成的新實體型。方法:先定義子類,再定義超類,即由“特殊”到“一般”,有的教材稱此為“一般化”。例如,通過對博士生、碩士生、本科生、??粕?、預(yù)科生、碩博連讀生、本碩連讀生等子類進行歸納,得出“學(xué)生”這個超類。 2.3 演繹

43、的原則重疊約束(Overlap)重疊約束要求演繹出的子類實體不能有重疊或交叉,又名“正交約束”。它是演繹時應(yīng)遵守的默認(rèn)原則。包容約束(Covering)包容約束要求超類中的每個實體必須屬于某一個子類。也就是說,子類的所有實體,構(gòu)成超類中的所有實體,又名“完全性約束”。包容約束實際上要求在演繹時,要找全所有的子類,不要漏掉某一個子類。 3. 聚集聯(lián)系是指實體間的關(guān)聯(lián)。但有時,在實體和聯(lián)系之間也存在聯(lián)系的情況。這就與聯(lián)系的概念有矛盾。為了解決此問題,引入“聚集”概念。將聯(lián)系以及該聯(lián)系所關(guān)聯(lián)的實體一起,作為一個“高層”實體(或虛實體)來對待,該高層實體即為聚集。然后將高層實體看作一般的實體,與其他的

44、實體一起建立新的聯(lián)系。通過這種抽象處理后,保持了聯(lián)系概念的一致性,即聯(lián)系是實體間的關(guān)聯(lián)。第三章 關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)一、關(guān)系數(shù)據(jù)庫概述關(guān)系數(shù)據(jù)模型,于1970年由E.F.Codd首先提出。關(guān)系模型帶來了數(shù)據(jù)庫領(lǐng)域的革命,它是目前最流行的RDBMS的基礎(chǔ)。在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)通過表來描述的,表既可以描述實體,也可描述聯(lián)系,如學(xué)生表則描述的是學(xué)生實體,成績表則描述的是學(xué)生實體與課程實體之間的聯(lián)系。分三點討論關(guān)系數(shù)據(jù)模型的概念與術(shù)語 關(guān)系數(shù)據(jù)操作 關(guān)系模型的四類完整性約束 1. 關(guān)系數(shù)據(jù)模型的概念與術(shù)語 1.1 元組、屬性和域元組:表中的每一行稱為一個元組,與一個實體對應(yīng),也稱為記錄。屬性:表中每

45、一列稱為一個屬性。每個屬性都有一個屬性名。與實體的屬性對應(yīng),也稱為字段。域:每個屬性所對應(yīng)的值變化范圍叫做屬性的域。1.2 關(guān)系、關(guān)系模式關(guān)系與關(guān)系名:關(guān)系是元組的集合。每個關(guān)系都有一個關(guān)系名,它與實體名相對應(yīng)。若一個關(guān)系由n個屬性構(gòu)成,則稱該關(guān)系為n元關(guān)系。關(guān)系模式:對關(guān)系的描述稱為關(guān)系模式。由關(guān)系名及其所有屬性名的集合構(gòu)成。例如:教師(職工號,姓名,性別,職務(wù),專業(yè))。一個關(guān)系模式可以有多個關(guān)系。如,學(xué)生(學(xué)號,姓名,性別,出生日期,住址,電話),一個大學(xué)就可能有多個學(xué)生表。1.3 關(guān)系模型、關(guān)系數(shù)據(jù)庫關(guān)系模型:是所有的關(guān)系模式的集合。一個關(guān)系模型描述了若干實體及其相互聯(lián)系,反映了對客觀世

46、界一部分的邏輯抽象。關(guān)系數(shù)據(jù)庫:對應(yīng)于一個關(guān)系模型的所有關(guān)系的集合稱為關(guān)系數(shù)據(jù)庫。1.4 關(guān)鍵字在給定的關(guān)系中,能用來唯一地標(biāo)識一個元組的屬性或?qū)傩越M,稱為給定關(guān)系的關(guān)鍵字(Key)。與實體的“鍵”對應(yīng)??晌ㄒ粯?biāo)識關(guān)系中每一個元組的屬性或?qū)傩越M,而又不包含多余的屬性,稱為該關(guān)系的候選關(guān)鍵字(Candidate Key)。與實體的候選鍵對應(yīng)。若一個關(guān)系中有多個候選關(guān)鍵字,則選取其中一個為主關(guān)鍵字(Primary Key)。與實體的主鍵對應(yīng)。在給定的關(guān)系中,經(jīng)常需要根據(jù)某個或某幾個屬性的值,來唯一地存取某個元組,也就是需要用某個或某幾個屬性來唯一地標(biāo)識一個元組,稱這樣的屬性組為給定關(guān)系的關(guān)鍵字。關(guān)

47、鍵字(續(xù))包含在候選關(guān)鍵字中的屬性叫主屬性。主關(guān)鍵字在數(shù)據(jù)庫設(shè)計中是一個很重要的概念,每個關(guān)系都必須選擇一個候選關(guān)鍵字作為主關(guān)鍵字;對任一關(guān)系,主關(guān)鍵字一經(jīng)選定,通常是不能隨意改變的。關(guān)鍵字舉例在關(guān)系模式:學(xué)生(學(xué)號,姓名,性別,出生日期,聯(lián)系電話,家庭住址)中,“學(xué)號”、“姓名”(假設(shè)不存在同名同姓),“聯(lián)系電話”(假定沒有姐妹或兄弟在同一所學(xué)校)等,均為候選關(guān)鍵字;“學(xué)號”、“學(xué)號,姓名”等是關(guān)鍵字;一般選“學(xué)號”為主關(guān)鍵字;“學(xué)號”、“姓名”、“聯(lián)系電話”均為主屬性。結(jié)論從上例中可看出:主關(guān)鍵字一定是候選關(guān)鍵字;候選關(guān)鍵字一定是關(guān)鍵字。反過來不一定成立。1.5 外部關(guān)鍵字設(shè)有兩個關(guān)系R和

48、S,它們的共有屬性X是關(guān)系S的候選關(guān)鍵字或主關(guān)鍵字,但不是關(guān)系R的關(guān)鍵字,則稱X為關(guān)系R的外部關(guān)鍵字或外部碼(External Key)。例如,有兩個關(guān)系:職工(職工號,姓名,性別,年齡,部門號)部門(部門號,部門名)在職工關(guān)系中,“部門號”不是關(guān)鍵字;在部門關(guān)系中,“部門號”是關(guān)鍵字;則稱“部門號”是職工關(guān)系的外部關(guān)鍵字。外部關(guān)鍵字為兩個表之間的聯(lián)系提供了橋梁作用。已隱含X是候選關(guān)鍵字。2. 關(guān)系數(shù)據(jù)操作數(shù)據(jù)查詢對一個關(guān)系內(nèi)的數(shù)據(jù)查詢主要是選擇一些指定的屬性以及選擇滿足某些邏輯條件的元組。而對多個關(guān)系的數(shù)據(jù)查詢可以分解為:先將多個關(guān)系合并成一個關(guān)系,然后再對合并后的關(guān)系進行查詢。因此,對數(shù)據(jù)

49、查詢可以分解為三種基本操作:一個關(guān)系內(nèi)的屬性指定;一個關(guān)系內(nèi)元組的選擇和兩個關(guān)系的合并。數(shù)據(jù)插入,即在關(guān)系中插入一些新的元組。數(shù)據(jù)刪除,在關(guān)系內(nèi)刪除一些元組。數(shù)據(jù)修改,在關(guān)系內(nèi)修改一些元組的內(nèi)容。數(shù)據(jù)修改可以分解成兩個更為基本的操作:先刪除要修改的元組,然后插入修改后的元組。因此上述四種操作,包含的操作方法有五種:關(guān)系的屬性指定、關(guān)系的元組選擇、兩個關(guān)系的合并、關(guān)系中元組的插入和關(guān)系中元組的刪除。3. 關(guān)系模型的四類完整性約束 關(guān)系模型的完整性約束規(guī)則是對關(guān)系的某種約束條件,確保數(shù)據(jù)庫中數(shù)據(jù)的正確性、一致性和有效性,防止錯誤的數(shù)據(jù)進入數(shù)據(jù)庫中造成無效操作。完整性約束分為四類:3.1 域完整性約

50、束域完整性(Domain Integrity)約束要求屬性值必須取自其對應(yīng)的值域;一個屬性值能否為空值由其語義決定。域完整性約束是最基本的約束,不需要顯式定義。域完整性約束可以通過數(shù)據(jù)定義來實現(xiàn),如數(shù)據(jù)類型、數(shù)據(jù)寬度、默認(rèn)值等就能限制域的范圍。3.2 實體完整性約束實體完整性(Entity Integrity)約束的規(guī)則是:主關(guān)鍵字值必須是唯一的,且不能為空值。這一規(guī)則規(guī)定了關(guān)系中不能有重復(fù)的元組,不存在沒有被標(biāo)識的元組。一張表只能有一個主鍵,主鍵一旦設(shè)定,一般不再修改。實體完整性約束(續(xù)1)這一規(guī)則的理論依據(jù)有:一個關(guān)系通常對應(yīng)現(xiàn)實世界的一個實體型;現(xiàn)實世界的實體是可區(qū)分的,即它們具有某種唯

51、一性標(biāo)識;在關(guān)系模型中主關(guān)鍵字作為唯一性標(biāo)識;如果主關(guān)鍵字取空值,說明存在某個不可標(biāo)識的實體,所以主關(guān)鍵字不能取空值。在關(guān)系模型中,實體完整性約束除了主鍵約束外,還提供有唯一約束。唯一約束主要是針對候選鍵的,以保證候選鍵值的完整性。唯一約束要求候選鍵值唯一,有且僅有一個空值。表中的候選鍵可設(shè)定為唯一約束,反過來說,設(shè)定為唯一約束的屬性(組)就是該表的候選鍵。一張表可有多個候選鍵,因此一張表也可有多個唯一約束。3.3 參照完整性約束參照完整性(Referential Integrity)約束又稱為引用完整性。參照完整性約束規(guī)則:設(shè)有兩個關(guān)系R和S,屬性(組)A是S的候選關(guān)鍵字,是R的外部關(guān)鍵字,

52、則對于R中的A的取值只有兩種可能性:取空值。等于S中某個元組的關(guān)鍵字值。參照完整性約束(續(xù)1)例如,前面職工關(guān)系中的部門號只能取兩種值:空值,說明該職工還未明確工作部門;取部門關(guān)系中出現(xiàn)的部門值,說明此職工的部門已確定,不可能分配到一個不存在的部門中去。參照完整性規(guī)則定義了外部關(guān)鍵字與主(候選)關(guān)鍵字的引用規(guī)則,不引用不存在的實體;外部關(guān)鍵字與主(候選)關(guān)鍵字對應(yīng)可實現(xiàn)兩個關(guān)系的關(guān)聯(lián)。參照完整性約束(外鍵約束)在關(guān)系模型中,通過定義外鍵約束或觸發(fā)器來保證參照完整性約束。外鍵所在的表稱為從表;外鍵作為主鍵或候選鍵的表稱為主表。結(jié)論主表 從表 主表中的主鍵值在修改和刪除時,從表中與該表主鍵值相同的

53、外鍵值可級聯(lián)(CASCADE)修改和刪除,或改為空(SET NULL)或默認(rèn)值(SET DEFAULT),或禁止(NO ACTION)主表主鍵值的修改和刪除。從表主表 從表中的外鍵值在插入和修改時,其值應(yīng)參照主表中的主鍵。外鍵約束需要顯式定義,且應(yīng)在從表上定義外鍵約束。參照完整性約束(觸發(fā)器)利用觸發(fā)器也可保證兩表間的數(shù)據(jù)完整性。主表的觸發(fā)器維護主表到從表方向的數(shù)據(jù)完整性,而從表的觸發(fā)器維護從表到主表方向的參照完整性。3.4 用戶自定義完整性約束用戶自定義完整性約束是針對某一具體數(shù)據(jù)的約束條件,由應(yīng)用環(huán)境決定,它反映的是某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。例如,可以給出規(guī)則:退休年齡男

54、60歲,女55歲。學(xué)生借閱圖書不能超過10本等等。域完整性約束規(guī)定了二維表列的取值情況;實體完整性約束規(guī)定了二維表行的取值情況;參照完整性規(guī)定了具有聯(lián)系的兩表間相同屬性的取值情況。用戶自定義完整性約束在關(guān)系模型中,用戶自定義完整性可用檢查約束(CHECK CONSTRAINT)或斷言(ASSERTION)來保證。檢查約束,有時也稱為表約束或表限制,可用來檢查:表中某一列的值是否在某一取值范圍之內(nèi);表中某幾列之間是否滿足指定的條件。二、關(guān)系運算(Relational Operators)1. 關(guān)系的數(shù)學(xué)定義笛卡爾積定義:給定一組任意集合D1,D2,Dn,它們可以包括相同的元素。這n個集合的笛卡爾

55、積為D1D2 Dn=(d1,d2,dn)| di Di, i=1,2,,n)笛卡爾積可以表示為一個二維表,表中的每一行對應(yīng)一個元組,表中的每一列對應(yīng)一個域。關(guān)系的數(shù)學(xué)定義(續(xù) )關(guān)系定義:設(shè)有屬性A1,A2,Ak,它們分別在域D1,D2,Dk中取值,則這些域構(gòu)成的一個笛卡爾乘積空間D=D1D2 Dk中的任一個子集D為一個關(guān)系,記為R。其關(guān)系模式是屬性Ai的有序集合,記為R(A1,A2,Ak)。D中任一個元素稱為R的一個元組。k稱為關(guān)系R的目或元。使用集合論的符號,上述定義可表述為:R=| DD或R=tk| tk DD tk=2. 傳統(tǒng)的關(guān)系運算 合并(Union)求差(Difference)相

56、交(Intersection)乘積(Cartesian Product)進行此四種運算的運算符屬于雙目運算符,或稱二元運算符。說明在傳統(tǒng)的關(guān)系運算中,除乘積外,所有其他運算中參與運算的兩個關(guān)系必須是相容可并的,即它們必須具有相同的元,且一個關(guān)系的第j個屬性與另一個關(guān)系的第j個屬性必須從相同的域中取值(但屬性的名字不必相同)。2.1合并(Union)設(shè)R和S分別為n元關(guān)系,R與S的并為屬于R或?qū)儆赟的元組組成的一個新關(guān)系。記為:RS=t|t Rt SRS具有與R相同的屬性名集合。合并舉例A1A2A3bbcd2323dbdbA1A2A3abceg32256cddffA1A2A3bbcdaeg232

57、3356dbdbcffRSRS2.2 求差(Difference)設(shè)R和S分別為n元關(guān)系,R與S的差為屬于R而不屬于S的元組組成的一個新關(guān)系。記為:R-S= t|t Rt SR-S具有與R相同的屬性名集合。求差舉例A1A2A3bbcd2323dbdbA1A2A3abceg32256cddffA1A2A3bd33bbRSR-S2.3 相交(Intersection)設(shè)R和S分別為n元關(guān)系,R與S的交為屬于R同時屬于S的元組組成的一個新關(guān)系。記為:RS= t|t Rt SRS具有與R相同的屬性名集合。根據(jù)定義, RS=R-(R-S)。因此交運算可以用差運算表示。用圖解釋RS=R-(R-S)的關(guān)系相

58、交舉例A1A2A3bbcd2323dbdbA1A2A3abceg32256cddffA1A2A3bc22ddRSR S2.4 乘積(Cartesian Product)兩個關(guān)系R和S(設(shè)R為k1元關(guān)系,S為k2元關(guān)系)的廣義笛卡爾乘積,是由屬于R的任一元組tk1和屬于S的任一元組tk2連接而成的新元組t所組成的一個新關(guān)系。記為:RS=t|t= tk1 R tk2 SRS為一個k1+k2元的新關(guān)系。前k1個分量為R的一個元組,后k2個分量為S的一個元組;RS有k1k2個元組。乘積舉例A1A2A3bbcd2323dbdbB1B2ab32A1A2A3B1B2bbbbccdd22332233ddbbd

59、dbbabababab32323232RSRS在此引出改名操作。若求S S,如何表示呢?3. 專門的關(guān)系運算 進行投影與選擇運算的運算符稱為單目運算符或稱一元運算符。3.1 投影(Projection)投影運算是從一個現(xiàn)有的關(guān)系中,選取某些屬性(列),并可對這些屬性重新排列,最后從得出的結(jié)果中刪除重復(fù)的行,而得到一個新關(guān)系。若R是一個k元關(guān)系,其元組變量為tk=,那么關(guān)系R在其屬性Aj1,Aj2,Ajn(nk,j1,j2,jn為1k 之間互不相同的整數(shù))上的投影記為:j1,j2,jn(R)=t|t= R投影舉例A1A2A3bbcd2323dbdbA3A2db23R3,2(R)3.2 選擇(Se

60、lection)選擇運算是從一個現(xiàn)有關(guān)系中,選擇滿足一定條件的元組組成一個新的關(guān)系。記為:F(R)=t|t= t R F=True 選擇舉例A1A2A3abcg3226cddf25 3f (S)A1A2A3abceg32256cddffS3.3 連接(join)連接可定義為RS后再作“選擇”操作。它是關(guān)系代數(shù)中使用最頻繁的操作之一。條件連接等連接自然連接外連接3.3.1 條件連接(condition Join)設(shè)R為k1元關(guān)系,S為k2元關(guān)系,A為關(guān)系R的屬性, B為關(guān)系S的屬性,A、B具有相同的域,則兩個關(guān)系R和S的連接,是由屬于R的任一元組變量tk1和屬于S的任一元組變量tk2連接而成,且

溫馨提示

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

評論

0/150

提交評論