![數(shù)據(jù)庫原理部分課件_第1頁](http://file4.renrendoc.com/view/ab0f4c65a62ae27e5ad2d479eefb26fa/ab0f4c65a62ae27e5ad2d479eefb26fa1.gif)
![數(shù)據(jù)庫原理部分課件_第2頁](http://file4.renrendoc.com/view/ab0f4c65a62ae27e5ad2d479eefb26fa/ab0f4c65a62ae27e5ad2d479eefb26fa2.gif)
![數(shù)據(jù)庫原理部分課件_第3頁](http://file4.renrendoc.com/view/ab0f4c65a62ae27e5ad2d479eefb26fa/ab0f4c65a62ae27e5ad2d479eefb26fa3.gif)
![數(shù)據(jù)庫原理部分課件_第4頁](http://file4.renrendoc.com/view/ab0f4c65a62ae27e5ad2d479eefb26fa/ab0f4c65a62ae27e5ad2d479eefb26fa4.gif)
![數(shù)據(jù)庫原理部分課件_第5頁](http://file4.renrendoc.com/view/ab0f4c65a62ae27e5ad2d479eefb26fa/ab0f4c65a62ae27e5ad2d479eefb26fa5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫原理與應(yīng)用吉林師范大學(xué)計算機學(xué)院第一章 緒論 數(shù)據(jù)庫是數(shù)據(jù)管理的工具。數(shù)據(jù)管理經(jīng)歷了從手工管理階段、文件管理階段到數(shù)據(jù)庫管理階段的變遷。 1.1 數(shù)據(jù)庫系統(tǒng)概述 1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng) 一、數(shù)據(jù)庫(Data Base) 存放數(shù)據(jù)的倉庫(顧名思義/不準(zhǔn)確的含義) 信息的載體/表示 盡管數(shù)據(jù)庫技術(shù)已發(fā)展成熟,但還沒有一個普遍接受的、嚴(yán)格的定義。數(shù)據(jù)庫應(yīng)具備的特征/定義:(1)數(shù)據(jù)庫是相互關(guān)聯(lián)的數(shù)據(jù)的集合數(shù)據(jù)庫中的數(shù)據(jù)不是孤立的,數(shù)據(jù)與數(shù)據(jù)之間是相互關(guān)聯(lián)的,在數(shù)據(jù)庫中不僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系。如:學(xué)籍管理學(xué)生、課程兩類數(shù)據(jù)。 (2)
2、用綜合的方法組織數(shù)據(jù) 順序、索引、聚簇Cluster1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng) 例:人事部門有一個職工文件:職工基本情況有關(guān)人事管理的數(shù)據(jù) 教育部門也有一個職工文件:職工基本情況有關(guān)教育培訓(xùn)的數(shù)據(jù) 其中,“職工基本情況”重復(fù)存儲,浪費空間??晒蚕泶鎯︻愃七@樣的共同數(shù)據(jù),以降低數(shù)據(jù)的冗余度。(3)具有較小的數(shù)據(jù)冗余,可供多個用戶共享 低冗余與數(shù)據(jù)共享:在數(shù)據(jù)庫技術(shù)之前,數(shù)據(jù)文件都是獨立的,任何數(shù)據(jù)文件都必須含有滿足某一應(yīng)用的全部數(shù)據(jù)。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)(4)具有較高的數(shù)據(jù)獨立性 數(shù)據(jù)獨立性:(包括物理獨立性、邏輯獨立性。具體見薩師煊等主
3、編數(shù)據(jù)庫系統(tǒng)概論Page11) 指數(shù)據(jù)的組織和存儲方法與應(yīng)用程序互不依賴,彼此獨立的特性。可降低應(yīng)用程序的開發(fā)代價和維護代價。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)在數(shù)據(jù)庫技術(shù)之前,數(shù)據(jù)文件的組織方式和應(yīng)用程序是密切相關(guān)的。數(shù)據(jù)結(jié)構(gòu)改變,相應(yīng)的應(yīng)用程序也必須隨之修改=開發(fā)/維護代價1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)(5)具有安全控制機制,能夠保證數(shù)據(jù)的安全、可靠 數(shù)據(jù)庫要有一套安全機制,以便有效地防止數(shù)據(jù)庫中的數(shù)據(jù)被非法使用/修改;數(shù)據(jù)庫還要有一套備份/恢復(fù)機制,以保證當(dāng)數(shù)據(jù)遭到破壞時將數(shù)據(jù)立刻完全恢復(fù)=繼續(xù)、可靠地運行。(6)允許并發(fā)地使用數(shù)據(jù)庫,能有效、及時
4、地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性一致性:數(shù)據(jù)庫中的數(shù)據(jù)是共享的,并且允許多個用戶同時使用相同的數(shù)據(jù)。這就要求數(shù)據(jù)庫能夠協(xié)議一致,保證各個用戶之間對數(shù)據(jù)的操作不發(fā)生矛盾和沖突。正確性、完整性: 保證數(shù)據(jù)正確的特性數(shù)據(jù)完整性可通過建立一些約束條件保證數(shù)據(jù)庫中的數(shù)據(jù)是正確的。如:學(xué)生年齡20 (2或100則錯誤)1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)二、數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System ,DBMS)上節(jié)提到的數(shù)據(jù)庫的功能/特性不是數(shù)據(jù)庫中的數(shù)據(jù)固有的,是靠管理或支持?jǐn)?shù)據(jù)庫的系統(tǒng)軟件DBMS提供的。DBMS任務(wù):對數(shù)據(jù)資源進行管理,使之能為多個
5、用戶共享。保證數(shù)據(jù)的安全性/可靠性/完整性/一致性/獨立性1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng) 2 數(shù)據(jù)庫操縱功能 完成對數(shù)據(jù)庫中數(shù)據(jù)的操作:插入、刪除、修改; 重新組織數(shù)據(jù)庫的存儲結(jié)構(gòu); 完成對數(shù)據(jù)庫的備份/恢復(fù)等.DBMS功能: 1 數(shù)據(jù)庫定義功能 定義數(shù)據(jù)庫結(jié)構(gòu)和存儲結(jié)構(gòu); 定義數(shù)據(jù)庫中數(shù)據(jù)之間的聯(lián)系; 定義數(shù)據(jù)完整性約束條件和保證完整性的觸發(fā)機制等.3數(shù)據(jù)庫查詢功能以各種方式提供靈活的查詢功能,以便方便使用數(shù)據(jù).4 數(shù)據(jù)庫控制功能完成對數(shù)據(jù)庫的安全性控制/完整性控制/并發(fā)控制5 數(shù)據(jù)庫通信功能在分布式數(shù)據(jù)庫或提供網(wǎng)絡(luò)操
6、作功能的數(shù)據(jù)庫中還必須提供通信功能。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)三、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理員1數(shù)據(jù)庫系統(tǒng) (DataBase System,DBS)基于數(shù)據(jù)庫的計算機應(yīng)用系統(tǒng),包括:以數(shù)據(jù)為主體的數(shù)據(jù)庫管理數(shù)據(jù)庫的系統(tǒng)軟件DBMS支持?jǐn)?shù)據(jù)庫系統(tǒng)的計算機硬件環(huán)境和操作系統(tǒng)環(huán)境管理和使用數(shù)據(jù)庫系統(tǒng)的人,特別是DBA方便使用和管理系統(tǒng)的技術(shù)說明書和使用說明書1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)2數(shù)據(jù)庫管理和數(shù)據(jù)庫管理員 (DataBase Administrator,DBA)從事數(shù)據(jù)庫管理工作的人員,負(fù)責(zé)數(shù)據(jù)
7、庫的全面管理工作(維護、設(shè)計)數(shù)據(jù)庫的使用會改變企事業(yè)單位的管理方式,但因為要把眾多部門或用戶的數(shù)據(jù)放在同一數(shù)據(jù)庫中,會帶來一些問題,如:數(shù)據(jù)沖突;越權(quán)使用數(shù)據(jù);重要數(shù)據(jù)丟失 因此需要管理部門:負(fù)責(zé)和數(shù)據(jù)管理有關(guān)的工作。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)注: DBA工作繁重、重要、關(guān)鍵:除了要掌握一定的數(shù)據(jù)處理、數(shù)據(jù)庫技術(shù)之外,還應(yīng)有處理好人際關(guān)系的素質(zhì)、能力。在一個企事業(yè)中,特別是一個規(guī)模較大的數(shù)據(jù)庫,不能指望一兩個人來完成管理工作,所以DBA常指數(shù)據(jù)庫管理部門。開發(fā)DBS時,一開始就應(yīng)設(shè)置DBA的職位或相應(yīng)的機構(gòu),以明確DBA職責(zé)、權(quán)限。數(shù)據(jù)處理是計算機應(yīng)用領(lǐng)域中最大的一
8、類應(yīng)用用計算機實現(xiàn)數(shù)據(jù)管理經(jīng)歷了三個發(fā)展階段:1 人工管理階段數(shù)據(jù)庫管理的初級階段。在50年代中期以前,計算機采用的是批處理方式,主要用于科學(xué)計算。(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page6)1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展2 文件系統(tǒng)階段(50年代后期60年代中期)特點: 計算機技術(shù)有了很大的發(fā)展,開始廣泛應(yīng)用于信息處理 存儲設(shè)備有了磁盤、磁鼓等可直接存取的設(shè)備 計算機有了操作系統(tǒng),包括文件管理系統(tǒng),用戶可將數(shù) 據(jù)組織成文件體交給系統(tǒng)進行自動管理。 數(shù)據(jù)可長期保存在磁盤等存儲設(shè)備上 程序和數(shù)據(jù)有了一定的獨立性,且文件有多種形式的組 織結(jié)構(gòu):順序、鏈接、索引、直接1.1.2 數(shù)據(jù)管理技術(shù)
9、的產(chǎn)生和發(fā)展缺點:(1)數(shù)據(jù)冗余較大每個文件都是為特定的用途設(shè)計的,同樣數(shù)據(jù)在多個文件中重復(fù)存儲進能提供以文件為單位的數(shù)據(jù)共享。(2)程序和數(shù)據(jù)之間的獨立性較差應(yīng)用程序依賴于文件的存儲結(jié)構(gòu),修改文件存儲結(jié)構(gòu)就要修改程序1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展(3)對數(shù)據(jù)的表示和處理能力較差 文件的結(jié)構(gòu)和操作比較單一,不夠豐富。(4)數(shù)據(jù)不一致 由(1)造成,更新時會造成同一數(shù)據(jù)在不同文件中的不一致。(5)數(shù)據(jù)聯(lián)系弱文件與文件之間是獨立的,文件之間的聯(lián)系必須通過程序來構(gòu)造。 盡管如此,文件系統(tǒng)在數(shù)據(jù)管理技術(shù)的發(fā)展中仍起著很重要的作用。1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生
10、和發(fā)展3.數(shù)據(jù)庫系統(tǒng)階段從60年代后期開始,計算機用于信息處理的規(guī)模越來越大,對數(shù)據(jù)管理的技術(shù)提出了更高的要求,此時開始提出計算機網(wǎng)絡(luò)系統(tǒng)和分布式系統(tǒng),出現(xiàn)了大容量的磁盤,文件系統(tǒng)已不再能勝任多用戶環(huán)境下的數(shù)據(jù)共享和處理。一個新的數(shù)據(jù)庫管理技術(shù)DBMS由此而形成,它對所有用戶數(shù)據(jù)實行統(tǒng)一的、集中的管理、操作和維護。特點:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論13)按照數(shù)據(jù)模型的進展情況,數(shù)據(jù)庫系統(tǒng)的發(fā)展可劃分為三代:第一代:層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng) 主要支持層次和網(wǎng)狀數(shù)據(jù)模型第二代:關(guān)系數(shù)據(jù)庫系統(tǒng) 支持關(guān)系數(shù)據(jù)模型,該模型有嚴(yán)格的理論基礎(chǔ),概念簡單、清晰,易于用戶理解和使用。因此一經(jīng)提出便迅
11、速發(fā)展,成為實力性最強的產(chǎn)品。1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展第三代:新一代數(shù)據(jù)庫系統(tǒng)面向?qū)ο髷?shù)據(jù)庫系統(tǒng) 基于擴展的關(guān)系數(shù)據(jù)模型或面向?qū)ο髷?shù)據(jù)模型的尚未完全成熟的一代數(shù)據(jù)庫系統(tǒng) 。特點:支持包括數(shù)據(jù)、對象和知識的管理 在保持和繼承第二代技術(shù)的基礎(chǔ)上引進新技術(shù)(如OO) 對其他系統(tǒng)開放,具有良好的可移植性、可連結(jié)性、 可擴充性、互操作性。 1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展1.2 數(shù)據(jù)模型 模型對客觀事物、現(xiàn)象、過程或系統(tǒng)的簡化描述 所有的數(shù)據(jù)庫系統(tǒng)都為它所要描述的世界建立了模型: 數(shù)據(jù)建模:描述了組織數(shù)據(jù)的框架結(jié)構(gòu)。 如:樓房住戶-數(shù)據(jù);房間規(guī)格-數(shù)據(jù)模型 數(shù)據(jù)建模最后發(fā)展成為數(shù)據(jù)的存儲
12、方式(數(shù)據(jù)字典 中的定義) 業(yè)務(wù)功能建模:用戶的最終需求。 業(yè)務(wù)功能建模最后發(fā)展成為應(yīng)用程序 產(chǎn)生高效的應(yīng)用程序的前提是良好的數(shù)據(jù)模型。(正如10 平米的房間無法成為會議廳一樣,一個糟糕的數(shù)據(jù)模型也無法產(chǎn)生高質(zhì)量的應(yīng)用。1.2 數(shù)據(jù)模型為什么要建立數(shù)據(jù)模型(Data Model): 象蓋大樓的設(shè)計圖一樣,DM可使所有的 項目參與者都有一個共同的數(shù)據(jù)標(biāo)準(zhǔn) 避免出現(xiàn)問題再解決(邊干便改的方式) 可及早發(fā)現(xiàn)問題 加快應(yīng)用開發(fā)速度 1.2.1 數(shù)據(jù)模型的三要素 1數(shù)據(jù)結(jié)構(gòu) 描述數(shù)據(jù)的靜態(tài)特征,包括對數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù) 建聯(lián)系的描述。 通常按照數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型: 層次結(jié)構(gòu)層次模型 網(wǎng)狀結(jié)構(gòu)網(wǎng)狀模
13、型 關(guān)系結(jié)構(gòu)關(guān)系模型 2數(shù)據(jù)操作 描述數(shù)據(jù)的動態(tài)特征:一組定義在數(shù)據(jù)上的操作( 包括操作的含義、操作符、運算規(guī)則及其語言等) 主要操作:檢索與更新(插入、刪除、修改) 1.2.1 數(shù)據(jù)模型的三要素 33. 數(shù)據(jù)的約束條件 完整性規(guī)則的集合,數(shù)據(jù)庫中的數(shù)據(jù)必須滿足 這組規(guī)則。 約束條件的主要目的是使數(shù)據(jù)庫與它所描述的現(xiàn)實系 統(tǒng)相符合。 設(shè)計時:時數(shù)據(jù)模型正確、真實、有效地反映現(xiàn)實 運行時:保證數(shù)據(jù)庫中的數(shù)據(jù)值真實地體現(xiàn)現(xiàn)實世 界的狀態(tài) 1.2.2常見數(shù)據(jù)模型 根據(jù)數(shù)據(jù)模型應(yīng)用目的不同,數(shù)據(jù)模型有以下幾種: 概念(數(shù)據(jù))模型(Conceptual Data Model) 面向現(xiàn)實世界建模 主要用來
14、描述現(xiàn)實世界的概念化結(jié)構(gòu),與具 體的DBMS無關(guān); - 現(xiàn)實世界的事物經(jīng)過人腦的抽象加工,提取出對用 戶有用的信息,經(jīng)過組織整理加工形成結(jié)余現(xiàn)實世 界和計算機世界之間的中間模型; -CDM只關(guān)心現(xiàn)實世界中的事物、事務(wù)特征、聯(lián)系, 完全沒有與具體及其相關(guān)的任何概念;1.2.2常見數(shù)據(jù)模型 CDM是系統(tǒng)分析員、程序設(shè)計員、維護人員、用戶 之間相互理解的共同語言;- CDM能時數(shù)據(jù)庫的設(shè)計人員在設(shè)計的初始階段擺脫 計算機系統(tǒng)及DBMS的具體技術(shù)問題,集中精力分析 數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系;-概念模型必須轉(zhuǎn)換成邏輯模型,才能在DBMS中實 現(xiàn);-最常用的概念模型是E-R模型1.2.2常見數(shù)據(jù)模型 邏輯(數(shù)
15、據(jù))模型(Logical Data Model) 面向用戶建模 用戶從數(shù)據(jù)庫所看到的數(shù)據(jù)模型; - 是具體的DBMS所支持的數(shù)據(jù)模型(網(wǎng)狀/層次 /關(guān)系/面向?qū)ο螅?-既要面向用戶,也要面向系統(tǒng); -LDM表示數(shù)據(jù)建聯(lián)系的方法 -一般的DBMS支持一種LDM(特殊的DBMS支 持多種LDM)1.2.2常見數(shù)據(jù)模型 物理(數(shù)據(jù))模型(Physical Data Model) 面向具體的DBMS,面向機器 描述數(shù)據(jù)在存儲介質(zhì)上的組織結(jié)構(gòu) - PDM不僅與具體的DBMS有關(guān),還與操作系統(tǒng) 和硬件有關(guān) -每一種邏輯模型在實現(xiàn)時都有其對應(yīng)的物理模型 -PDM加入了概念模型中為考慮的因素:觸發(fā)器、 存儲
16、過程、主鍵、外鍵、索引等 - DBMS為保證其獨立性和可以執(zhí)行,大部分PDM 的實現(xiàn)工作由系統(tǒng)自動完成,而設(shè)計者只設(shè)計索 引、聚簇等特殊結(jié)構(gòu) 1.2.3概念模型 實體-聯(lián)系(Entity-Relationship)概念模型 首先介紹E-R模型中常用的幾個重要概念,利用它們可 構(gòu)造出現(xiàn)實世界的數(shù)據(jù)的抽象描述。 1實體、實體型、實體集 實體(Entity) 客觀存在并能相互區(qū)分的事物 如:人;數(shù)據(jù)庫課程;正是用的計算機;一 場足球賽不能嚴(yán)格地定義實體,正如幾何中“ 點”,“線”一樣。 關(guān)鍵之處:一個實體能和別的實體區(qū)分開。1.2.3概念模型實體型(Entity Type) 用實體名及屬性名集合來抽
17、象刻畫同類實體 實體集(Entity Set) 同型的實體組成的集合。2屬性(Attribute) 指實體所具有的某一方面的特性,一個實體可 由若干個屬性來刻劃。 - 屬性取值在一定的范圍,稱為該屬性的值域/域(Domain) - 唯一標(biāo)識實體的屬性集稱為碼(Key)1.2.3概念模型3聯(lián)系(Relationship) 實體集合間存在的相互關(guān)系 為了建立現(xiàn)實世界的完整模型,常常需要對聯(lián)系 分 類,根據(jù)一個實體集合的實體可以和多少個另一類 實體集合的實體相聯(lián)系,可將聯(lián)系分為如下幾種: (1) 一對一聯(lián)系(1:1) 系系主任 (2) 一對多聯(lián)系(1:n) 班級學(xué)生 (3) 多對多聯(lián)系(m:n) 課
18、程學(xué)生1.2.3概念模型舉例1:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 18) 兩個實體型之間的聯(lián)系(圖1.10) 三個實體型之間的聯(lián)系(圖1.11) 一個實體型之間的聯(lián)系(圖1.12)舉例2:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 20)圖1.14、圖1.15 1.2.3概念模型4 實體-聯(lián)系圖 (1) 確定所有實體集合 用矩形方框表示實體集合,方框內(nèi)標(biāo)明實體集合名稱; (2)選擇實體集應(yīng)包含的屬性用橢圓框表示屬性,通過無向邊連接到實體集。只有一個屬性的實體集可用屬性代替,附加到它參加的聯(lián)系上; (3) 確定實體集之間的聯(lián)系用菱形框表示,框內(nèi)標(biāo)明聯(lián)系的名稱,通過無向邊(或有向邊)連接到參加聯(lián)系的每個
19、實體集合;1.2.3概念模型( 4)確定實體集的關(guān)鍵字 用下劃線在屬性上標(biāo)明關(guān)鍵字的屬性集合;(5)確定聯(lián)系的類型 在用無向邊連接聯(lián)系到實體集時,在邊上注明1或 n(多)來知名聯(lián)系的類型。(在用有向邊連接聯(lián)系到實體集時,讓邊的箭頭指向1的實體集的一方,多對多因為都是多方,故無箭頭) 1.2.4 三種主要的邏輯數(shù)據(jù)模型 上節(jié)討論的概念數(shù)據(jù)模型是“概念上”的,是抽象的,它與具體的數(shù)據(jù)庫管理系統(tǒng)無關(guān)。這節(jié)要討論的數(shù)據(jù)模型將與具體的DBMS有關(guān),與DBMS支持的數(shù)據(jù)和聯(lián)系的表示或存儲有關(guān)。 前面提到過,數(shù)據(jù)庫中不僅要存放數(shù)據(jù)本身,還要存放數(shù)據(jù)間的聯(lián)系,可用不同的方法表示數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系。 把表示數(shù)
20、據(jù)與數(shù)據(jù)之間聯(lián)系的方法稱為邏輯(數(shù)據(jù))模型。1.2.4 三種主要的邏輯數(shù)據(jù)模型 一、 層次模型(Hierarchical Model) 用樹型結(jié)構(gòu)來表示實體之間聯(lián)系的模型。 支持層次模型的典型系統(tǒng)誕生于1970年前后,是IBM 公司的IMS(Information Management System)系統(tǒng)。 1. 層次模型的數(shù)據(jù)結(jié)構(gòu) 層次模型示例(薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 Page22 圖1.17) 舉例: Page231.2.4 三種主要的邏輯數(shù)據(jù)模型2層次模型的數(shù)據(jù)操縱與完整性約束3層次模型的存儲結(jié)構(gòu) 4層次模型的優(yōu)缺點 優(yōu)點:結(jié)構(gòu)簡單 缺點:插入、刪除限制多 1.2.4 三種主要的邏輯
21、數(shù)據(jù)模型 二、網(wǎng)狀模型(Network Model) 典型代表:DBTG(Data Base Task Group)數(shù)據(jù) 庫任務(wù)組 1 網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu) 2 網(wǎng)狀模型的數(shù)據(jù)操縱與完整性約束 3 網(wǎng)狀模型的存儲結(jié)構(gòu) 4網(wǎng)狀模型的優(yōu)缺點 優(yōu)點:更能直接描述世界 缺點:結(jié)構(gòu)復(fù)雜 1.2.4 三種主要的邏輯數(shù)據(jù)模型三、 關(guān)系模型(Relational Model) 1970,IBM,E.F.Codd 關(guān)系模型源于數(shù)學(xué),它把數(shù)據(jù)看成是二維表(關(guān)系) 中的元素。(其嚴(yán)格定義下一章給出) 用關(guān)系表示(不需用指針)實體和實體之間聯(lián)系的模 型稱為關(guān)系模型。 基本術(shù)語:薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page31 舉
22、例見教材 對于用戶,關(guān)系方法應(yīng)該是很簡單的,但RDBMS很 復(fù)雜,因為將大量工作都轉(zhuǎn)嫁給了RDBMS。1.2.4 三種主要的邏輯數(shù)據(jù)模型RDBMS的設(shè)想在層次、網(wǎng)狀數(shù)據(jù)庫誕生的同時產(chǎn)生的,但研制開發(fā)RDBMS卻花費了比人們想象的要長得多的時間。所以成為商品并投入使用比層次、網(wǎng)狀數(shù)據(jù)庫晚了十幾年。但一投入使用就顯示了旺盛的活力,并逐步取代層次、網(wǎng)狀數(shù)據(jù)庫。 1.3 數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu) 1.3.1 數(shù)據(jù)庫系統(tǒng)模式的概念 當(dāng)設(shè)計數(shù)據(jù)庫時,對數(shù)據(jù)庫的結(jié)構(gòu)感興趣; 即模式(Schema):數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié) 構(gòu)和特征的描述 當(dāng)應(yīng)用數(shù)據(jù)庫時,關(guān)心的是數(shù)據(jù)庫中存在的數(shù)據(jù) 實例(Instance)。 數(shù)據(jù)庫中
23、的數(shù)據(jù)經(jīng)常變化,而數(shù)據(jù)庫的結(jié)構(gòu)在一定時 間范圍內(nèi)不會改變。 數(shù)據(jù)庫中結(jié)構(gòu)的定義可以在多個抽象級別進行,形成 多個級別的數(shù)據(jù)庫模式。 1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu) 數(shù)據(jù)庫系統(tǒng)的三級模式不僅可以使數(shù)據(jù)具有獨立性,而且還可以使數(shù)據(jù)達到共享,使同一數(shù)據(jù)滿足更多用戶的不同要求。一、 內(nèi)模式(Internal Schema) 存儲模式 是數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)的內(nèi)部表示,即對數(shù)據(jù)的物 理結(jié)構(gòu)/存儲方式的描述,是低級描述,一般由 DBMS提供的語言或工具完成;1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)要修改存儲數(shù)據(jù)庫的結(jié)構(gòu)(例如,用倒排文件代替多 鏈表),那么僅僅需要把這些修改反映在存儲模式中;通常我們不關(guān)心內(nèi)
24、模式的具體技術(shù)實現(xiàn),而是從一般組 織的觀點(即概念模式)或用戶的觀點(外模式)來討 論數(shù)據(jù)庫的描述。但我們必須意識到基本的內(nèi)模式和存 儲數(shù)據(jù)庫的存在。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)二、 模式(Schema) 邏輯模式 是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述, 是所有用戶的公共數(shù)據(jù)視圖; DBMS提供數(shù)據(jù)定義語言DDL來描述邏輯模式,嚴(yán) 格定義數(shù)據(jù)的名稱、特征、相互關(guān)系、約束等。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)三、 外模式(External Schema) 用戶模式(視圖) 是模式的子集或變形,是與某一應(yīng)用有關(guān)的數(shù)據(jù) 的邏輯表示; 不同用戶需求不同,看待數(shù)據(jù)的方式也可以不同 ,對數(shù)據(jù)
25、保密的要求也可以不同,使用的程序設(shè) 計語言也可以不同,因此不同用戶的外模式的描 述可以使不同的。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)舉例:民航售票系統(tǒng)包括處理航班程序和處理旅客程序。- 程序的使用人員不必知道關(guān)于人事檔案、丟失的行 李、飛行員的航行分配等信息;- 調(diào)度員可能需要知道關(guān)于航班、飛機和人事檔案等 信息(如那些飛行員有資格駕駛747),但不必知道雇員的工資、旅客等信息。所以可以為訂票部門建立一個數(shù)據(jù)庫視圖,為調(diào)度部門建立另一個完全不同的部門。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)Note:視圖處理的數(shù)據(jù)并不實際存儲在數(shù)據(jù)庫中,而僅可以從邏輯數(shù)據(jù)庫中構(gòu)造出來。視圖比(邏輯)模式的抽象級別
26、更高。舉例:“年齡”在人事部門數(shù)據(jù)庫中,但(邏輯)模式重金包含出生年月。當(dāng)用戶希望通過訪問視圖得到年齡時,DBMS翻譯這個要求,在從物理數(shù)據(jù)庫上取出的數(shù)據(jù)完成計算。注:一個數(shù)據(jù)庫只有一個模式,一個內(nèi)模式,但可以有多個外模式。 1.3.3 數(shù)據(jù)庫的二級映象 在三級模式中提供了兩級映象,保證了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立 性,既物理獨立性與邏輯獨立性。 一、 外模式/模式映象 數(shù)據(jù)庫系統(tǒng)投入使用后,可能有必要修改模式(如增加新關(guān)系、屬性、改變類型),這時: 重新定義外模式/模式映象=現(xiàn)存外模式不變=應(yīng)用程序不變 DBA職責(zé)1.3.3 數(shù)據(jù)庫的二級映象二、 模式/內(nèi)模式映象當(dāng)內(nèi)模式發(fā)生變化時:重新定義模式/
27、內(nèi)模式映象=模式保持不變=外模式保持不變=建立在外模式上的應(yīng)用程序保持不變1.5 數(shù)據(jù)庫技術(shù)的研究領(lǐng)域1. 數(shù)據(jù)庫管理系統(tǒng)軟件的開發(fā)2數(shù)據(jù)庫設(shè)計3數(shù)據(jù)庫理論具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論40 第二章 關(guān)系數(shù)據(jù)庫 1關(guān)系操作 查詢操作:選擇/ 投影/ 連接/ 除/ 并/ 交/ 差2.1 關(guān)系模型概述從數(shù)據(jù)模型的三要素加以介紹一、數(shù)據(jù)結(jié)構(gòu) 關(guān)系二、關(guān)系操作增加、刪除、修改 2.1 關(guān)系模型概述元組關(guān)系演算:謂詞變元的基本對象是元組變量 域關(guān)系演算:謂詞變元的基本對象是域變量Note:關(guān)系代數(shù)和關(guān)系演算是抽象的查詢語言,與具體的DBMS中實際語言不一樣,但彼此等價,是從抽象的觀點出發(fā)學(xué)習(xí)數(shù)據(jù)庫查詢
28、的問題。3關(guān)系數(shù)據(jù)語言(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論page47)2關(guān)系操作的表示方法:關(guān)系代數(shù):用對關(guān)系的運算表達查詢要求關(guān)系演算:用謂詞表達查詢要求2.1 關(guān)系模型概述實體完整性 關(guān)系模型必須滿足的完整性約束條件參照完整性三、關(guān)系的完整性約束條件用戶定義的完整性:針對某一具體數(shù)據(jù)庫的約束條件 反映某一具體應(yīng)用所設(shè)計的數(shù)據(jù) 必須滿足的語義要求。(關(guān)系系統(tǒng)自動支持)2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義 2.2.1 關(guān)系一、 基本概念(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論)1 域(Domain)2 笛卡爾積(Cartesian Product) 元組(Tuple) 3 關(guān)系(Relation) 分量
29、(Component) 候選碼 Candidate Key 非碼屬性Non-key attribute 主碼 Primark Key 全碼 All-key 主屬性Prime attribute2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義 二、關(guān)系的三種類型 基本關(guān)系(基本表):實際存在的表,是實際存 儲數(shù)據(jù)的邏輯表示三、 關(guān)系的性質(zhì)(6條,具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P50) 查詢表:查詢結(jié)果對應(yīng)的表 視圖表 :由基本表或其它視圖標(biāo)導(dǎo)出的表, 虛表,不對應(yīng)實際存儲的數(shù)據(jù)2.2.2 關(guān)系模式 值(Value):是型的一個具體賦值 關(guān)系是值 型(Type):對某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說明 關(guān)系模式是型(關(guān)
30、系模式是對關(guān) 系的描述)2.3 關(guān)系的完整性(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P52-55)2.4 關(guān)系代數(shù)(Relational Algebra) 關(guān)系代數(shù)是對關(guān)系運算的總和,關(guān)系運算分兩類:2.4.1 傳統(tǒng)的集合運算 并交差積(按行) 2.4.2 專門的關(guān)系運算 選擇/ 投影/ 連接/ 除(按行、列) 一、 幾個記號和概念 元組,分量 屬性列域,剩余屬性組 元組的連接 象集 關(guān)系運算定義(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P58-64) 第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 關(guān)系代數(shù)和關(guān)系演算是形式化查詢語言,商業(yè)DBMS使用SQL(Structured Query Language)。1974
31、 年由IBM 的San Jose研究室提出,最初叫SEQUEL(Structured English Query Language)關(guān)系數(shù)據(jù)庫系統(tǒng)通過SQL對數(shù)據(jù)庫進行查詢和更新目前有許多不同版本的SQL語言,有兩個不同的主要標(biāo)準(zhǔn):ANSI(American National Standards Institute) 1986ISO(International Standards Organization):SQL-89,SQL-92,SQL 2,正在制定SQL 3 3.1 SQL語言概貌及特點 一、SQL特點1 一體化SQL是一種一體化的語言,它包括了數(shù)據(jù)定義、查詢、 更新、控制四方面功能。
32、可以完成數(shù)據(jù)庫活動中的全部工作以前的非關(guān)系模型的數(shù)據(jù)語言一般包括:內(nèi)模式描述語 言、模式描述語言、外模式描述語言、數(shù)據(jù)操縱語言等 。內(nèi)容多,操作起來不像SQL那樣簡單。3.1 SQL語言概貌及特點2 高度非過程化沒有必要一步步地告訴計算機“如何”去做,只需描述清楚用戶要“做什么”,SQL就可以將要求交給系統(tǒng),自動完成全部工作。3 面向集合的操作方式操作對象、查詢結(jié)果是元組的集合;插入、刪除、更新操作的對象也可以是元組的集合。 3.1 SQL語言概貌及特點 4 兩種使用形式,統(tǒng)一的語法結(jié)構(gòu)自含式:將SQL作為操作命令獨立使用現(xiàn)在許多數(shù)據(jù)庫開發(fā)工具都將SQL直接融入到自身的語言中。 宿主式:將SQ
33、L嵌入到高級語言中使用3.1 SQL語言概貌及特點 5 語言簡潔 SQL雖然功能強且使用兩種方式,但只有為數(shù)不多的幾條命令,另外語法也非常簡單,接近自然語言,易掌握、學(xué)習(xí)。 除了以上特點之外,SQL語言還支持?jǐn)?shù)據(jù)庫的三級模式結(jié)構(gòu)。(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page87)3.1 SQL語言概貌及特點 二、SQL語言組成SQL同一般的程序設(shè)計語言一樣,由以下幾個部分組成:1 常量:文本常量(字符串)、整型常量、數(shù)值常量2 數(shù)據(jù)類型:以IBM DB2 SQL為例,具體見薩師煊等主 編數(shù)據(jù)庫系統(tǒng)概論P893 空值:NULL3.1 SQL語言概貌及特點 集合運算符:、-算術(shù)運算符:+,-,*,/
34、5 . 函數(shù) SQL 提供了非常豐富的內(nèi)部函數(shù)聚集函數(shù) (詳見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P100)4. 運算符字符串運算符:| (連接)比較運算符:6個邏輯運算符:NOT,AND,OR3.1 SQL語言概貌及特點6 謂詞SQL為了具有強大的查詢能力,提供了一系列的謂詞: BETWEEN AND / NOT BETWEEN AND 介于兩者之間 /介于兩者之外 IN / NOT IN 在其中/不在其中 LIKE 匹配 IS NULL / IS NOT NULL EXISTS/ NOT EXISTS 存在/不存在量詞 ANY 任意一個存在量詞 ALL 全程量詞3.1 SQL語言概貌及特點7表達式8
35、條件 由一個或多個含有比較運算符的表達試及邏輯運算符組合而成。命令(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P86 表3.1) 3.2 數(shù)據(jù)定義 存儲過程定義基本表定義定義功能數(shù)據(jù)庫的定義:和物理數(shù)據(jù)有關(guān),以后介紹視圖定義索引定義 規(guī)則定義與數(shù)據(jù)完整性有關(guān),以后介紹 3.2.1 定義、刪除與修改基本表 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P88)3.2.2 建立與刪除索引 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P90) 在使用關(guān)系數(shù)據(jù)庫系統(tǒng)時,用戶所看到和操作的數(shù)據(jù)好像在簡單的二維表中,而實際上數(shù)據(jù)在磁盤上是如何存儲的用戶可能不知道。然而數(shù)據(jù)的物理存儲如何卻使數(shù)據(jù)庫主要性能的主要因素。索引時最常見的改善數(shù)據(jù)
36、庫性能的技術(shù)。CREATE TABLE 表名(列名數(shù)據(jù)類型列級完整性約束條件,表級完整性約束條件例:CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,SNAME CHAR(20) UNIQUE,SSEX CHAR(1),SAGE INT,SDEPT CHAR(15);修改基本表:ALTER TABLE 表名ADD新列名數(shù)據(jù)類型完整性約束DROP完整性約束名ALTER 列名數(shù)據(jù)類型;例:向?qū)W生表增加“入學(xué)時間”日期型ALTER TABLE STUDENT ADD Scome date;修改年齡為半字長整數(shù)ALTER TABLE STUDENT A
37、LTER SAGE SMALLINT刪除學(xué)生姓名必須取唯一值的約束。DROP TABLE Student DROP UNIQUE Tag SnameDROP TABLE 3.2.2 建立與刪除索引關(guān)于索引 索引的建立和刪除由DBA或建表的人負(fù)責(zé),用戶不必也不能在存取數(shù)據(jù)是選擇索引; 作為一般規(guī)則,不應(yīng)該在一個表上建立太多的索引(2-3個)。索引能改善查詢效果,但也耗費了磁盤空間。降低了更新操作的性能。因為系統(tǒng)必須花時間來維護這些索引;表中數(shù)據(jù)越多,索引的優(yōu)越性才越明顯。 3.3.1 單表查詢 指定列消除重復(fù)行 選擇表中若干列 全部列 經(jīng)計算的列選擇表中若干元組查詢滿足條件的元組對查詢結(jié)果排序?qū)?/p>
38、查詢結(jié)果分組3.3.2 連接查詢 等值/非等值連接 自身連接 外連接 復(fù)合條件連接3.3.3 嵌套查詢 帶有IN謂詞的查詢 帶有比較運算符的查詢 帶有ANY或ALL謂詞的子查詢 帶有EXISTS謂詞的查詢3.3.4 集合查詢具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P1143.3.5 SELECT 語句的一般格式 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P 115 3.4 數(shù)據(jù)更新 插入、修改、刪除數(shù)據(jù)(具體見薩師煊等主編數(shù)據(jù)庫 系統(tǒng)概論P117) 一、插入數(shù)據(jù) 1插入單個元組 2插入子查詢結(jié)果3.4 數(shù)據(jù)更新二、修改數(shù)據(jù)1修改一個元組的值2修改多個元組的值3帶子查詢的修改語句3.4 數(shù)據(jù)更新三、刪除數(shù)據(jù)1刪除
39、一個元組的值2刪除多個元組的值3帶子查詢的刪除語句4更新操作與數(shù)據(jù)庫的一致性 3.5 視 圖 一、關(guān)于視圖: 視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù) 的另外一種方式; 可將視圖看成是一個移動的窗口,通過它可看到感興 趣的數(shù)據(jù); 視圖可從一個或多個實際表中獲得; 視圖的定義存在數(shù)據(jù)庫中,而數(shù)據(jù)并沒再存一份在數(shù) 據(jù)庫中,通過視圖看到的數(shù)據(jù)存放在基本表中; 對視圖的操作同其它表一樣,通過視圖修改數(shù)據(jù)時, 實際是修改基本表中的數(shù)據(jù),相反,基本表數(shù)據(jù)的改 變也會自動反映在由基本表產(chǎn)生的視圖中。3.5 視 圖 二、視圖的作用 1 簡單性 看到的就是用戶需要的 不僅可簡化用戶對數(shù)據(jù)的理解,也可簡化它
40、們的操 作。經(jīng)常使用的查詢可以被定義為視圖。3.5 視 圖 2 安全性 通過視圖用戶只能查詢和修改他們能見到的數(shù)據(jù),數(shù)據(jù)庫其它數(shù)據(jù)則既看不到也取不到。數(shù)據(jù)庫授權(quán)命令可是用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權(quán)到數(shù)據(jù)庫特定的行、列上。視圖可防止未授權(quán)用戶查看特定的行/列 3 邏輯數(shù)據(jù)獨立性3.5 視 圖一、定義視圖 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P121-124二、查詢視圖 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P125三、更新視圖 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P1263.6 數(shù)據(jù)控制 SQL數(shù)據(jù)控制功能對數(shù)據(jù)庫中數(shù)據(jù)的安全控制提供保護,主要表現(xiàn)在對數(shù)據(jù)使用的授權(quán)(GRANT)和收
41、回授權(quán)(REVOKE)。 每個用戶對自己擁有的資源可以由任意的操作權(quán)限,同時也可以把其中的一部分權(quán)限授予他人。 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P130) 3.6 數(shù)據(jù)控制一、授權(quán) 3.6 數(shù)據(jù)控制 二、收回權(quán)限 注:授權(quán)(GRANT)和收回授權(quán)(REVOKE)并不是數(shù)據(jù)庫的全部控制功能,只是其中的一小部分,其它功能如安全性、完整性、并發(fā)控制和恢復(fù)在7、8、9、10章介紹。 3.7 嵌入式SQL 前面幾節(jié)介紹的SQL,,是作為獨立的數(shù)據(jù)語言直接由用戶在交互環(huán)境下使用的。此外,SQL還可以作為子語言嵌入在宿主語言(PASCAL、C等)中使用。 SQL作為子語言嵌入在宿主語言中使用必須要解決以下
42、三方面問題:1嵌入識別問題 宿主語言的編譯程序不能識別SQL語句,所以首要問題要解決如何區(qū)分宿主語言的語句和SQL語句。3.7 嵌入式SQL2 宿主語言與SQL語言的數(shù)據(jù)通信問題 DBMS將SQL語句的查詢結(jié)果或執(zhí)行狀態(tài)必須交給宿主語言/應(yīng)用程序處理(通過SQLCA);運行時,宿主語言的數(shù)據(jù)通過變量(稱為主變量)也要能夠交給SQL使用。3 宿主語言的單記錄與SQL的多記錄的問題 宿主語言一般一次處理一條記錄;SQL語言常常處理的是記錄(元組)的集合,其查詢結(jié)果通常是含多個記錄的一張表?!白杩共黄ヅ洹?本節(jié)將圍繞如何解決這三個問題來介紹。3.7 嵌入式SQL 一、嵌入識別與預(yù)編譯 解決方法:為S
43、QL語句加一個特殊的前綴。 在用宿主語言的編譯系統(tǒng)編譯源程序之前,首先由預(yù)編譯系統(tǒng)將SQL語句轉(zhuǎn)換為宿主語言的合法函數(shù)調(diào)用。 3.7 嵌入式SQL3.7 嵌入式SQL一、數(shù)據(jù)通信區(qū)與主變量 1數(shù)據(jù)通信區(qū)SQLCA SQL Communication Area 在嵌入SQL語句的程序中,一般在程序的前部 都要有一條語句: EXEC SQL INCLUDE SQLCA 這里SQLCA即是SQL與宿主語言的通信區(qū),它 類似于結(jié)構(gòu)變量,各個變量分別反映SQL語句 的各種執(zhí)行狀態(tài)。 3.7 嵌入式SQLDBMS:數(shù)據(jù)庫廠商標(biāo)識 0:成功例如:SQL Anywhere 中SQLCA有16個屬性: SQLC
44、ode (long): 存放執(zhí)行SQL后返回的代碼100:SELECT找不到符合條件的記錄-1:SQL操作錯誤DataBaseUseridDBPassSQLErrText:錯誤代碼SQLDBCode:錯誤信息3.7 嵌入式SQL SQL被執(zhí)行時,DBMS將產(chǎn)生的各類系統(tǒng)信息(如執(zhí)行狀態(tài)信息)寫入系統(tǒng)通信區(qū),應(yīng)用程序在調(diào)用SQL后,可通過讀取數(shù)據(jù)通信區(qū)中信息來確定語句執(zhí)行情況。 應(yīng)用通過SQLCA與數(shù)據(jù)庫通信 應(yīng)用 SQLCADBMS連接參數(shù)狀態(tài)信息 3.7 嵌入式SQL 輸出主變量:SQL對其賦值或設(shè)置狀態(tài)信息,返回給應(yīng) 用程序。 利用它可得到SQL語句的結(jié)果數(shù)據(jù)和狀態(tài)。 輸入主變量:由應(yīng)用程
45、序賦值,SQL引用??捎糜冢翰迦霐?shù)據(jù)、修改值、制定條件 (WHERE) 2 主變量 SQL語句使用宿主語言的變量來輸入/輸出數(shù)據(jù) 主變量(Host Variable) 主變量根據(jù)作用不同分為:3.7 嵌入式SQLNote:所有變量要在 BEGIN DECLARE SECTION END DECLARE SECTION 之間說明。 3.7 嵌入式SQL 三、游標(biāo)(Cursor) 當(dāng)查詢結(jié)果超過一個元組時,不能一次性將結(jié)果值賦給宿主語言的變量,因為主變量僅能保存一個數(shù)據(jù),而不是一組數(shù)據(jù)。為此,引進一個特殊的數(shù)據(jù)結(jié)構(gòu)游標(biāo)(Cursor)。 游標(biāo)是系統(tǒng)為用戶開設(shè)的一個數(shù)據(jù)緩沖區(qū),存放SQL的執(zhí)行結(jié)果。
46、可將其理解為一個指示器,指向數(shù)據(jù)庫中滿足條件的元組。游標(biāo)包含兩部分內(nèi)容:結(jié)果集:游標(biāo)內(nèi)SELECT語句執(zhí)行后產(chǎn)生的集合;游標(biāo)位置:游標(biāo)指針的當(dāng)前位置。3.7 嵌入式SQL游標(biāo)的定義和使用分為下面幾步:聲明游標(biāo) 不可執(zhí)行的指令,僅定義游標(biāo),SELECT語句沒有執(zhí)行 (類似于變量說明)打開游標(biāo) 執(zhí)行SELECT語句,將結(jié)果放入結(jié)果集中。推進游標(biāo) 移動指針,該變結(jié)果集的當(dāng)前記錄。 通過游標(biāo)更新數(shù)據(jù) 關(guān)閉游標(biāo) 程序?qū)嵗ň唧w見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 P136-146) 第四章 關(guān)系系統(tǒng)及查詢優(yōu)化 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P151-1674.1.3 全關(guān)系系統(tǒng)的12條基本準(zhǔn)則 4.1 關(guān)系系
47、統(tǒng)4.1.1 關(guān)系系統(tǒng)的定義4.1.2 關(guān)系系統(tǒng)的分類 4.2 關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化 4.2.1 關(guān)系系統(tǒng)及其查詢優(yōu)化 4.2.6 優(yōu)化的一般步驟 4.2.5 關(guān)系代數(shù)表達式的優(yōu)化算法 4.2.4 關(guān)系代數(shù)等價變換規(guī)則 4.2.3 查詢優(yōu)化的一般準(zhǔn)則4.2.2 一個實例第五章 關(guān)系數(shù)據(jù)理論 數(shù)據(jù)庫設(shè)計的一個最基本的問題是如何建立一個好的數(shù)據(jù)庫模式。 即給出一組數(shù)據(jù),如何構(gòu)造一個適合于它們的數(shù)據(jù)模式,使數(shù)據(jù)庫系統(tǒng)無論是在數(shù)據(jù)存儲方面,還是在數(shù)據(jù)操縱方面都有較好的性能。 E-R模型方法討論了實體與實體之間的數(shù)據(jù)聯(lián)系,現(xiàn)在來討論實體內(nèi)部屬性與屬性之間的數(shù)據(jù)關(guān)聯(lián),目標(biāo)是要設(shè)計一個“好”的數(shù)據(jù)庫模型
48、。 5.1 問題的提出 1關(guān)系模型定義復(fù)習(xí) 2在解決如何設(shè)計一個好的數(shù)據(jù)庫模式之前,先看一看什么是“不好”的數(shù)據(jù)庫設(shè)計(關(guān)系數(shù)據(jù)庫模式可能出現(xiàn)的異常)。 例:建立一個關(guān)系數(shù)據(jù)庫來描述學(xué)生的一些情況,該數(shù)據(jù)庫只包含一個關(guān)系模式: 學(xué)生(學(xué)號,姓名,系名,系主任,課程,成績) 3. 例:具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P171頁 5.1 問題的提出 (1)存在的問題:i.數(shù)據(jù)冗余:姓名,系名,系=重復(fù)出現(xiàn)。ii. 更新異常:某一元組修改系主任,其他不變= 同一系,系主任不同,造成了數(shù)據(jù)潛在的不一致 性。iii.插入異常:系剛成立,尚未招收學(xué)生,主關(guān)鍵字 為空,則系主任、選的課都無法存入數(shù)據(jù)庫,未
49、選課的學(xué)生信息也無法存入。刪除異常:一個系的學(xué)生畢業(yè)了,刪除這些學(xué)生的記錄,則系主任等信息也刪除掉了。 5.1 問題的提出(2)產(chǎn)生異常的原因: 這些異常的產(chǎn)生主要是因為關(guān)系模式的結(jié)構(gòu),即關(guān)系模式中的屬性之間存在過多的數(shù)據(jù)依賴關(guān)系,與現(xiàn)實世界不符合。 注:數(shù)據(jù)依賴關(guān)系最重要的一類是函數(shù)依賴。 主關(guān)鍵字(學(xué)號+課程)一定,元組就確定了,元組分量也就確定了,即所有其它屬性都依賴于“學(xué)號”和“課程”。 但實際:學(xué)號姓名,不需選課。 系名系主任。5.1 問題的提出(3)解決: 分解為三個新的關(guān)系模式: 學(xué)生(學(xué)號,姓名,系名) 成績(學(xué)號,課程,成績) 系(系名,系主任) 這樣上面提到的問題不存在了,
50、將學(xué)生、成績和系三個相對獨立的實體劃分開來,使之更符合現(xiàn)實世界的實際。 5.2 規(guī)范化(Normalization) 5.2.1 函數(shù)依賴(Functional Dependency) 回顧:函數(shù)熟悉的概念。 Y=f(x):x和Y之間數(shù)量上的對應(yīng)關(guān)系。給定x值,Y值 與之對應(yīng)。稱x函數(shù)決定Y,或Y函數(shù)依賴于x。 在關(guān)系數(shù)據(jù)庫中討論函數(shù)或函數(shù)依賴注重的是語義上 的關(guān)系。 如:省=f(城市) 5.2.1 函數(shù)依賴(Functional Dependency) 定義 函數(shù)依賴(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論172頁) 說明: t1x=t2x=t1r=t2r成立,就有xY。 只有當(dāng)t1x=t2x為真
51、,而t1Y=t2Y為假時 ,xY。 當(dāng)t1x=t2x為假時,不管t1Y=t2Y為T/F, 都有xY。 比如:當(dāng)x為關(guān)鍵字屬性時,t1x=t2x肯定為F ,但xY成立。 5.2.1 函數(shù)依賴(Functional Dependency)術(shù)語和記號:非平凡的函數(shù)依賴(Nontrivial Functional Dependency) 通常討論。xY,但Yx(Y不包含于x),則xY稱為非平凡的函數(shù)依賴。 若Yx, 顯然xY成立。(稱為平凡的函數(shù)依賴。Trivial Functional Dependency) 5.2.1 函數(shù)依賴(Functional Dependency) 決定因素(Determ
52、inant) 若xY,則x稱為決定因素(決定方)。xY,Yx則記作xY。 如:學(xué)號姓名。 若Y不函數(shù)依賴于x,記作xY。 5.2.1 函數(shù)依賴(Functional Dependency) 定義 完全函數(shù)依賴(Full Functional Dependency): 若xY,并且對x的任何一個真子集x,都有xY, 則稱Y完全函數(shù)依賴x,記作x Y. 部分函數(shù)依賴(Partial Functional Dependency): 若xY成立,則稱Y部分函數(shù)依賴于x.記作xY 。(與書上定義比較) 例:5.1 模式中,(學(xué)號,課程)系名 fpp5.2.1 函數(shù)依賴(Functional Depend
53、ency)定義傳遞函數(shù)依賴(Transitive Functional Dependency): 若xY,(非平凡函數(shù)依賴,且Yx),YZ, 則稱Z傳遞函數(shù)依賴于x。 若Yx,則xY,xZ。直接5.2.1 函數(shù)依賴(Functional Dependency)例:教室(課程,班級,時間,教室)完全函數(shù)依賴 (課程,班級,時間)教室 教師(姓名,職務(wù),職務(wù)工資)傳遞函數(shù)依賴 姓名職務(wù) 職務(wù)職務(wù)工資 則姓名職務(wù)工資 前面例子: 三個新的學(xué)生關(guān)系模式中:非平凡 函數(shù)依賴 學(xué)號姓名 學(xué)號系 系系主任 (學(xué)號,課程)成績 f5.2.2 碼 現(xiàn)實世界的每一實體集合,都有一關(guān)鍵字(碼),即唯一確定各個實體的
54、一組屬性。同樣,關(guān)系上最重要的約束是關(guān)系的關(guān)鍵字約束,即關(guān)鍵字/碼唯一確定關(guān)系的元組。 候選碼(Candidate Key)與主碼(Primary Key) 外部碼(Foreign Key) 例: 學(xué)生選課(學(xué)號,課號,成績) F 學(xué)生(學(xué)號,姓名,年齡) P 注:主碼與外碼(主關(guān)鍵字與外關(guān)鍵字)提供了一個表示關(guān)系間聯(lián)系的手段。 5.2.3 范式 在關(guān)系數(shù)據(jù)模式設(shè)計中,為了避免由依賴引起的數(shù)據(jù)的冗余和更新異常問題,必須進行關(guān)系數(shù)據(jù)模式的規(guī)范化。 自1971年,E.F.Codd提出關(guān)系規(guī)范化理論以來,人們對規(guī)范化問題進行了長期的研究,并已經(jīng)有了很大進展。 范式(Normal Form)的概念最早
55、是由E.F.Codd提出的,19711972年,先后提出了1NF,2NF,3NF(根據(jù)關(guān)系模式滿足的不同性質(zhì)和規(guī)范化的程度劃分)。1974年,又和Boyce共同提出了BCNF(Boyce-Codd Normal Form)。1976年,F(xiàn)agin提出了4NF,后又有人提出5NF。最重要的是3NF和BCNF。這是進行規(guī)范化的主要目標(biāo)。5.2.3 范式(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P 174頁,圖5-2) 1. 第一范式(1NF): (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P170) 每個關(guān)系模式都應(yīng)滿足的最低要求。 即關(guān)系的所有分量都必須是不可分的最小數(shù)據(jù)項。 系名稱高級職稱人數(shù)教授副教授5.2.
56、3 范式 2. 第二范式(2NF): (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P174) 定義:若R1NF,且每一非主屬性完全函數(shù)依賴 于碼,則R2NF。 所有單屬性關(guān)鍵字都是2NF關(guān)系。 復(fù)合關(guān)鍵字(多屬性構(gòu)成),且存在非主屬性 對關(guān)鍵字的部分依賴,則否。 5.2.3 范式 反例: 例:庫存(倉庫號,設(shè)備號,數(shù)量,地點) 1NF,但非2NF。 非主屬性數(shù)量完全依賴于關(guān)鍵字。 非主屬性地點部分依賴于關(guān)鍵字。 即有倉庫號地點。 (倉庫號,設(shè)備號)地點。p5.2.3 范式 出現(xiàn)的問題: 一個倉庫若只有一種設(shè)備,則刪除設(shè)備刪除倉庫。 學(xué)生關(guān)系: 學(xué)生(學(xué)號,姓名,系名) 不是2NF。 只有成績完全函數(shù)依賴
57、于碼,姓名、系名、系 主任對碼部分依賴,因為它們由學(xué)號可決定。5.2.3 范式 解決辦法投影分解 將部分函數(shù)依賴關(guān)系洪的決定方和非主屬性從關(guān)系模式中提出,單獨構(gòu)成一個關(guān)系模式。 將余下屬性加上碼(仍要保留部分函數(shù)依賴的決定方屬性,起分解出來的新關(guān)系之間的關(guān)聯(lián)作用)構(gòu)成另一關(guān)系模式。 5.2.3 范式例:庫存(倉庫號,設(shè)備號,數(shù)量) 倉庫(倉庫號,地點) 學(xué)生記錄(學(xué)號,姓名,系名,系主任) r(學(xué)生記錄)=(學(xué)號,姓名,系名,系主任)(r(學(xué)生)) 成績(學(xué)號,課程,成績) r(成績)=(r(學(xué)生))5.2.3 范式1. 第三范式(3NF):定義:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P176)若
58、R2NF,并且所有非主屬性都不傳遞依賴于關(guān)鍵字,則R3NF。若存在非主屬性對關(guān)鍵字的傳遞依賴,則不是3NF。 5.2.3 范式 反例: 例:倉庫(倉庫號,所在省,倉庫面積,所在城市) 倉庫號所在城市,所在城市所在省。 倉庫號所在省。 非3NF 問題:插入異常: 如插入(“WH30”,“湖北”,400,“邯鄲”) (“WH22”,“河北”,240,“ ”) 再如:在山東濟南要設(shè)一個倉庫,想先存入有關(guān)所 在城市信息,但無倉庫號,則不能。 5.2.3 范式 解決投影分解:(將傳遞依賴的屬性分解出來 自己總結(jié)的) 倉庫(倉庫號,倉庫面積,所在城市) 城市(省,城市) 再例: 學(xué)生記錄(學(xué)號,姓名,系,
59、系主任)不是3NF 學(xué)號系, 系系主任, 學(xué)號系主任 系主任對碼(學(xué)號)的傳遞依賴。 分解:學(xué)生檔案(學(xué)號,姓名,系名) 系(系名,系主任) 5.2.3 范式 4. BCNF范式: 由于3NF仍存在一些操作異常, 定義:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 P176) 即若R中的每個函數(shù)依賴的左部都是關(guān) 鍵字/碼(或所有的決定因素都是關(guān)鍵字) ,則RBCNF。 5.2.3 范式 或:若R3NF,并且不存在主屬性對 非主屬性的函數(shù)依賴,則RBCNF。 一個滿足BCNF的關(guān)系模式一定是非主屬性對 碼完全函數(shù)依賴; 主屬性對不包含它的碼也是完全函數(shù)依賴; 設(shè)有屬性完全函數(shù)依賴于碼以外的屬性組。 5.2
60、.3 范式 舉例及討論: 例:.管理(倉庫號,設(shè)備號,職工號) 3NF,非 BCNF。 語義:.一個倉庫可有多個職工; .一名職工僅在一個倉庫工作; .在每個倉庫,一種設(shè)備僅由一名職工保管 (但每名職工可以保管多種設(shè)備)。 根據(jù)語義有依賴:職工號倉庫號; (倉庫號,設(shè)備號)職工號; 問題:新職工分到一倉庫,尚未負(fù)責(zé)設(shè)備,則不能 插入。 插入異常:同一設(shè)備,兩個職工,無法防止 這樣插入,與違背。 5.2.3 范式 例:.學(xué)生(學(xué)號,姓名,專業(yè),宿舍) 假定無重名,則碼為學(xué)號或姓名,非主屬性 對這兩個碼不存在部分函數(shù)依賴和傳遞函數(shù) 依賴,是3NF。 而同時除學(xué)號和姓名以外沒有其他決定 因素,也是B
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子競技與科技融合的創(chuàng)新實踐
- 生態(tài)保護與監(jiān)測的科技教育策略
- 低保續(xù)保申請書模板
- 2025年度企業(yè)數(shù)據(jù)中心機房設(shè)備維護及更新服務(wù)合同
- 機動車保險索賠申請書
- 2025年度商鋪租賃合同租賃稅費承擔(dān)與申報協(xié)議
- 2025年度住宅小區(qū)智能化改造施工合同綜合單價規(guī)定
- 2025年度護坡工程勞務(wù)爭議解決與賠償合同范本
- 帶電腦申請書
- 2025年度新材料檢測與性能分析服務(wù)合同
- DLT1123-2023年《火力發(fā)電企業(yè)生產(chǎn)安全設(shè)施配置》
- 新人教版八年級數(shù)學(xué)下冊全冊教案-八年級下冊人教版全冊教案
- 山西陽城陽泰集團西馮街煤業(yè)有限公司煤炭資源開發(fā)利用方案和礦山環(huán)境保護與土地復(fù)墾方案
- 初中語文期末考試試卷分析
- 金鎖記優(yōu)秀課件
- 安徽華星化工有限公司殺蟲單廢鹽資源化處理項目環(huán)境影響報告書
- 人教版高中英語必修一單詞表(默寫版)
- 海德堡HRT共焦激光角膜顯微鏡
- 世界國家地區(qū)區(qū)域劃分 Excel對照表 簡
- 幼兒園手工教學(xué)中教師指導(dǎo)行為研究-以自貢市幼兒園為例
- 初中物理實驗教學(xué)
評論
0/150
提交評論