數(shù)據(jù)庫(kù)課件補(bǔ)充結(jié)_第1頁(yè)
數(shù)據(jù)庫(kù)課件補(bǔ)充結(jié)_第2頁(yè)
數(shù)據(jù)庫(kù)課件補(bǔ)充結(jié)_第3頁(yè)
數(shù)據(jù)庫(kù)課件補(bǔ)充結(jié)_第4頁(yè)
數(shù)據(jù)庫(kù)課件補(bǔ)充結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

總結(jié)與練習(xí)第1章數(shù)據(jù)庫(kù)系統(tǒng)概述1.1數(shù)據(jù)庫(kù)系統(tǒng)的基本概念1.2數(shù)據(jù)模型的基本概念1.3數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)基本概念數(shù)據(jù)(Data)描述事物的符號(hào)記錄數(shù)據(jù)庫(kù)(Database)存放數(shù)據(jù)的倉(cāng)庫(kù)長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織的,可共享的大量數(shù)據(jù)的集合數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS) 用于科學(xué)地組織和存儲(chǔ)數(shù)據(jù),高效地獲取和維護(hù)數(shù)據(jù),位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件數(shù)據(jù)庫(kù)系統(tǒng)(DBS)在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng),一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員構(gòu)成數(shù)據(jù)庫(kù)管理系統(tǒng)功能數(shù)據(jù)定義功能

提供數(shù)據(jù)定義語(yǔ)言(DDL),定義數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象數(shù)據(jù)組織、存儲(chǔ)和管理

提高存儲(chǔ)空間利用率和方便存取,提供多種存取方法來(lái)提高存取效率數(shù)據(jù)操縱功能

提供數(shù)據(jù)操縱語(yǔ)言(DML),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作(查詢、插入、刪除和修改)數(shù)據(jù)庫(kù)的事務(wù)管理和運(yùn)行管理

保證數(shù)據(jù)的安全性、完整性,多用戶對(duì)數(shù)據(jù)的并發(fā)使用,發(fā)生故障后的系統(tǒng)恢復(fù)數(shù)據(jù)庫(kù)的建立和維護(hù)功能

數(shù)據(jù)庫(kù)數(shù)據(jù)批量裝載,數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ),介質(zhì)故障恢復(fù),數(shù)據(jù)庫(kù)的重組織,性能監(jiān)視等數(shù)據(jù)庫(kù)系統(tǒng)特點(diǎn)數(shù)據(jù)的管理者:DBMS數(shù)據(jù)面向的對(duì)象:現(xiàn)實(shí)世界 數(shù)據(jù)的共享程度:共享性高

數(shù)據(jù)的獨(dú)立性:高度的物理獨(dú)立性和一定的邏輯獨(dú)立性數(shù)據(jù)的結(jié)構(gòu)化:整體結(jié)構(gòu)化,數(shù)據(jù)存取粒度小

數(shù)據(jù)控制能力:由DBMS統(tǒng)一管理和控制DBMS應(yīng)用程序1應(yīng)用程序2數(shù)據(jù)庫(kù)…數(shù)據(jù)庫(kù)系統(tǒng)(續(xù))數(shù)據(jù)庫(kù)系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的位置圖示補(bǔ)充說(shuō)明數(shù)據(jù)的高共享性的好處降低數(shù)據(jù)的冗余度,節(jié)省存儲(chǔ)空間避免數(shù)據(jù)間的不一致性使系統(tǒng)易于擴(kuò)充數(shù)據(jù)結(jié)構(gòu)化整體數(shù)據(jù)的結(jié)構(gòu)化是數(shù)據(jù)庫(kù)的主要特征之一數(shù)據(jù)庫(kù)中實(shí)現(xiàn)的是數(shù)據(jù)的真正結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)用數(shù)據(jù)模型描述,無(wú)需程序定義和解釋數(shù)據(jù)可以變長(zhǎng)數(shù)據(jù)的最小存取單位是數(shù)據(jù)項(xiàng)補(bǔ)充說(shuō)明:數(shù)據(jù)獨(dú)立性物理獨(dú)立性指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中數(shù)據(jù)是相互獨(dú)立的當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變了,應(yīng)用程序不用改變邏輯獨(dú)立性指用戶的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,用戶程序也可以不變數(shù)據(jù)模型模擬現(xiàn)實(shí)世界的過(guò)程客觀對(duì)象的抽象過(guò)程---兩步抽象現(xiàn)實(shí)世界中的客觀對(duì)象抽象為概念模型;把概念模型轉(zhuǎn)換為某一DBMS支持的數(shù)據(jù)模型概念模型是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次現(xiàn)實(shí)世界機(jī)器世界概念模型數(shù)據(jù)模型客觀對(duì)象信息世界概念模型概念模型的用途概念模型用于信息世界的建模是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次是數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具數(shù)據(jù)庫(kù)設(shè)計(jì)人員和用戶之間進(jìn)行交流的語(yǔ)言對(duì)概念模型的基本要求較強(qiáng)的語(yǔ)義表達(dá)能力,能夠方便、直接地表達(dá)應(yīng)用中的各種語(yǔ)義知識(shí)簡(jiǎn)單、清晰、易于用戶理解概念模型基本概念實(shí)體(Entities)客觀存在并可相互區(qū)別的事物,可具體,可抽象例:職工、學(xué)生、系屬性(Attribute)實(shí)體具有的某一特性例:學(xué)生實(shí)體有學(xué)號(hào)、姓名、性別、出生年份等屬性碼(Key)唯一標(biāo)識(shí)實(shí)體的屬性集例如學(xué)號(hào)是學(xué)生實(shí)體的碼域(Domain)某屬性的取值范圍實(shí)體集(EntitySet)同型實(shí)體的集合如全體學(xué)生概念模型的基本概念實(shí)體間的聯(lián)系(Relationship)現(xiàn)實(shí)世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界中反映為實(shí)體內(nèi)部的聯(lián)系和實(shí)體之間的聯(lián)系例張山選修數(shù)據(jù)庫(kù)課程。學(xué)生實(shí)體和課程之間通過(guò)選修聯(lián)系兩個(gè)實(shí)體之間的聯(lián)系:一對(duì)一聯(lián)系(1:1)一對(duì)多聯(lián)系(1:n)多對(duì)多聯(lián)系(m:n)概念模型的表示方法實(shí)體-聯(lián)系模型(E-R圖)矩形:表示實(shí)體集菱形:表示聯(lián)系集線:連接實(shí)體集與聯(lián)系集或?qū)傩耘c實(shí)體集橢圓:表示屬性下劃線:主碼屬性客戶名客戶SSN客戶街道客戶城市借款貸款數(shù)額貸款編號(hào)1n數(shù)據(jù)模型的分類(lèi)概念模型也稱信息模型,按用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模用于數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)模型按計(jì)算機(jī)的觀點(diǎn)對(duì)數(shù)據(jù)建模,主要用于DBMS的實(shí)現(xiàn)一般有層次,網(wǎng)狀,關(guān)系三種數(shù)據(jù)模型數(shù)據(jù)模型(DataModels)是什么?在數(shù)據(jù)庫(kù)中用數(shù)據(jù)模型這個(gè)工具來(lái)抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。通俗地講數(shù)據(jù)模型就是現(xiàn)實(shí)世界的模擬數(shù)據(jù)模型應(yīng)滿足三方面要求能比較真實(shí)地模擬現(xiàn)實(shí)世界容易為人所理解便于在計(jì)算機(jī)上實(shí)現(xiàn)數(shù)據(jù)模型數(shù)據(jù)模型的組成要素?cái)?shù)據(jù)結(jié)構(gòu)

所描述應(yīng)用領(lǐng)域的所有實(shí)體及聯(lián)系的集合,是對(duì)系統(tǒng)靜態(tài)特性的表述。數(shù)據(jù)操作

指對(duì)數(shù)據(jù)庫(kù)中各種數(shù)據(jù)執(zhí)行的查詢、修改、刪除、插入等操作的總稱,包括相關(guān)的操作規(guī)則,是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。數(shù)據(jù)的約束條件

完整性約束是現(xiàn)實(shí)世界語(yǔ)義的體現(xiàn),它描述了數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以保證數(shù)據(jù)模型與現(xiàn)實(shí)世界相符,從而保證數(shù)據(jù)的正確、有效、相容。數(shù)據(jù)模型的分類(lèi)數(shù)據(jù)模型主要包括網(wǎng)狀模型(NetworkModel)層次模型(HierarchicalModel)關(guān)系模型(RelationalModel)面向?qū)ο竽P停∣bjectOrientedModel)數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)兩種視角數(shù)據(jù)庫(kù)系統(tǒng)物理結(jié)構(gòu)從數(shù)據(jù)庫(kù)管理系統(tǒng)角度看

數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的模式結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)邏輯結(jié)構(gòu)從數(shù)據(jù)庫(kù)最終用戶角度看

數(shù)據(jù)庫(kù)系統(tǒng)外部的體系結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)應(yīng)用A應(yīng)用B應(yīng)用C外模式1外模式2模式內(nèi)模式數(shù)據(jù)庫(kù)外模式/模式映像模式/內(nèi)模式映像1.內(nèi)模式內(nèi)模式(也稱存儲(chǔ)模式)是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式記錄的存儲(chǔ)方式(順序存儲(chǔ),按照B樹(shù)結(jié)構(gòu)存儲(chǔ),按hash方法存儲(chǔ))索引的組織方式數(shù)據(jù)是否壓縮存儲(chǔ)數(shù)據(jù)是否加密數(shù)據(jù)存儲(chǔ)記錄結(jié)構(gòu)的規(guī)定一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式2.模式模式(也稱邏輯模式)數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述所有用戶的公共數(shù)據(jù)視圖,綜合了所有用戶的需求一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式模式的地位:是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中間層與數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境無(wú)關(guān)與具體的應(yīng)用程序、開(kāi)發(fā)工具及高級(jí)程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)在關(guān)系模式中用“表”來(lái)表示實(shí)體的邏輯數(shù)據(jù)結(jié)構(gòu),用來(lái)描述某一應(yīng)用領(lǐng)域的所有“表”的集合便是一個(gè)模式3.外模式(ExternalSchema)外模式(也稱子模式或用戶模式)外模式是面向應(yīng)用的,是為了某一應(yīng)用功能而建立起來(lái)的邏輯視圖。數(shù)據(jù)庫(kù)用戶(包括應(yīng)用程序員和最終用戶)使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述數(shù)據(jù)庫(kù)系統(tǒng)的模式結(jié)構(gòu)外模式/模式映像定義外模式與模式之間的對(duì)應(yīng)關(guān)系每一個(gè)外模式都對(duì)應(yīng)一個(gè)外模式/模式映像映像定義通常包含在各自外模式的描述中外模式/模式映象的用途保證數(shù)據(jù)的邏輯獨(dú)立性當(dāng)模式改變時(shí),數(shù)據(jù)庫(kù)管理員修改有關(guān)的外模式/模式映象,使外模式保持不變應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)庫(kù)系統(tǒng)的模式結(jié)構(gòu)模式/內(nèi)模式映像

定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。例如,說(shuō)明邏輯記錄和字段在內(nèi)部是如何表示的。數(shù)據(jù)庫(kù)中模式/內(nèi)模式映象是唯一的該映象定義通常包含在模式描述中模式/內(nèi)模式映象的用途保證數(shù)據(jù)的物理獨(dú)立性當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變了(例如選用了另一種存儲(chǔ)結(jié)構(gòu)),數(shù)據(jù)庫(kù)管理員修改模式/內(nèi)模式映象,使模式保持不變應(yīng)用程序不受影響。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性。

數(shù)據(jù)庫(kù)系統(tǒng)的邏輯結(jié)構(gòu)單用戶結(jié)構(gòu)主從式結(jié)構(gòu)分布式結(jié)構(gòu)客戶/服務(wù)器結(jié)構(gòu)瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu)1.單用戶數(shù)據(jù)庫(kù)系統(tǒng)整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)(應(yīng)用程序、DBMS、數(shù)據(jù))裝在一臺(tái)計(jì)算機(jī)上,為一個(gè)用戶獨(dú)占,不同機(jī)器之間不能共享數(shù)據(jù)。早期的最簡(jiǎn)單的數(shù)據(jù)庫(kù)系統(tǒng)2.主從式結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)一個(gè)主機(jī)帶多個(gè)終端的多用戶結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),包括應(yīng)用程序、DBMS、數(shù)據(jù),都集中存放在主機(jī)上,所有處理任務(wù)都由主機(jī)來(lái)完成各個(gè)用戶通過(guò)主機(jī)的終端并發(fā)地存取數(shù)據(jù)庫(kù),共享數(shù)據(jù)資源目前主流的數(shù)據(jù)庫(kù)系統(tǒng)的主從結(jié)構(gòu)主要采用兩層或三層的C/S(Client/Server)、B/S(Browser/Server)結(jié)構(gòu)C/S結(jié)構(gòu)C/S結(jié)構(gòu),即客戶/服務(wù)器結(jié)構(gòu)。第一層是在客戶機(jī)系統(tǒng)上結(jié)合了表示與業(yè)務(wù)邏輯;第二層是通過(guò)網(wǎng)絡(luò)結(jié)合了業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)服務(wù)器,通過(guò)將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通信開(kāi)銷(xiāo),可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì)。B/S結(jié)構(gòu)B/S結(jié)構(gòu),即瀏覽/服務(wù)器結(jié)構(gòu)。第一層是在客戶機(jī)系統(tǒng)上僅運(yùn)行瀏覽器,也就是在客戶機(jī)系統(tǒng)上只有表示而沒(méi)有業(yè)務(wù)邏輯;第二層是應(yīng)用服務(wù)器,實(shí)現(xiàn)業(yè)務(wù)邏輯;第三層是數(shù)據(jù)庫(kù)服務(wù)器。2關(guān)系數(shù)據(jù)庫(kù)理論2.1關(guān)系模型數(shù)據(jù)結(jié)構(gòu)2.2關(guān)系數(shù)據(jù)結(jié)構(gòu)的規(guī)范化2.3關(guān)系模型的數(shù)據(jù)操作原理2.4關(guān)系的完整性關(guān)系模型關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一。實(shí)體和實(shí)體間的聯(lián)系均用關(guān)系來(lái)表示,在用戶看來(lái)就是一張二維表。關(guān)系操作常用的關(guān)系操作選擇、投影、連接、除、并、交、差。增加、刪除、修改特點(diǎn)集合操作方式。(操作的對(duì)象和結(jié)果都是集合,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作是記錄方式)關(guān)系的完整性約束實(shí)體完整性、參照完整性、用戶自定義完整性關(guān)系模型數(shù)據(jù)結(jié)構(gòu)域笛卡爾積關(guān)系關(guān)系模式R(U,D,DOM,F)候選碼主碼全碼主屬性非主屬性(超碼)外碼關(guān)系數(shù)據(jù)結(jié)構(gòu)域:

具有相同數(shù)據(jù)類(lèi)型的值的集合笛卡兒積:

給定一組域D1,D2,...Dn(可相同),它們的笛卡兒積為:

D1×D2×...×Dn={(d1,d2,...,dn)|di

∈Di

,i=1,2,..,n}

其中每一個(gè)元素(d1,d2,...,dn)叫做一個(gè)n元組。元素中的每個(gè)值di叫做一個(gè)分量。(所有域的所有取值的一個(gè)組合,不能重復(fù))

若Di

為有限集,其基數(shù)為mi,則D1×D2×...×Dn的基數(shù)M為:關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系:

D1×D2×....×Dn的子集叫做在域D1,D2,...,Dn上的關(guān)系。記為:R(D1,D2,...,Dn)

其中:

R—表示關(guān)系名

n—稱為關(guān)系的目或度,1單元關(guān)系,2二元關(guān)系

t—表示關(guān)系中的元組。元組:

關(guān)系是笛卡爾積的有限子集,所以是一個(gè)二維表,表的每行對(duì)應(yīng)一個(gè)元組,每列對(duì)應(yīng)一個(gè)域。屬性:

域可以相同,為了區(qū)分域,必須對(duì)每列起一個(gè)名字,稱為屬性(Attribute)。關(guān)系數(shù)據(jù)結(jié)構(gòu)候選碼(Candidatekey)

若關(guān)系中的某一(最?。傩越M的值能唯一地標(biāo)識(shí)一個(gè)元組,則該(最?。傩越M稱為候選碼。主碼(Primarykey)

若關(guān)系中有多個(gè)候選碼,則選定其中的一個(gè)為主碼。主屬性(Primeattribute):

候選碼的諸屬性稱為主屬性。非主屬性(Nonprimaryattribute):

不被任何候選碼包含的屬性。全碼(All-key)

關(guān)系模式的所有屬性都是這個(gè)關(guān)系模式的候選碼關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,它用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢。運(yùn)算對(duì)象、運(yùn)算符、運(yùn)算結(jié)果是運(yùn)算的三大要素。關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系,而運(yùn)算符包括四類(lèi)。關(guān)系代數(shù)運(yùn)算符

運(yùn)算符含義運(yùn)算符含義集合運(yùn)算符∪并比較運(yùn)算符>大于?差≧大于等于∩交<小于×笛卡爾積≦小于等于=等于≠不等于專(zhuān)門(mén)的關(guān)系運(yùn)算符σ選擇邏輯運(yùn)算符┐非π投影∧與?連接∨或÷除學(xué)號(hào)Sno姓名Sname性別Ssex年齡Sage所在系Sdept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19IS課程號(hào)Cno課程名Cname先行課Cpno學(xué)分Ccredit1數(shù)據(jù)庫(kù)542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理37PASCAL語(yǔ)言64學(xué)號(hào)

Sno課程號(hào)Cno成績(jī)Grade9500119295001285950013889500229095002360關(guān)系代數(shù)綜合練習(xí)查詢選修了2號(hào)課程的學(xué)生的學(xué)號(hào)。πSno(σCno=‘2‘(SC))={95001,95002}

查詢至少選修了一門(mén)其直接先行課為5號(hào)課程的課程的學(xué)生姓名πSname(σCpno=‘5’(Course?

SC?

Student))或πSname(σCpno=‘5’(Course)?

SC?

πSno,Sname(Student))或

πSname(πSno(σCpno='5'(Course)?SC)?

πSno,Sname(Student))

關(guān)系代數(shù)綜合練習(xí)查詢選修了全部課程的學(xué)生號(hào)碼和姓名。πSno,Cno(SC)÷πCno(Course)

?

πSno,Sname(Student)

關(guān)系的完整性實(shí)體完整性(EntityIntegrity)

規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能為NULL。

說(shuō)明:

實(shí)體完整性是對(duì)基本關(guān)系而言的。通常對(duì)應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體。如學(xué)生關(guān)系?,F(xiàn)實(shí)中,實(shí)體是可以區(qū)分的,他們具有唯一的標(biāo)識(shí)。

關(guān)系模型中用主鍵區(qū)分不同的元組。主碼中的屬性不能為“空”?!翱铡北硎静恢阑虿淮_定。關(guān)系的完整性參照完整性(ReferentialIntegrity)

現(xiàn)實(shí)中,實(shí)體間存在著某種聯(lián)系,關(guān)系模型中實(shí)體和實(shí)體間的聯(lián)系都是用關(guān)系來(lái)描述的。因此必然存在關(guān)系之間的相互引用。即,一個(gè)關(guān)系中某些屬性的取值需要參照其他關(guān)系的屬性取值

關(guān)系間引用的例子學(xué)生(學(xué)號(hào),姓名,性別,專(zhuān)業(yè)號(hào),年齡)課程(課程號(hào),課程名,學(xué)分)專(zhuān)業(yè)(專(zhuān)業(yè)號(hào),專(zhuān)業(yè)名)選修(學(xué)號(hào),課程號(hào),成績(jī))關(guān)系的完整性用戶定義的完整性(User-definedIntegrity)

實(shí)體完整性和參照完整性是任何關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都必須支持的。稱為關(guān)系的兩個(gè)不變性。

另外,不同的關(guān)系數(shù)據(jù)庫(kù)根據(jù)應(yīng)用的具體情況,往往需要一些特殊的約束條件。用戶定義完整性即是指的這種約束條件。

范式范式是符合某一種級(jí)別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類(lèi):

第一范式(1NF)

第二范式(2NF)

第三范式(3NF) BC范式(BCNF)

第四范式(4NF)

第五范式(5NF)范式各種范式之間存在聯(lián)系:某一關(guān)系模式R為第n范式,可簡(jiǎn)記為R∈nNF。低級(jí)范式的關(guān)系模式,通過(guò)范式規(guī)范后可以轉(zhuǎn)換為多個(gè)高一級(jí)范式的關(guān)系模式的集合,這種過(guò)程稱為規(guī)范化。關(guān)系模式規(guī)范化的基本步驟關(guān)系模式規(guī)范化的基本步驟

1NF ↓消除非主屬性對(duì)碼的部分函數(shù)依賴消除決定屬性2NF集非碼的非平↓消除非主屬性對(duì)碼的傳遞函數(shù)依賴凡函數(shù)依賴3NF ↓消除主屬性對(duì)碼的部分和傳遞函數(shù)依 賴

BCNF ↓消除非平凡且非函數(shù)依賴的多值依賴

4NF第三章關(guān)系模型數(shù)據(jù)操作標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言包括的內(nèi)容SQLDDL:定義關(guān)系模式、刪除關(guān)系、建立索引以及修改關(guān)系模式;SQLDML:查詢、插入、刪除和修改;嵌入式DML:嵌入在Pascal、C等宿主語(yǔ)言;視圖定義:創(chuàng)建視圖;權(quán)限管理:對(duì)關(guān)系和視圖的訪問(wèn)進(jìn)行授權(quán);完整性:定義數(shù)據(jù)必須滿足的完整性約束條件;事務(wù)控制:定義事務(wù)的開(kāi)始、提交、和結(jié)束等。3.1SQL概述StructuredQueryLanguage,1974年被提出關(guān)系數(shù)據(jù)庫(kù)的國(guó)際標(biāo)準(zhǔn)語(yǔ)言:大多數(shù)數(shù)據(jù)庫(kù)均用SQL作為共同的數(shù)據(jù)存取語(yǔ)言和標(biāo)準(zhǔn)接口,實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)系統(tǒng)之間的互操作目前仍被不斷擴(kuò)充介于關(guān)系代數(shù)和關(guān)系演算之間,三者可相互轉(zhuǎn)換SQL的特點(diǎn)綜合統(tǒng)一:集DDL、DML、DCL功能于一體,可獨(dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng),語(yǔ)言風(fēng)格統(tǒng)一高度非過(guò)程化:用戶只需提出“做什么”,而無(wú)需指明“怎么做

”面向集合的操作方式:操作對(duì)象、查詢結(jié)果、更新數(shù)據(jù)均可以是元組的集合提供兩種使用方式:自含式、嵌入式語(yǔ)言簡(jiǎn)捷,易學(xué)易用SQL功能關(guān)鍵動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKESQL語(yǔ)言的基本概念SQL支持關(guān)系數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)存儲(chǔ)文件:組成關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式,對(duì)用戶透明基表(BaseTable):組成關(guān)系數(shù)據(jù)庫(kù)的模式,一個(gè)關(guān)系對(duì)應(yīng)一個(gè)基表,一或多個(gè)基表對(duì)應(yīng)一個(gè)存儲(chǔ)文件視圖(View):組成關(guān)系數(shù)據(jù)庫(kù)的外模式,從一個(gè)或多個(gè)基表中導(dǎo)出,不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲(chǔ)文件1存儲(chǔ)文件2外模式模式內(nèi)模式單表查詢

例:查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。

例:查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。

例:查詢學(xué)生的全部詳細(xì)記錄。SELECTSno,SnameFROMStudent;SELECTSname,Sno,SdeptFROMStudent;SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;SELECT*FROMStudent;單表查詢消除取值重復(fù)的行

SELECT[ALL|DISTINCT]<column|expression>[,<column|expression>]···FROM<table|view>[,<table|view>]···[WHERE<condition(s)>][GROUPBY<column1>[HAVING<condition(s)_1>]][ORDERBY<column2>[ASC|DESC]]單表查詢查詢結(jié)果分組使用GROUPBY子句分組 細(xì)化聚集函數(shù)的作用對(duì)象未對(duì)查詢結(jié)果分組,聚集函數(shù)將作用于整個(gè)查詢結(jié)果對(duì)查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個(gè)組只有滿足HAVING短語(yǔ)指定條件的組才輸出

SELECT[ALL|DISTINCT]<column|expression>[,<column|expression>]···FROM<table|view>[,<table|view>]···[WHERE<condition(s)>][GROUPBY<column1>[HAVING<condition(s)_1>]][ORDERBY<column2>[ASC|DESC]]單表查詢查詢結(jié)果分組

例:求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。

例:查詢選修了3門(mén)以上課程的學(xué)生學(xué)號(hào)。

SELECTCno,COUNT(Sno)

FROMSCGROUPBYCno;

SELECTSnoFROMSC

GROUPBYSno

HAVINGCOUNT(*)>3;單表查詢查詢結(jié)果分組GROUPBY子句的作用對(duì)象是查詢的中間結(jié)果表分組方法:按指定的一列或多列值分組,值相等的為一組使用GROUPBY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和聚集函數(shù)連接查詢SQL中連接查詢的主要類(lèi)型廣義笛卡爾積等值連接(含自然連接)非等值連接查詢自身連接查詢外連接查詢復(fù)合條件連接查詢嵌套查詢(子查詢)基本含義一個(gè)SELECT-FROM-WHERE語(yǔ)句稱為一個(gè)查詢塊將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢稱為嵌套查詢例:查詢選修了2號(hào)課程的學(xué)生的姓名選修2號(hào)課程的學(xué)生都有哪些子查詢父查詢這些學(xué)生的姓名都是什么?嵌套查詢(子查詢)例:查詢選修了2號(hào)課程的學(xué)生的姓名子查詢的限制:不能使用ORDERBY子句SELECTSname 外層查詢/父查詢

FROMStudentWHERESnoIN

( SELECTSno 內(nèi)層查詢/子查詢

FROMSC WHERECno='2');(SELECTSno內(nèi)層查詢/子查詢

FROMSCWHERECno='2');

SELECTSno,SnameFROMStudentWHERESnoIN();SELECTSnoFROMSCWHERECnoIN( )嵌套查詢(子查詢)帶有IN謂詞的子查詢

例:查詢選修課程名為“信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名SELECTCnoFROMCourseWHERECname=‘信息系統(tǒng)’①首先找出Course關(guān)系中“信息系統(tǒng)”的課程號(hào)(3)②然后在SC關(guān)系中找出選修了3號(hào)課程的學(xué)生學(xué)號(hào)③最后在Student關(guān)系中取出Sno和Sname嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢EXISTS謂詞存在量詞()帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“true”或邏輯假值“false”。若內(nèi)層查詢結(jié)果非空,則返回真值若內(nèi)層查詢結(jié)果為空,則返回假值由EXISTS引出的子查詢,其目標(biāo)列表達(dá)式通常都用*,因?yàn)閹XISTS的子查詢只返回真值或假值,給出列名無(wú)實(shí)際意義嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢所有選修了1號(hào)課程的學(xué)生姓名。

求解思路分析:本查詢涉及Student和SC關(guān)系。在Student中依次取每個(gè)元組的Sno值,用此值去檢查SC關(guān)系。若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并且其Cno='1',則取此Student.Sname送入結(jié)果關(guān)系。

SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSC

WHERESno=Student.Sno

ANDCno='1');嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢所有選修了1號(hào)課程的學(xué)生姓名。(用連接方法實(shí)現(xiàn))

例:查詢沒(méi)有選修1號(hào)課程的學(xué)生姓名。

SELECTSname

FROMStudent,SC

WHEREStudent.Sno=SC.SnoAND

SC.Cno='1';

SELECTSname

FROMStudent,SC

WHEREStudent.Sno=SC.SnoAND

SC.Cno!='1';?

SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

不同形式的查詢間的替換一些帶EXISTS或NOTEXISTS謂詞的子查詢不能被其他形式的子查詢等價(jià)替換所有帶IN謂詞、比較運(yùn)算符、ANY和ALL謂詞的子查詢都能用帶EXISTS謂詞的子查詢等價(jià)替換。嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。

SELECTSno,Sname,Sdept

FROM

StudentWHERESdept=(SELECTSdeptFROMStudentWHERESname='劉晨‘);

SELECTSno,Sname,SdeptFROMStudentS1WHEREEXISTS(SELECT*FROMStudentS2WHERES2.Sdept=S1.SdeptANDS2.Sname='劉晨‘);嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

用EXISTS/NOTEXISTS實(shí)現(xiàn)全稱量詞*SQL語(yǔ)言中沒(méi)有全稱量詞(Forall)可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞:

(

x)P

(

x(

P))

嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢選修了全部課程的學(xué)生姓名。

SELECTSname

FROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*

FROMSCWHERESno=Student.Sno

ANDCno=Course.Cno));嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

用EXISTS/NOTEXISTS實(shí)現(xiàn)邏輯蘊(yùn)涵*SQL語(yǔ)言中沒(méi)有蘊(yùn)涵(Implication)邏輯運(yùn)算可以利用謂詞演算將邏輯蘊(yùn)函謂詞等價(jià)轉(zhuǎn)換為:

p

q≡

p∨q嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢(至少)選修了學(xué)生95002選修的全部課程的學(xué)生號(hào)碼。解題思路

用邏輯蘊(yùn)函表達(dá):查詢學(xué)號(hào)為x的學(xué)生,對(duì)所有的課程y,只要95002學(xué)生選修了課程y,則x也選修了y。形式化表示:

用P表示謂詞“學(xué)生95002選修了課程y”

用q表示謂詞“學(xué)生x選修了課程y”

則上述查詢?yōu)?(

y)p

q

嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

等價(jià)變換:

(

y)p

q≡

(

y(

(p

q)) ≡

(

y(

(

p∨q) ≡

y(p∧

q)

變換后語(yǔ)義:不存在這樣的課程y,學(xué)生95002選修了y,而學(xué)生x沒(méi)有選。嵌套查詢(子查詢)帶有EXISTS謂詞的子查詢

例:查詢(至少)選修了學(xué)生95002選修的全部課程的學(xué)生號(hào)碼。

SELECTDISTINCTSno

FROMSCSCXWHERENOTEXISTS

(SELECT*FROMSCSCYWHERESCY.Sno='95002'

ANDNOTEXISTS(SELECT*FROMSCSCZWHERESCZ.Sno=SCX.Sno

AND

SCZ.Cno=SCY.Cno));嵌套查詢(子查詢)子查詢的其他應(yīng)用

運(yùn)用到數(shù)據(jù)操縱語(yǔ)言中

對(duì)INSERT語(yǔ)句:

對(duì)UPDATE語(yǔ)句: INSERTINTOtable_name( SELECTstatement

);UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];綜合練習(xí)設(shè)數(shù)據(jù)庫(kù)中有一教師表Teacher(Tno,Tname,TProf,TSex)和一個(gè)學(xué)生表student(sno,sname,ssex,sage)查詢學(xué)校中所有師生的姓名。 SELECTSnameFROMStudent UNION SELECTTnameFROMTeacher;綜合練習(xí)查詢學(xué)校中與教師同名的學(xué)生姓名 SELECTDISTINCTSnameFROMStudentWHERESnameIN (SELECTTnameFROMTeacher); SELECTSnameFROMStudentintersect SELECTTnameFROMTeacher;綜合練習(xí)查詢學(xué)校中未與教師同名的學(xué)生姓名 SELECTDISTINCTSnameFROMStudentWHERESnameNOTIN (SELECT

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論