數(shù)據(jù)庫原理部分課件_第1頁
數(shù)據(jù)庫原理部分課件_第2頁
數(shù)據(jù)庫原理部分課件_第3頁
數(shù)據(jù)庫原理部分課件_第4頁
數(shù)據(jù)庫原理部分課件_第5頁
已閱讀5頁,還剩249頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理與應用吉林師范大學計算機學院第一章 緒論 數(shù)據(jù)庫是數(shù)據(jù)管理的工具。數(shù)據(jù)管理經歷了從手工管理階段、文件管理階段到數(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ù)的倉庫(顧名思義/不準確的含義) 信息的載體/表示 盡管數(shù)據(jù)庫技術已發(fā)展成熟,但還沒有一個普遍接受的、嚴格的定義。數(shù)據(jù)庫應具備的特征/定義:(1)數(shù)據(jù)庫是相互關聯(lián)的數(shù)據(jù)的集合數(shù)據(jù)庫中的數(shù)據(jù)不是孤立的,數(shù)據(jù)與數(shù)據(jù)之間是相互關聯(lián)的,在數(shù)據(jù)庫中不僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系。如:學籍管理學生、課程兩類數(shù)據(jù)。 (2)

2、用綜合的方法組織數(shù)據(jù) 順序、索引、聚簇Cluster1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng) 例:人事部門有一個職工文件:職工基本情況有關人事管理的數(shù)據(jù) 教育部門也有一個職工文件:職工基本情況有關教育培訓的數(shù)據(jù) 其中,“職工基本情況”重復存儲,浪費空間??晒蚕泶鎯︻愃七@樣的共同數(shù)據(jù),以降低數(shù)據(jù)的冗余度。(3)具有較小的數(shù)據(jù)冗余,可供多個用戶共享 低冗余與數(shù)據(jù)共享:在數(shù)據(jù)庫技術之前,數(shù)據(jù)文件都是獨立的,任何數(shù)據(jù)文件都必須含有滿足某一應用的全部數(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ù)的組織和存儲方法與應用程序互不依賴,彼此獨立的特性??山档蛻贸绦虻拈_發(fā)代價和維護代價。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)在數(shù)據(jù)庫技術之前,數(shù)據(jù)文件的組織方式和應用程序是密切相關的。數(shù)據(jù)結構改變,相應的應用程序也必須隨之修改=開發(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ù)庫還要有一套備份/恢復機制,以保證當數(shù)據(jù)遭到破壞時將數(shù)據(jù)立刻完全恢復=繼續(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ù)是正確的。如:學生年齡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ù)固有的,是靠管理或支持數(shù)據(jù)庫的系統(tǒng)軟件DBMS提供的。DBMS任務:對數(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ù)庫的存儲結構; 完成對數(shù)據(jù)庫的備份/恢復等.DBMS功能: 1 數(shù)據(jù)庫定義功能 定義數(shù)據(jù)庫結構和存儲結構; 定義數(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)絡操

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ù)庫的計算機應用系統(tǒng),包括:以數(shù)據(jù)為主體的數(shù)據(jù)庫管理數(shù)據(jù)庫的系統(tǒng)軟件DBMS支持數(shù)據(jù)庫系統(tǒng)的計算機硬件環(huán)境和操作系統(tǒng)環(huán)境管理和使用數(shù)據(jù)庫系統(tǒng)的人,特別是DBA方便使用和管理系統(tǒng)的技術說明書和使用說明書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ù)庫管理工作的人員,負責數(shù)據(jù)

7、庫的全面管理工作(維護、設計)數(shù)據(jù)庫的使用會改變企事業(yè)單位的管理方式,但因為要把眾多部門或用戶的數(shù)據(jù)放在同一數(shù)據(jù)庫中,會帶來一些問題,如:數(shù)據(jù)沖突;越權使用數(shù)據(jù);重要數(shù)據(jù)丟失 因此需要管理部門:負責和數(shù)據(jù)管理有關的工作。1.1.1 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)注: DBA工作繁重、重要、關鍵:除了要掌握一定的數(shù)據(jù)處理、數(shù)據(jù)庫技術之外,還應有處理好人際關系的素質、能力。在一個企事業(yè)中,特別是一個規(guī)模較大的數(shù)據(jù)庫,不能指望一兩個人來完成管理工作,所以DBA常指數(shù)據(jù)庫管理部門。開發(fā)DBS時,一開始就應設置DBA的職位或相應的機構,以明確DBA職責、權限。數(shù)據(jù)處理是計算機應用領域中最大的一

8、類應用用計算機實現(xiàn)數(shù)據(jù)管理經歷了三個發(fā)展階段:1 人工管理階段數(shù)據(jù)庫管理的初級階段。在50年代中期以前,計算機采用的是批處理方式,主要用于科學計算。(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page6)1.1.2 數(shù)據(jù)管理技術的產生和發(fā)展2 文件系統(tǒng)階段(50年代后期60年代中期)特點: 計算機技術有了很大的發(fā)展,開始廣泛應用于信息處理 存儲設備有了磁盤、磁鼓等可直接存取的設備 計算機有了操作系統(tǒng),包括文件管理系統(tǒng),用戶可將數(shù) 據(jù)組織成文件體交給系統(tǒng)進行自動管理。 數(shù)據(jù)可長期保存在磁盤等存儲設備上 程序和數(shù)據(jù)有了一定的獨立性,且文件有多種形式的組 織結構:順序、鏈接、索引、直接1.1.2 數(shù)據(jù)管理技術

9、的產生和發(fā)展缺點:(1)數(shù)據(jù)冗余較大每個文件都是為特定的用途設計的,同樣數(shù)據(jù)在多個文件中重復存儲進能提供以文件為單位的數(shù)據(jù)共享。(2)程序和數(shù)據(jù)之間的獨立性較差應用程序依賴于文件的存儲結構,修改文件存儲結構就要修改程序1.1.2 數(shù)據(jù)管理技術的產生和發(fā)展(3)對數(shù)據(jù)的表示和處理能力較差 文件的結構和操作比較單一,不夠豐富。(4)數(shù)據(jù)不一致 由(1)造成,更新時會造成同一數(shù)據(jù)在不同文件中的不一致。(5)數(shù)據(jù)聯(lián)系弱文件與文件之間是獨立的,文件之間的聯(lián)系必須通過程序來構造。 盡管如此,文件系統(tǒng)在數(shù)據(jù)管理技術的發(fā)展中仍起著很重要的作用。1.1.2 數(shù)據(jù)管理技術的產生和發(fā)展1.1.2 數(shù)據(jù)管理技術的產生

10、和發(fā)展3.數(shù)據(jù)庫系統(tǒng)階段從60年代后期開始,計算機用于信息處理的規(guī)模越來越大,對數(shù)據(jù)管理的技術提出了更高的要求,此時開始提出計算機網(wǎng)絡系統(tǒng)和分布式系統(tǒng),出現(xiàn)了大容量的磁盤,文件系統(tǒng)已不再能勝任多用戶環(huán)境下的數(shù)據(jù)共享和處理。一個新的數(shù)據(jù)庫管理技術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ù)模型第二代:關系數(shù)據(jù)庫系統(tǒng) 支持關系數(shù)據(jù)模型,該模型有嚴格的理論基礎,概念簡單、清晰,易于用戶理解和使用。因此一經提出便迅

11、速發(fā)展,成為實力性最強的產品。1.1.2 數(shù)據(jù)管理技術的產生和發(fā)展第三代:新一代數(shù)據(jù)庫系統(tǒng)面向對象數(shù)據(jù)庫系統(tǒng) 基于擴展的關系數(shù)據(jù)模型或面向對象數(shù)據(jù)模型的尚未完全成熟的一代數(shù)據(jù)庫系統(tǒng) 。特點:支持包括數(shù)據(jù)、對象和知識的管理 在保持和繼承第二代技術的基礎上引進新技術(如OO) 對其他系統(tǒng)開放,具有良好的可移植性、可連結性、 可擴充性、互操作性。 1.1.2 數(shù)據(jù)管理技術的產生和發(fā)展1.2 數(shù)據(jù)模型 模型對客觀事物、現(xiàn)象、過程或系統(tǒng)的簡化描述 所有的數(shù)據(jù)庫系統(tǒng)都為它所要描述的世界建立了模型: 數(shù)據(jù)建模:描述了組織數(shù)據(jù)的框架結構。 如:樓房住戶-數(shù)據(jù);房間規(guī)格-數(shù)據(jù)模型 數(shù)據(jù)建模最后發(fā)展成為數(shù)據(jù)的存儲

12、方式(數(shù)據(jù)字典 中的定義) 業(yè)務功能建模:用戶的最終需求。 業(yè)務功能建模最后發(fā)展成為應用程序 產生高效的應用程序的前提是良好的數(shù)據(jù)模型。(正如10 平米的房間無法成為會議廳一樣,一個糟糕的數(shù)據(jù)模型也無法產生高質量的應用。1.2 數(shù)據(jù)模型為什么要建立數(shù)據(jù)模型(Data Model): 象蓋大樓的設計圖一樣,DM可使所有的 項目參與者都有一個共同的數(shù)據(jù)標準 避免出現(xiàn)問題再解決(邊干便改的方式) 可及早發(fā)現(xiàn)問題 加快應用開發(fā)速度 1.2.1 數(shù)據(jù)模型的三要素 1數(shù)據(jù)結構 描述數(shù)據(jù)的靜態(tài)特征,包括對數(shù)據(jù)結構和數(shù)據(jù) 建聯(lián)系的描述。 通常按照數(shù)據(jù)結構的類型來命名數(shù)據(jù)模型: 層次結構層次模型 網(wǎng)狀結構網(wǎng)狀模

13、型 關系結構關系模型 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ù)據(jù)模型正確、真實、有效地反映現(xiàn)實 運行時:保證數(shù)據(jù)庫中的數(shù)據(jù)值真實地體現(xiàn)現(xiàn)實世 界的狀態(tài) 1.2.2常見數(shù)據(jù)模型 根據(jù)數(shù)據(jù)模型應用目的不同,數(shù)據(jù)模型有以下幾種: 概念(數(shù)據(jù))模型(Conceptual Data Model) 面向現(xiàn)實世界建模 主要用來

14、描述現(xiàn)實世界的概念化結構,與具 體的DBMS無關; - 現(xiàn)實世界的事物經過人腦的抽象加工,提取出對用 戶有用的信息,經過組織整理加工形成結余現(xiàn)實世 界和計算機世界之間的中間模型; -CDM只關心現(xiàn)實世界中的事物、事務特征、聯(lián)系, 完全沒有與具體及其相關的任何概念;1.2.2常見數(shù)據(jù)模型 CDM是系統(tǒng)分析員、程序設計員、維護人員、用戶 之間相互理解的共同語言;- CDM能時數(shù)據(jù)庫的設計人員在設計的初始階段擺脫 計算機系統(tǒng)及DBMS的具體技術問題,集中精力分析 數(shù)據(jù)、數(shù)據(jù)之間的聯(liá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)狀/層次 /關系/面向對象); -既要面向用戶,也要面向系統(tǒng); -LDM表示數(shù)據(jù)建聯(lián)系的方法 -一般的DBMS支持一種LDM(特殊的DBMS支 持多種LDM)1.2.2常見數(shù)據(jù)模型 物理(數(shù)據(jù))模型(Physical Data Model) 面向具體的DBMS,面向機器 描述數(shù)據(jù)在存儲介質上的組織結構 - PDM不僅與具體的DBMS有關,還與操作系統(tǒng) 和硬件有關 -每一種邏輯模型在實現(xiàn)時都有其對應的物理模型 -PDM加入了概念模型中為考慮的因素:觸發(fā)器、 存儲

16、過程、主鍵、外鍵、索引等 - DBMS為保證其獨立性和可以執(zhí)行,大部分PDM 的實現(xiàn)工作由系統(tǒng)自動完成,而設計者只設計索 引、聚簇等特殊結構 1.2.3概念模型 實體-聯(lián)系(Entity-Relationship)概念模型 首先介紹E-R模型中常用的幾個重要概念,利用它們可 構造出現(xiàn)實世界的數(shù)據(jù)的抽象描述。 1實體、實體型、實體集 實體(Entity) 客觀存在并能相互區(qū)分的事物 如:人;數(shù)據(jù)庫課程;正是用的計算機;一 場足球賽不能嚴格地定義實體,正如幾何中“ 點”,“線”一樣。 關鍵之處:一個實體能和別的實體區(qū)分開。1.2.3概念模型實體型(Entity Type) 用實體名及屬性名集合來抽

17、象刻畫同類實體 實體集(Entity Set) 同型的實體組成的集合。2屬性(Attribute) 指實體所具有的某一方面的特性,一個實體可 由若干個屬性來刻劃。 - 屬性取值在一定的范圍,稱為該屬性的值域/域(Domain) - 唯一標識實體的屬性集稱為碼(Key)1.2.3概念模型3聯(lián)系(Relationship) 實體集合間存在的相互關系 為了建立現(xiàn)實世界的完整模型,常常需要對聯(lián)系 分 類,根據(jù)一個實體集合的實體可以和多少個另一類 實體集合的實體相聯(lián)系,可將聯(lián)系分為如下幾種: (1) 一對一聯(lián)系(1:1) 系系主任 (2) 一對多聯(lián)系(1:n) 班級學生 (3) 多對多聯(lián)系(m:n) 課

18、程學生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) 確定所有實體集合 用矩形方框表示實體集合,方框內標明實體集合名稱; (2)選擇實體集應包含的屬性用橢圓框表示屬性,通過無向邊連接到實體集。只有一個屬性的實體集可用屬性代替,附加到它參加的聯(lián)系上; (3) 確定實體集之間的聯(lián)系用菱形框表示,框內標明聯(lián)系的名稱,通過無向邊(或有向邊)連接到參加聯(lián)系的每個

19、實體集合;1.2.3概念模型( 4)確定實體集的關鍵字 用下劃線在屬性上標明關鍵字的屬性集合;(5)確定聯(lián)系的類型 在用無向邊連接聯(lián)系到實體集時,在邊上注明1或 n(多)來知名聯(lián)系的類型。(在用有向邊連接聯(lián)系到實體集時,讓邊的箭頭指向1的實體集的一方,多對多因為都是多方,故無箭頭) 1.2.4 三種主要的邏輯數(shù)據(jù)模型 上節(jié)討論的概念數(shù)據(jù)模型是“概念上”的,是抽象的,它與具體的數(shù)據(jù)庫管理系統(tǒng)無關。這節(jié)要討論的數(shù)據(jù)模型將與具體的DBMS有關,與DBMS支持的數(shù)據(jù)和聯(liá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) 用樹型結構來表示實體之間聯(lián)系的模型。 支持層次模型的典型系統(tǒng)誕生于1970年前后,是IBM 公司的IMS(Information Management System)系統(tǒng)。 1. 層次模型的數(shù)據(jù)結構 層次模型示例(薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 Page22 圖1.17) 舉例: Page231.2.4 三種主要的邏輯數(shù)據(jù)模型2層次模型的數(shù)據(jù)操縱與完整性約束3層次模型的存儲結構 4層次模型的優(yōu)缺點 優(yōu)點:結構簡單 缺點:插入、刪除限制多 1.2.4 三種主要的邏輯

21、數(shù)據(jù)模型 二、網(wǎng)狀模型(Network Model) 典型代表:DBTG(Data Base Task Group)數(shù)據(jù) 庫任務組 1 網(wǎng)狀模型的數(shù)據(jù)結構 2 網(wǎng)狀模型的數(shù)據(jù)操縱與完整性約束 3 網(wǎng)狀模型的存儲結構 4網(wǎng)狀模型的優(yōu)缺點 優(yōu)點:更能直接描述世界 缺點:結構復雜 1.2.4 三種主要的邏輯數(shù)據(jù)模型三、 關系模型(Relational Model) 1970,IBM,E.F.Codd 關系模型源于數(shù)學,它把數(shù)據(jù)看成是二維表(關系) 中的元素。(其嚴格定義下一章給出) 用關系表示(不需用指針)實體和實體之間聯(lián)系的模 型稱為關系模型。 基本術語:薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page31 舉

22、例見教材 對于用戶,關系方法應該是很簡單的,但RDBMS很 復雜,因為將大量工作都轉嫁給了RDBMS。1.2.4 三種主要的邏輯數(shù)據(jù)模型RDBMS的設想在層次、網(wǎng)狀數(shù)據(jù)庫誕生的同時產生的,但研制開發(fā)RDBMS卻花費了比人們想象的要長得多的時間。所以成為商品并投入使用比層次、網(wǎng)狀數(shù)據(jù)庫晚了十幾年。但一投入使用就顯示了旺盛的活力,并逐步取代層次、網(wǎng)狀數(shù)據(jù)庫。 1.3 數(shù)據(jù)庫系統(tǒng)的結構 1.3.1 數(shù)據(jù)庫系統(tǒng)模式的概念 當設計數(shù)據(jù)庫時,對數(shù)據(jù)庫的結構感興趣; 即模式(Schema):數(shù)據(jù)庫中數(shù)據(jù)的邏輯結 構和特征的描述 當應用數(shù)據(jù)庫時,關心的是數(shù)據(jù)庫中存在的數(shù)據(jù) 實例(Instance)。 數(shù)據(jù)庫中

23、的數(shù)據(jù)經常變化,而數(shù)據(jù)庫的結構在一定時 間范圍內不會改變。 數(shù)據(jù)庫中結構的定義可以在多個抽象級別進行,形成 多個級別的數(shù)據(jù)庫模式。 1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構 數(shù)據(jù)庫系統(tǒng)的三級模式不僅可以使數(shù)據(jù)具有獨立性,而且還可以使數(shù)據(jù)達到共享,使同一數(shù)據(jù)滿足更多用戶的不同要求。一、 內模式(Internal Schema) 存儲模式 是數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)的內部表示,即對數(shù)據(jù)的物 理結構/存儲方式的描述,是低級描述,一般由 DBMS提供的語言或工具完成;1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構要修改存儲數(shù)據(jù)庫的結構(例如,用倒排文件代替多 鏈表),那么僅僅需要把這些修改反映在存儲模式中;通常我們不關心內

24、模式的具體技術實現(xiàn),而是從一般組 織的觀點(即概念模式)或用戶的觀點(外模式)來討 論數(shù)據(jù)庫的描述。但我們必須意識到基本的內模式和存 儲數(shù)據(jù)庫的存在。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構二、 模式(Schema) 邏輯模式 是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結構和特性的描述, 是所有用戶的公共數(shù)據(jù)視圖; DBMS提供數(shù)據(jù)定義語言DDL來描述邏輯模式,嚴 格定義數(shù)據(jù)的名稱、特征、相互關系、約束等。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構三、 外模式(External Schema) 用戶模式(視圖) 是模式的子集或變形,是與某一應用有關的數(shù)據(jù) 的邏輯表示; 不同用戶需求不同,看待數(shù)據(jù)的方式也可以不同 ,對數(shù)據(jù)

25、保密的要求也可以不同,使用的程序設 計語言也可以不同,因此不同用戶的外模式的描 述可以使不同的。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構舉例:民航售票系統(tǒng)包括處理航班程序和處理旅客程序。- 程序的使用人員不必知道關于人事檔案、丟失的行 李、飛行員的航行分配等信息;- 調度員可能需要知道關于航班、飛機和人事檔案等 信息(如那些飛行員有資格駕駛747),但不必知道雇員的工資、旅客等信息。所以可以為訂票部門建立一個數(shù)據(jù)庫視圖,為調度部門建立另一個完全不同的部門。1.3.2 數(shù)據(jù)庫系統(tǒng)的三級模式結構Note:視圖處理的數(shù)據(jù)并不實際存儲在數(shù)據(jù)庫中,而僅可以從邏輯數(shù)據(jù)庫中構造出來。視圖比(邏輯)模式的抽象級別

26、更高。舉例:“年齡”在人事部門數(shù)據(jù)庫中,但(邏輯)模式重金包含出生年月。當用戶希望通過訪問視圖得到年齡時,DBMS翻譯這個要求,在從物理數(shù)據(jù)庫上取出的數(shù)據(jù)完成計算。注:一個數(shù)據(jù)庫只有一個模式,一個內模式,但可以有多個外模式。 1.3.3 數(shù)據(jù)庫的二級映象 在三級模式中提供了兩級映象,保證了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立 性,既物理獨立性與邏輯獨立性。 一、 外模式/模式映象 數(shù)據(jù)庫系統(tǒng)投入使用后,可能有必要修改模式(如增加新關系、屬性、改變類型),這時: 重新定義外模式/模式映象=現(xiàn)存外模式不變=應用程序不變 DBA職責1.3.3 數(shù)據(jù)庫的二級映象二、 模式/內模式映象當內模式發(fā)生變化時:重新定義模式/

27、內模式映象=模式保持不變=外模式保持不變=建立在外模式上的應用程序保持不變1.5 數(shù)據(jù)庫技術的研究領域1. 數(shù)據(jù)庫管理系統(tǒng)軟件的開發(fā)2數(shù)據(jù)庫設計3數(shù)據(jù)庫理論具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論40 第二章 關系數(shù)據(jù)庫 1關系操作 查詢操作:選擇/ 投影/ 連接/ 除/ 并/ 交/ 差2.1 關系模型概述從數(shù)據(jù)模型的三要素加以介紹一、數(shù)據(jù)結構 關系二、關系操作增加、刪除、修改 2.1 關系模型概述元組關系演算:謂詞變元的基本對象是元組變量 域關系演算:謂詞變元的基本對象是域變量Note:關系代數(shù)和關系演算是抽象的查詢語言,與具體的DBMS中實際語言不一樣,但彼此等價,是從抽象的觀點出發(fā)學習數(shù)據(jù)庫查詢

28、的問題。3關系數(shù)據(jù)語言(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論page47)2關系操作的表示方法:關系代數(shù):用對關系的運算表達查詢要求關系演算:用謂詞表達查詢要求2.1 關系模型概述實體完整性 關系模型必須滿足的完整性約束條件參照完整性三、關系的完整性約束條件用戶定義的完整性:針對某一具體數(shù)據(jù)庫的約束條件 反映某一具體應用所設計的數(shù)據(jù) 必須滿足的語義要求。(關系系統(tǒng)自動支持)2.2 關系數(shù)據(jù)結構及形式化定義 2.2.1 關系一、 基本概念(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論)1 域(Domain)2 笛卡爾積(Cartesian Product) 元組(Tuple) 3 關系(Relation) 分量

29、(Component) 候選碼 Candidate Key 非碼屬性Non-key attribute 主碼 Primark Key 全碼 All-key 主屬性Prime attribute2.2 關系數(shù)據(jù)結構及形式化定義 二、關系的三種類型 基本關系(基本表):實際存在的表,是實際存 儲數(shù)據(jù)的邏輯表示三、 關系的性質(6條,具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P50) 查詢表:查詢結果對應的表 視圖表 :由基本表或其它視圖標導出的表, 虛表,不對應實際存儲的數(shù)據(jù)2.2.2 關系模式 值(Value):是型的一個具體賦值 關系是值 型(Type):對某一類數(shù)據(jù)的結構和屬性的說明 關系模式是型(關

30、系模式是對關 系的描述)2.3 關系的完整性(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P52-55)2.4 關系代數(shù)(Relational Algebra) 關系代數(shù)是對關系運算的總和,關系運算分兩類:2.4.1 傳統(tǒng)的集合運算 并交差積(按行) 2.4.2 專門的關系運算 選擇/ 投影/ 連接/ 除(按行、列) 一、 幾個記號和概念 元組,分量 屬性列域,剩余屬性組 元組的連接 象集 關系運算定義(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P58-64) 第三章 關系數(shù)據(jù)庫標準語言SQL 關系代數(shù)和關系演算是形式化查詢語言,商業(yè)DBMS使用SQL(Structured Query Language)。1974

31、 年由IBM 的San Jose研究室提出,最初叫SEQUEL(Structured English Query Language)關系數(shù)據(jù)庫系統(tǒng)通過SQL對數(shù)據(jù)庫進行查詢和更新目前有許多不同版本的SQL語言,有兩個不同的主要標準: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ù)庫活動中的全部工作以前的非關系模型的數(shù)據(jù)語言一般包括:內模式描述語 言、模式描述語言、外模式描述語言、數(shù)據(jù)操縱語言等 。內容多,操作起來不像SQL那樣簡單。3.1 SQL語言概貌及特點2 高度非過程化沒有必要一步步地告訴計算機“如何”去做,只需描述清楚用戶要“做什么”,SQL就可以將要求交給系統(tǒng),自動完成全部工作。3 面向集合的操作方式操作對象、查詢結果是元組的集合;插入、刪除、更新操作的對象也可以是元組的集合。 3.1 SQL語言概貌及特點 4 兩種使用形式,統(tǒng)一的語法結構自含式:將SQL作為操作命令獨立使用現(xiàn)在許多數(shù)據(jù)庫開發(fā)工具都將SQL直接融入到自身的語言中。 宿主式:將SQ

33、L嵌入到高級語言中使用3.1 SQL語言概貌及特點 5 語言簡潔 SQL雖然功能強且使用兩種方式,但只有為數(shù)不多的幾條命令,另外語法也非常簡單,接近自然語言,易掌握、學習。 除了以上特點之外,SQL語言還支持數(shù)據(jù)庫的三級模式結構。(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論Page87)3.1 SQL語言概貌及特點 二、SQL語言組成SQL同一般的程序設計語言一樣,由以下幾個部分組成:1 常量:文本常量(字符串)、整型常量、數(shù)值常量2 數(shù)據(jù)類型:以IBM DB2 SQL為例,具體見薩師煊等主 編數(shù)據(jù)庫系統(tǒng)概論P893 空值:NULL3.1 SQL語言概貌及特點 集合運算符:、-算術運算符:+,-,*,/

34、5 . 函數(shù) SQL 提供了非常豐富的內部函數(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ī)則定義與數(shù)據(jù)完整性有關,以后介紹 3.2.1 定義、刪除與修改基本表 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P88)3.2.2 建立與刪除索引 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P90) 在使用關系數(shù)據(jù)庫系統(tǒng)時,用戶所看到和操作的數(shù)據(jù)好像在簡單的二維表中,而實際上數(shù)據(jù)在磁盤上是如何存儲的用戶可能不知道。然而數(shù)據(jù)的物理存儲如何卻使數(shù)據(jù)庫主要性能的主要因素。索引時最常見的改善數(shù)據(jù)

36、庫性能的技術。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ù)類型;例:向學生表增加“入學時間”日期型ALTER TABLE STUDENT ADD Scome date;修改年齡為半字長整數(shù)ALTER TABLE STUDENT A

37、LTER SAGE SMALLINT刪除學生姓名必須取唯一值的約束。DROP TABLE Student DROP UNIQUE Tag SnameDROP TABLE 3.2.2 建立與刪除索引關于索引 索引的建立和刪除由DBA或建表的人負責,用戶不必也不能在存取數(shù)據(jù)是選擇索引; 作為一般規(guī)則,不應該在一個表上建立太多的索引(2-3個)。索引能改善查詢效果,但也耗費了磁盤空間。降低了更新操作的性能。因為系統(tǒng)必須花時間來維護這些索引;表中數(shù)據(jù)越多,索引的優(yōu)越性才越明顯。 3.3.1 單表查詢 指定列消除重復行 選擇表中若干列 全部列 經計算的列選擇表中若干元組查詢滿足條件的元組對查詢結果排序對

38、查詢結果分組3.3.2 連接查詢 等值/非等值連接 自身連接 外連接 復合條件連接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插入子查詢結果3.4 數(shù)據(jù)更新二、修改數(shù)據(jù)1修改一個元組的值2修改多個元組的值3帶子查詢的修改語句3.4 數(shù)據(jù)更新三、刪除數(shù)據(jù)1刪除

39、一個元組的值2刪除多個元組的值3帶子查詢的刪除語句4更新操作與數(shù)據(jù)庫的一致性 3.5 視 圖 一、關于視圖: 視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù) 的另外一種方式; 可將視圖看成是一個移動的窗口,通過它可看到感興 趣的數(shù)據(jù); 視圖可從一個或多個實際表中獲得; 視圖的定義存在數(shù)據(jù)庫中,而數(shù)據(jù)并沒再存一份在數(shù) 據(jù)庫中,通過視圖看到的數(shù)據(jù)存放在基本表中; 對視圖的操作同其它表一樣,通過視圖修改數(shù)據(jù)時, 實際是修改基本表中的數(shù)據(jù),相反,基本表數(shù)據(jù)的改 變也會自動反映在由基本表產生的視圖中。3.5 視 圖 二、視圖的作用 1 簡單性 看到的就是用戶需要的 不僅可簡化用戶對數(shù)據(jù)的理解,也可簡化它

40、們的操 作。經常使用的查詢可以被定義為視圖。3.5 視 圖 2 安全性 通過視圖用戶只能查詢和修改他們能見到的數(shù)據(jù),數(shù)據(jù)庫其它數(shù)據(jù)則既看不到也取不到。數(shù)據(jù)庫授權命令可是用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權到數(shù)據(jù)庫特定的行、列上。視圖可防止未授權用戶查看特定的行/列 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ù)使用的授權(GRANT)和收

41、回授權(REVOKE)。 每個用戶對自己擁有的資源可以由任意的操作權限,同時也可以把其中的一部分權限授予他人。 (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P130) 3.6 數(shù)據(jù)控制一、授權 3.6 數(shù)據(jù)控制 二、收回權限 注:授權(GRANT)和收回授權(REVOKE)并不是數(shù)據(jù)庫的全部控制功能,只是其中的一小部分,其它功能如安全性、完整性、并發(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語句的查詢結果或執(zhí)行狀態(tài)必須交給宿主語言/應用程序處理(通過SQLCA);運行時,宿主語言的數(shù)據(jù)通過變量(稱為主變量)也要能夠交給SQL使用。3 宿主語言的單記錄與SQL的多記錄的問題 宿主語言一般一次處理一條記錄;SQL語言常常處理的是記錄(元組)的集合,其查詢結果通常是含多個記錄的一張表?!白杩共黄ヅ洹?本節(jié)將圍繞如何解決這三個問題來介紹。3.7 嵌入式SQL 一、嵌入識別與預編譯 解決方法:為S

43、QL語句加一個特殊的前綴。 在用宿主語言的編譯系統(tǒng)編譯源程序之前,首先由預編譯系統(tǒng)將SQL語句轉換為宿主語言的合法函數(shù)調用。 3.7 嵌入式SQL3.7 嵌入式SQL一、數(shù)據(jù)通信區(qū)與主變量 1數(shù)據(jù)通信區(qū)SQLCA SQL Communication Area 在嵌入SQL語句的程序中,一般在程序的前部 都要有一條語句: EXEC SQL INCLUDE SQLCA 這里SQLCA即是SQL與宿主語言的通信區(qū),它 類似于結構變量,各個變量分別反映SQL語句 的各種執(zhí)行狀態(tài)。 3.7 嵌入式SQLDBMS:數(shù)據(jù)庫廠商標識 0:成功例如:SQL Anywhere 中SQLCA有16個屬性: SQLC

44、ode (long): 存放執(zhí)行SQL后返回的代碼100:SELECT找不到符合條件的記錄-1:SQL操作錯誤DataBaseUseridDBPassSQLErrText:錯誤代碼SQLDBCode:錯誤信息3.7 嵌入式SQL SQL被執(zhí)行時,DBMS將產生的各類系統(tǒng)信息(如執(zhí)行狀態(tài)信息)寫入系統(tǒng)通信區(qū),應用程序在調用SQL后,可通過讀取數(shù)據(jù)通信區(qū)中信息來確定語句執(zhí)行情況。 應用通過SQLCA與數(shù)據(jù)庫通信 應用 SQLCADBMS連接參數(shù)狀態(tài)信息 3.7 嵌入式SQL 輸出主變量:SQL對其賦值或設置狀態(tài)信息,返回給應 用程序。 利用它可得到SQL語句的結果數(shù)據(jù)和狀態(tài)。 輸入主變量:由應用程

45、序賦值,SQL引用??捎糜冢翰迦霐?shù)據(jù)、修改值、制定條件 (WHERE) 2 主變量 SQL語句使用宿主語言的變量來輸入/輸出數(shù)據(jù) 主變量(Host Variable) 主變量根據(jù)作用不同分為:3.7 嵌入式SQLNote:所有變量要在 BEGIN DECLARE SECTION END DECLARE SECTION 之間說明。 3.7 嵌入式SQL 三、游標(Cursor) 當查詢結果超過一個元組時,不能一次性將結果值賦給宿主語言的變量,因為主變量僅能保存一個數(shù)據(jù),而不是一組數(shù)據(jù)。為此,引進一個特殊的數(shù)據(jù)結構游標(Cursor)。 游標是系統(tǒng)為用戶開設的一個數(shù)據(jù)緩沖區(qū),存放SQL的執(zhí)行結果。

46、可將其理解為一個指示器,指向數(shù)據(jù)庫中滿足條件的元組。游標包含兩部分內容:結果集:游標內SELECT語句執(zhí)行后產生的集合;游標位置:游標指針的當前位置。3.7 嵌入式SQL游標的定義和使用分為下面幾步:聲明游標 不可執(zhí)行的指令,僅定義游標,SELECT語句沒有執(zhí)行 (類似于變量說明)打開游標 執(zhí)行SELECT語句,將結果放入結果集中。推進游標 移動指針,該變結果集的當前記錄。 通過游標更新數(shù)據(jù) 關閉游標 程序實例(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 P136-146) 第四章 關系系統(tǒng)及查詢優(yōu)化 具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P151-1674.1.3 全關系系統(tǒng)的12條基本準則 4.1 關系系

47、統(tǒng)4.1.1 關系系統(tǒng)的定義4.1.2 關系系統(tǒng)的分類 4.2 關系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化 4.2.1 關系系統(tǒng)及其查詢優(yōu)化 4.2.6 優(yōu)化的一般步驟 4.2.5 關系代數(shù)表達式的優(yōu)化算法 4.2.4 關系代數(shù)等價變換規(guī)則 4.2.3 查詢優(yōu)化的一般準則4.2.2 一個實例第五章 關系數(shù)據(jù)理論 數(shù)據(jù)庫設計的一個最基本的問題是如何建立一個好的數(shù)據(jù)庫模式。 即給出一組數(shù)據(jù),如何構造一個適合于它們的數(shù)據(jù)模式,使數(shù)據(jù)庫系統(tǒng)無論是在數(shù)據(jù)存儲方面,還是在數(shù)據(jù)操縱方面都有較好的性能。 E-R模型方法討論了實體與實體之間的數(shù)據(jù)聯(lián)系,現(xiàn)在來討論實體內部屬性與屬性之間的數(shù)據(jù)關聯(lián),目標是要設計一個“好”的數(shù)據(jù)庫模型

48、。 5.1 問題的提出 1關系模型定義復習 2在解決如何設計一個好的數(shù)據(jù)庫模式之前,先看一看什么是“不好”的數(shù)據(jù)庫設計(關系數(shù)據(jù)庫模式可能出現(xiàn)的異常)。 例:建立一個關系數(shù)據(jù)庫來描述學生的一些情況,該數(shù)據(jù)庫只包含一個關系模式: 學生(學號,姓名,系名,系主任,課程,成績) 3. 例:具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P171頁 5.1 問題的提出 (1)存在的問題:i.數(shù)據(jù)冗余:姓名,系名,系=重復出現(xiàn)。ii. 更新異常:某一元組修改系主任,其他不變= 同一系,系主任不同,造成了數(shù)據(jù)潛在的不一致 性。iii.插入異常:系剛成立,尚未招收學生,主關鍵字 為空,則系主任、選的課都無法存入數(shù)據(jù)庫,未

49、選課的學生信息也無法存入。刪除異常:一個系的學生畢業(yè)了,刪除這些學生的記錄,則系主任等信息也刪除掉了。 5.1 問題的提出(2)產生異常的原因: 這些異常的產生主要是因為關系模式的結構,即關系模式中的屬性之間存在過多的數(shù)據(jù)依賴關系,與現(xiàn)實世界不符合。 注:數(shù)據(jù)依賴關系最重要的一類是函數(shù)依賴。 主關鍵字(學號+課程)一定,元組就確定了,元組分量也就確定了,即所有其它屬性都依賴于“學號”和“課程”。 但實際:學號姓名,不需選課。 系名系主任。5.1 問題的提出(3)解決: 分解為三個新的關系模式: 學生(學號,姓名,系名) 成績(學號,課程,成績) 系(系名,系主任) 這樣上面提到的問題不存在了,

50、將學生、成績和系三個相對獨立的實體劃分開來,使之更符合現(xiàn)實世界的實際。 5.2 規(guī)范化(Normalization) 5.2.1 函數(shù)依賴(Functional Dependency) 回顧:函數(shù)熟悉的概念。 Y=f(x):x和Y之間數(shù)量上的對應關系。給定x值,Y值 與之對應。稱x函數(shù)決定Y,或Y函數(shù)依賴于x。 在關系數(shù)據(jù)庫中討論函數(shù)或函數(shù)依賴注重的是語義上 的關系。 如:省=f(城市) 5.2.1 函數(shù)依賴(Functional Dependency) 定義 函數(shù)依賴(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論172頁) 說明: t1x=t2x=t1r=t2r成立,就有xY。 只有當t1x=t2x為真

51、,而t1Y=t2Y為假時 ,xY。 當t1x=t2x為假時,不管t1Y=t2Y為T/F, 都有xY。 比如:當x為關鍵字屬性時,t1x=t2x肯定為F ,但xY成立。 5.2.1 函數(shù)依賴(Functional Dependency)術語和記號:非平凡的函數(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。 如:學號姓名。 若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 模式中,(學號,課程)系名 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ù)依賴 (課程,班級,時間)教室 教師(姓名,職務,職務工資)傳遞函數(shù)依賴 姓名職務 職務職務工資 則姓名職務工資 前面例子: 三個新的學生關系模式中:非平凡 函數(shù)依賴 學號姓名 學號系 系系主任 (學號,課程)成績 f5.2.2 碼 現(xiàn)實世界的每一實體集合,都有一關鍵字(碼),即唯一確定各個實體的

54、一組屬性。同樣,關系上最重要的約束是關系的關鍵字約束,即關鍵字/碼唯一確定關系的元組。 候選碼(Candidate Key)與主碼(Primary Key) 外部碼(Foreign Key) 例: 學生選課(學號,課號,成績) F 學生(學號,姓名,年齡) P 注:主碼與外碼(主關鍵字與外關鍵字)提供了一個表示關系間聯(lián)系的手段。 5.2.3 范式 在關系數(shù)據(jù)模式設計中,為了避免由依賴引起的數(shù)據(jù)的冗余和更新異常問題,必須進行關系數(shù)據(jù)模式的規(guī)范化。 自1971年,E.F.Codd提出關系規(guī)范化理論以來,人們對規(guī)范化問題進行了長期的研究,并已經有了很大進展。 范式(Normal Form)的概念最早

55、是由E.F.Codd提出的,19711972年,先后提出了1NF,2NF,3NF(根據(jù)關系模式滿足的不同性質和規(guī)范化的程度劃分)。1974年,又和Boyce共同提出了BCNF(Boyce-Codd Normal Form)。1976年,F(xiàn)agin提出了4NF,后又有人提出5NF。最重要的是3NF和BCNF。這是進行規(guī)范化的主要目標。5.2.3 范式(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P 174頁,圖5-2) 1. 第一范式(1NF): (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P170) 每個關系模式都應滿足的最低要求。 即關系的所有分量都必須是不可分的最小數(shù)據(jù)項。 系名稱高級職稱人數(shù)教授副教授5.2.

56、3 范式 2. 第二范式(2NF): (具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P174) 定義:若R1NF,且每一非主屬性完全函數(shù)依賴 于碼,則R2NF。 所有單屬性關鍵字都是2NF關系。 復合關鍵字(多屬性構成),且存在非主屬性 對關鍵字的部分依賴,則否。 5.2.3 范式 反例: 例:庫存(倉庫號,設備號,數(shù)量,地點) 1NF,但非2NF。 非主屬性數(shù)量完全依賴于關鍵字。 非主屬性地點部分依賴于關鍵字。 即有倉庫號地點。 (倉庫號,設備號)地點。p5.2.3 范式 出現(xiàn)的問題: 一個倉庫若只有一種設備,則刪除設備刪除倉庫。 學生關系: 學生(學號,姓名,系名) 不是2NF。 只有成績完全函數(shù)依賴

57、于碼,姓名、系名、系 主任對碼部分依賴,因為它們由學號可決定。5.2.3 范式 解決辦法投影分解 將部分函數(shù)依賴關系洪的決定方和非主屬性從關系模式中提出,單獨構成一個關系模式。 將余下屬性加上碼(仍要保留部分函數(shù)依賴的決定方屬性,起分解出來的新關系之間的關聯(lián)作用)構成另一關系模式。 5.2.3 范式例:庫存(倉庫號,設備號,數(shù)量) 倉庫(倉庫號,地點) 學生記錄(學號,姓名,系名,系主任) r(學生記錄)=(學號,姓名,系名,系主任)(r(學生)) 成績(學號,課程,成績) r(成績)=(r(學生))5.2.3 范式1. 第三范式(3NF):定義:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論P176)若

58、R2NF,并且所有非主屬性都不傳遞依賴于關鍵字,則R3NF。若存在非主屬性對關鍵字的傳遞依賴,則不是3NF。 5.2.3 范式 反例: 例:倉庫(倉庫號,所在省,倉庫面積,所在城市) 倉庫號所在城市,所在城市所在省。 倉庫號所在省。 非3NF 問題:插入異常: 如插入(“WH30”,“湖北”,400,“邯鄲”) (“WH22”,“河北”,240,“ ”) 再如:在山東濟南要設一個倉庫,想先存入有關所 在城市信息,但無倉庫號,則不能。 5.2.3 范式 解決投影分解:(將傳遞依賴的屬性分解出來 自己總結的) 倉庫(倉庫號,倉庫面積,所在城市) 城市(省,城市) 再例: 學生記錄(學號,姓名,系,

59、系主任)不是3NF 學號系, 系系主任, 學號系主任 系主任對碼(學號)的傳遞依賴。 分解:學生檔案(學號,姓名,系名) 系(系名,系主任) 5.2.3 范式 4. BCNF范式: 由于3NF仍存在一些操作異常, 定義:(具體見薩師煊等主編數(shù)據(jù)庫系統(tǒng)概論 P176) 即若R中的每個函數(shù)依賴的左部都是關 鍵字/碼(或所有的決定因素都是關鍵字) ,則RBCNF。 5.2.3 范式 或:若R3NF,并且不存在主屬性對 非主屬性的函數(shù)依賴,則RBCNF。 一個滿足BCNF的關系模式一定是非主屬性對 碼完全函數(shù)依賴; 主屬性對不包含它的碼也是完全函數(shù)依賴; 設有屬性完全函數(shù)依賴于碼以外的屬性組。 5.2

60、.3 范式 舉例及討論: 例:.管理(倉庫號,設備號,職工號) 3NF,非 BCNF。 語義:.一個倉庫可有多個職工; .一名職工僅在一個倉庫工作; .在每個倉庫,一種設備僅由一名職工保管 (但每名職工可以保管多種設備)。 根據(jù)語義有依賴:職工號倉庫號; (倉庫號,設備號)職工號; 問題:新職工分到一倉庫,尚未負責設備,則不能 插入。 插入異常:同一設備,兩個職工,無法防止 這樣插入,與違背。 5.2.3 范式 例:.學生(學號,姓名,專業(yè),宿舍) 假定無重名,則碼為學號或姓名,非主屬性 對這兩個碼不存在部分函數(shù)依賴和傳遞函數(shù) 依賴,是3NF。 而同時除學號和姓名以外沒有其他決定 因素,也是B

溫馨提示

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

評論

0/150

提交評論