《數(shù)據(jù)庫系統(tǒng)原理》_第1頁
《數(shù)據(jù)庫系統(tǒng)原理》_第2頁
《數(shù)據(jù)庫系統(tǒng)原理》_第3頁
《數(shù)據(jù)庫系統(tǒng)原理》_第4頁
《數(shù)據(jù)庫系統(tǒng)原理》_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

自考《數(shù)據(jù)庫系統(tǒng)原理》串講筆記

第一章數(shù)據(jù)庫基礎(chǔ)知識

學(xué)習(xí)目的與要求:

本章屬于基礎(chǔ)知識,主要是對一些概念的理解和記憶。沒有難點,相對的重點是數(shù)據(jù)模型的四

個層次,數(shù)據(jù)庫管理系統(tǒng)的功能,數(shù)據(jù)庫系統(tǒng)的全局結(jié)構(gòu)。

考核知識點與考核要求

幾個數(shù)據(jù)庫的基本術(shù)語:

數(shù)據(jù):描述事物的符號記錄

數(shù)據(jù)處理:是指從某些己知的數(shù)據(jù)出發(fā),推導(dǎo)加工出一些新的數(shù)據(jù),這些新的數(shù)據(jù)又表示了新的

信息。

數(shù)據(jù)管理:是指數(shù)據(jù)的收集、整理、組織、存儲、維護(hù)、檢索、傳送等操作,這部分操作是數(shù)據(jù)

處理業(yè)務(wù)的基本環(huán)節(jié),而且是任何數(shù)據(jù)處理業(yè)務(wù)中必不可少的共有部分。

數(shù)據(jù)管理技術(shù):對數(shù)據(jù)的收集、整理、組織、存儲、維護(hù)、檢索、傳送等操作,基本目的就是

從大量的,雜亂無章的,難以理解的數(shù)據(jù)中篩選出有意義的數(shù)據(jù)。

數(shù)據(jù)處理是與數(shù)據(jù)管理相聯(lián)系的,數(shù)據(jù)管理技術(shù)的優(yōu)劣,將直接影響數(shù)據(jù)處理的效率。

1.人工管理階段(20世紀(jì)50年代中期以前)

1)數(shù)據(jù)不保存在機(jī)器中;

2)沒有專用軟件對數(shù)據(jù)進(jìn)行管理;

3)只有程序的概念,沒有文件的概念;

4)數(shù)據(jù)面向程序。

2.文件系統(tǒng)階段特點與缺陷(20世紀(jì)50年代后期至60年代中期)

1)數(shù)據(jù)可長期保存在磁盤上;

2)數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)有了區(qū)別;

3)文件組織呈現(xiàn)多樣化;

4)數(shù)據(jù)不再屬于某個特定程序,可以重復(fù)使用;

5)對數(shù)據(jù)的操作以記錄為單位。

文件系統(tǒng)三個缺陷:

1)數(shù)據(jù)冗余性

2)數(shù)據(jù)不一致性

3)數(shù)據(jù)聯(lián)系弱

3.數(shù)據(jù)庫階段(20世紀(jì)60年代后~至今)

數(shù)據(jù)管理技術(shù)進(jìn)入數(shù)據(jù)庫階段的標(biāo)志是20世紀(jì)60年代末三件大事:

1)1968年美國IBM公司推出層次模型的IMS系統(tǒng);

2)1969年美國CODASYL組織發(fā)布了DBTG報告??偨Y(jié)了當(dāng)時各式各樣的數(shù)據(jù)庫,提出網(wǎng)狀模

型,爾后于1971年4月正式通過。

數(shù)據(jù)庫管理階段特點:

1)采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu):

2)有較高的數(shù)據(jù)獨立性;

3)數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口。

4)數(shù)據(jù)庫系統(tǒng)提供以下四個方面的數(shù)據(jù)控制功能:

①數(shù)據(jù)庫的恢復(fù);

②數(shù)據(jù)庫的并發(fā)控制;

③數(shù)據(jù)庫的完整性;

?數(shù)據(jù)庫的安全性;

5)增加了系統(tǒng)的靈活性。

增加了系統(tǒng)的靈活性對數(shù)據(jù)的操作不一定以記錄為單位,可以以數(shù)據(jù)項為單位。

數(shù)據(jù)庫技術(shù)中的四個名詞:DB、DBMS、DBS、數(shù)據(jù)庫技術(shù)。其概念是不同的,要分清。

DB:數(shù)據(jù)庫(Database)長期存儲在計算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。

DBMS:數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),DBMS是位于用戶與操作系統(tǒng)之間的一層

數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控

制。DBMS總是基于某種數(shù)據(jù)模型,可以分為層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮虳BMS。

DBS:數(shù)據(jù)庫系統(tǒng)(DatabaseSystem),DBS是實現(xiàn)有組織地、動態(tài)地存儲大量關(guān)聯(lián)數(shù)據(jù),方便多用

戶訪問的計算機(jī)軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計算機(jī)系統(tǒng)。

數(shù)據(jù)庫技術(shù):是一門研究數(shù)據(jù)庫結(jié)構(gòu)、存儲、管理和使用的一門軟件學(xué)科。

4.高級數(shù)據(jù)庫階段:

1)面向?qū)ο蟮母拍罱?/p>

2)開放數(shù)據(jù)庫互連技術(shù)

在數(shù)據(jù)處理中,數(shù)據(jù)描述將涉及不同的范疇。從事物的特性到計算機(jī)中的具體表示,數(shù)據(jù)描述經(jīng)歷

了三個階段-----概念設(shè)計、邏輯設(shè)計和物理設(shè)計。

1.概念設(shè)計中的的數(shù)據(jù)描述

1)實體

2)實體集

3)屬性

4)實體標(biāo)識符

2.邏輯設(shè)計中的數(shù)據(jù)描述

1)字段

2)記錄

3)文件

4)關(guān)鍵碼

3.物理設(shè)計中的數(shù)據(jù)描述

物理存儲介質(zhì)層次

1)高速緩沖存儲器

2)主存儲器

3)快擦寫存儲器

4)磁盤存儲器

5)光盤存儲器

6)磁帶

物理存儲中的數(shù)據(jù)描述

位、字節(jié)、字、塊、桶和卷

4.數(shù)據(jù)聯(lián)系的描述

聯(lián)系及元數(shù)定義:

二元聯(lián)系有以下三種類型:

1:1聯(lián)系:如果實體集E1中的每個實體最多只能和實體集E2中的一個實體有聯(lián)系,反之亦

然,好么實體集E1對E2的聯(lián)系稱為“一對一聯(lián)系”,記為“1:1”。

1:N聯(lián)系:如果實體集E1中每個實體與實體集E2中任意個(零個或多個)實體有聯(lián)系,而

E2中每個實體至多和E1中的一個實體有聯(lián)系,那么E1對E2的聯(lián)系是“一對多聯(lián)系”,記為“1:

N”。

M:N聯(lián)系:如果實體集E1中每個實體與實體集E2中任意個(零個或多個)實體有聯(lián)系,反

之亦然,那么E1對E2的聯(lián)系是“多對多聯(lián)系”,記為“M:N”。

1.數(shù)據(jù)抽象的過程

根據(jù)抽象的級別定義了四種模型:

1)概念數(shù)據(jù)模型

2)邏輯數(shù)據(jù)模型

3)外部數(shù)據(jù)模型

4)內(nèi)部數(shù)據(jù)模型

2.概念模型

1)四種模型中,概念模型的抽象級別最高。

2)概念模型的特點:(P12)

3.邏輯模型

邏輯模型的特點:(P13)

⑴~(4)

邏輯模型的分類:

1)層次模型

2)網(wǎng)狀模型

3)關(guān)系模型

三種邏輯數(shù)據(jù)模型的比較?如P17圖

4.外部模型

外部模型的特點:(P17)

從整個系統(tǒng)考察,外部模型的優(yōu)點。

5.內(nèi)部模型

是數(shù)據(jù)庫最底的抽象,它描述數(shù)據(jù)在磁盤或磁帶上的存儲方式、存取設(shè)備和存取方法。

6.三層模式和兩級映象

三層模式體系結(jié)構(gòu)

1)外模式:是用戶與數(shù)據(jù)庫系統(tǒng)的接口,是用戶用到的那部分?jǐn)?shù)據(jù)的描述。

2)邏輯模式:是數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述。

3)內(nèi)模式:是數(shù)據(jù)庫在物理存儲方面的描述,定義所有內(nèi)部記錄類型、索引和文件的組織方

式,以及數(shù)據(jù)控制方面的細(xì)節(jié).

兩級映象

外模式/邏輯模式映象:用于定義概念模式和內(nèi)模式之間的對應(yīng)性。一般在內(nèi)模式中描述。

邏輯模式/內(nèi)模式映象:用于定義外模式和概念模式間的對應(yīng)性。一般在外模式中描述。

7.高度的數(shù)據(jù)獨立性

什么叫數(shù)據(jù)獨立性?

是指應(yīng)用程序和數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)之間相互獨立,不受影響。在修改數(shù)據(jù)結(jié)構(gòu)時,盡可能不修

改應(yīng)用程序,則稱系統(tǒng)達(dá)到了數(shù)據(jù)獨立性目標(biāo)。

數(shù)據(jù)獨立性分為物理數(shù)據(jù)獨立性和邏輯數(shù)據(jù)獨立性:

物理數(shù)據(jù)獨立性:修改內(nèi)模式時盡量不影響概念模式及外模式,則達(dá)到物理數(shù)據(jù)獨立性。

邏輯數(shù)據(jù)獨立性:修改概念模式時盡量不影響外模式和應(yīng)用程序。

數(shù)據(jù)庫管理系統(tǒng)的主要任務(wù)是完成用戶對數(shù)據(jù)庫的存取請求,即檢索、插入、更新或刪除等操

作。

DBMS的目標(biāo):用戶界面友好、功能完善、結(jié)構(gòu)清晰、高效率、開放性

1)數(shù)據(jù)庫的定義功能

2)數(shù)據(jù)庫的操縱功能

3)數(shù)據(jù)庫的保護(hù)功能(數(shù)據(jù)庫恢復(fù)、數(shù)據(jù)庫并發(fā)控制、數(shù)據(jù)庫完整性和數(shù)據(jù)庫安全性)

4)數(shù)據(jù)庫的維護(hù)功能

5)數(shù)據(jù)字典

2.數(shù)據(jù)庫管理員定義及職責(zé)。(素質(zhì)+職責(zé))

第二章數(shù)據(jù)庫設(shè)計和ER模型

學(xué)習(xí)目的與要求:

本章總的目的要求是了解和掌握數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計的全過程。首先掌握ER模型和關(guān)系模型的

基本概念,然后掌握概念設(shè)計中ER模型的設(shè)計方法,邏輯設(shè)計中ER模型向關(guān)系模型轉(zhuǎn)換方法。

考核知識點與考核要求

從軟件生存期談起

軟件生存期:是指從軟件的規(guī)劃、研制、實現(xiàn)、投入運行后的維護(hù)、直到它被新的軟件所取代

而停止使用的整個期間。它包括六個階段:(規(guī)需設(shè)編試運維)

(1)規(guī)劃階段

(2)需求分析階段

(3)設(shè)計階段

(4)程序編制階段

(5)調(diào)試階段

(6)運行維護(hù)階段

1.什么叫數(shù)據(jù)庫系統(tǒng)生存期?

我們把數(shù)據(jù)庫應(yīng)用系統(tǒng)從開始規(guī)劃、設(shè)計、實現(xiàn)、維護(hù)到最后被新的系統(tǒng)取代而停止使用的整

個期間,稱為數(shù)據(jù)庫系統(tǒng)生存期。

2.這個生存期一般可劃分成以下七個階段:

規(guī)劃、需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計、實現(xiàn)、運行維護(hù).

2.2ER模型的基本概念

實體、聯(lián)系和屬性

2.屬性的分類(簡單屬性和復(fù)合屬性、單值屬性和多值屬性、存儲屬性和派生屬性)

3.聯(lián)系的設(shè)計

(分裂、合并和增刪)

5.采用ER模型的數(shù)據(jù)庫概念設(shè)計步驟

采用ER方法進(jìn)行數(shù)據(jù)庫概念設(shè)計分成三步進(jìn)行:

首先設(shè)計局部ER模式

然后把各局部ER模式綜合成全局ER模式

最后對全局ER模式進(jìn)行優(yōu)化

1.關(guān)系模型定義:用二維表格結(jié)構(gòu)表示實體集、外鍵表示實體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。

2.基本術(shù)語有:字段(屬性)、字段值(屬性值)、記錄(元組)、二維表格(元組集合、關(guān)系或?qū)嵗?/p>

在這里,括號中的表述為關(guān)系模型中的術(shù)語。它與表格中術(shù)語可以一一對應(yīng)。還有,關(guān)系中屬性個

數(shù)稱為元數(shù),元組個數(shù)為基數(shù)。

3.鍵:由一個或幾個屬性組成。(注意鍵不一定是唯一的一個屬性)。

1)超鍵:在關(guān)系中能唯一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵。(注意,超鍵也是一個屬性集,

不一定只是一個屬性)

2)候選鍵:不含有多余屬性的超鍵稱為候選鍵。

3)主鍵:用戶選作元組標(biāo)識的一個候選鍵為主鍵。

4)外鍵:某個關(guān)系的主鍵相應(yīng)的屬性在另一關(guān)系中出現(xiàn),此時該主鍵在就是另一關(guān)系的外鍵,

如有兩個關(guān)系S和SC,其中S#是關(guān)系S的主鍵,相應(yīng)的屬性S#在關(guān)系SC中也出現(xiàn),此時S#就是關(guān)

系SC的外鍵。

4.關(guān)系的定義和性質(zhì)

1)關(guān)系定義:關(guān)系是一個屬性數(shù)目相同的元組的集合。

2)關(guān)系性質(zhì)(p53)

5.三類完整性規(guī)則

1)實體完整性規(guī)則:要求關(guān)系中組成主鍵的屬性上不能有空值。

2)參照完整性規(guī)則:要求不引用不存在的實體。

3)用戶定義完整性規(guī)則;由具體應(yīng)用環(huán)境決定,系統(tǒng)提供定義和檢驗這類完整性的機(jī)制。

E-R模型可以向現(xiàn)有的各種數(shù)據(jù)庫模型轉(zhuǎn)換,對不同的數(shù)據(jù)庫模型有不同的轉(zhuǎn)換規(guī)則。這里只討論

E-R模型向關(guān)系模型的轉(zhuǎn)換方法。

(1)實體類型的轉(zhuǎn)換

將每個實體類型轉(zhuǎn)換成一個關(guān)系模式,實體的屬性即為關(guān)系的屬性,實體標(biāo)識符即為關(guān)系的鍵。

(2)聯(lián)系類型的轉(zhuǎn)換

1)實體間的聯(lián)系是1:1

可以在兩個實體類型轉(zhuǎn)換成兩個關(guān)系模式中的任意一個關(guān)系模式的屬性中加入另一個關(guān)系模式

的鍵和聯(lián)系類型的屬性。

2)如實體間的聯(lián)系是1:N

則在N端實體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實體類型轉(zhuǎn)換成的關(guān)系模式的鍵和聯(lián)系類型的

屬性。

3)如實體間的聯(lián)系是M:N

則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩

端實體鍵的組合。

以上各轉(zhuǎn)換規(guī)則,給出了一般情況下E-R模型向關(guān)系模型的轉(zhuǎn)換方法。但在實際應(yīng)用中往往還需要

根具實際情況進(jìn)行具體處理。

下面以圖書借閱系統(tǒng)的E-R模型轉(zhuǎn)換為關(guān)系模型為例。

該例中,由于允許同一本書在不同的時間借給多個讀者,特別是一個讀者在不同的時間可以借同一

本書。因而,在多對多聯(lián)系“借閱”轉(zhuǎn)換為關(guān)系模式時,僅有讀者的編號和圖書的編號是不能構(gòu)成

碼的。

例如:

(0406010,,2006-10-10:10:10,2007-02-20:3:00)(0406010,,2007-5-26:4:00,NULL)

說明,按照上述介紹的轉(zhuǎn)換方法得到的關(guān)系模型不一定是最好的。實際應(yīng)用中,往往還要對得到的

關(guān)系模型進(jìn)行規(guī)范化。

實例分析,同學(xué)們多看書!

1.庫存管理系統(tǒng)的ER模型及轉(zhuǎn)換

2.人事管理信息系統(tǒng)的ER模型

3.住院管理信息系統(tǒng)的ER模型

4.公司車隊信息系統(tǒng)的ER模型

更多優(yōu)質(zhì)自考資料盡在百度貼吧自考樂園俱樂部

()歡迎”加入…歡迎”交流…止不住的驚喜等著你....

第三章關(guān)系模式設(shè)計理論

學(xué)習(xí)目的與要求:

本章特點是理論性較強,學(xué)習(xí)者應(yīng)從概念著手,搞清概念間的聯(lián)系和作用。

本章總的要求是:r解關(guān)系數(shù)據(jù)庫規(guī)范化理論及其在數(shù)據(jù)庫設(shè)計中的作用。

本章的重點是函數(shù)依賴、無損分解、保持依賴和范式。掌握這些概念并能運用它們分析模式分

解的特點。

考核知識點與考核要求

關(guān)系模式的設(shè)計準(zhǔn)則(簡單應(yīng)用)

函數(shù)依賴(FD)(簡單應(yīng)用)

關(guān)系模式的分解特性(簡單應(yīng)用)

范式

INF、2NF、3NF(簡單應(yīng)用)BCNF(領(lǐng)會)

分解成BCNF模式集的“分解算法”(識記)

分解成3NF模式集的“合成算法”(綜合應(yīng)用)

模式設(shè)計方法小結(jié)(領(lǐng)會)

多值依賴和第四范式(識記)

1.關(guān)系模式的冗余和異常問題

1)數(shù)據(jù)冗余

2)操作異常(修改異常、插入異常和刪除異常)

2.關(guān)系模式的非形式化設(shè)計準(zhǔn)則

1)關(guān)系模式的設(shè)計應(yīng)盡可能只包含有直接聯(lián)系的屬性,不包括有間接聯(lián)系的屬性

2)關(guān)系模式的設(shè)計應(yīng)盡可能使得相應(yīng)關(guān)系中不出現(xiàn)插入、刪除和修改異常。

3)關(guān)系模式的設(shè)計應(yīng)盡可能使得相應(yīng)關(guān)系中避免放置經(jīng)常為空值的屬性。

4)關(guān)系模式的設(shè)計應(yīng)盡可能使得關(guān)系的等值連接在主鍵和外鍵的屬性上進(jìn)行,并且保證連接

以后不會生成額外的元組。

1.函數(shù)依賴的定義

設(shè)有關(guān)系模式R(A1,A2,...An)或簡記為R(U),X,Y是U的子集,r是R的任一具體關(guān)系,如

果對r的任意兩個元組tl,t2,由tl[X]=t2[X]導(dǎo)致tl[Y]=t2[Y],則稱X函數(shù)決定Y,或Y函數(shù)依賴

于X,記為XfY。X-Y為模式R的一個函數(shù)依賴。

這個定義可以這樣理解:有一張設(shè)計好的二維表,X,Y是表的某些列(可以是一列,也可以是

多列),若在表中的第tl行,和第t2行上的X值相等,那么必有tl行和t2行上的Y值也相等,這

就是說Y函數(shù)依賴于X。

2.函數(shù)依賴的邏輯蘊涵

設(shè)F是關(guān)系模式R的一個函數(shù)依賴集,X,Y是R的屬性子集,如果從F中的函數(shù)依賴能夠推出X

-Y,則稱F邏輯蘊涵X-Y,記為F|=XfY。

而函數(shù)依賴的閉包F+是指被F邏輯蘊涵的函數(shù)依賴的全體構(gòu)成的集合。

3.鍵和FD的關(guān)系

鍵是唯一標(biāo)識實體的屬性集。對于鍵和函數(shù)依賴的關(guān)系:有兩個條件:設(shè)關(guān)系模式

R(Al,A2...An),F是R上的函數(shù)依賴集,X是R的一個子集:

laX-AlA2...AnGF+(它的意思是X能夠決定唯一的一個元組)

2a不存在X的真子集Y,使得Y也能決定唯一的一個元組,則X就是R的一個候選鍵。(它的意

思是X能決定唯一的一個元組但又沒有多余的屬性集)

包含在任何一個候選鍵中的屬性稱為主屬性,不包含在任何鍵中的屬性為非主屬性(非鍵屬性),

(注意)主屬性應(yīng)當(dāng)包含在候選鍵中。

4.函數(shù)依賴(FD)的推理規(guī)則

前面我們舉的例子中是以實際經(jīng)驗來確定一個函數(shù)依賴的邏輯蘊涵,但是我們需要一個推理規(guī)

則才能完全確定F或F+的所有函數(shù)依賴。

設(shè)有關(guān)系模式R(U),X,Y,Z,W均是U的子集,F(xiàn)是R上只涉及到U中屬性的函數(shù)依賴集,推

理規(guī)則如下:

Ala自反性:如果YXU,則X-Y在R上成立。

A2a增廣性:如果X-Y為F所蘊涵,ZU,則XZ-YZ在R上成立?(XZ表示XUZ,下同)

A3a傳遞性:如果X-Y和Y-Z在R上成立,則XfZ在R上成立。

A4a合并性:如果X-Y和X-Z成立,那么X-YZ成立。

A6a分解性:如果X-Y和ZY成立,那么X-Z成立。

A5a偽傳性:如果X-Y和WY-Z成立,那么WX-Z成立。

A7a復(fù)合性:{XfY,WfZ}=XW-YZ。

A8a通用一致性定理:{X-Y,WfZ}|=xU(X-Y)-YZ。

5.函數(shù)依賴推理規(guī)則的完備性

函數(shù)依賴推理規(guī)則系統(tǒng)(自反性、增廣性和傳遞性)是完備的。由推理規(guī)則的完備性可得到兩個

重要結(jié)論:

la屬性集X+中的每個屬性A,都有X-A被F邏輯蘊涵,即X+是所有由F邏輯蘊含X-A的

屬性A的集合。

2aF+是所有利用Amstrong推理規(guī)則從F導(dǎo)出的函數(shù)依賴的集合。

6.函數(shù)依賴集的等價和覆蓋

在關(guān)系模式R(U)上的兩個函數(shù)依賴集F和G,如果滿足F+=G+,則稱F和G是等價的,

稱F和G等價也稱F覆蓋G或G覆蓋F。

每個函數(shù)依賴集F都可以被一個右部只有單屬性的函數(shù)依賴集G所覆蓋。

如果函數(shù)依賴集合F滿足:

(DF中每一個函數(shù)依賴的右部都是單屬性;

(2)F中的任一函數(shù)依賴X-A,其F-{X—A}是不等價的;

(3)F中的任一函數(shù)依賴X-A,Z為X的子集。(F-{XfA})U{ZfA}與F不等價。

則稱F為最小函數(shù)依賴集合。

如果函數(shù)依賴集F和G等價,并且G是最小集,那么稱G是F的一個最小覆蓋。

這一段并不要求掌握最小集的求法,但是應(yīng)當(dāng)通過其求法理解最小集的概念。

L模式分解中存在的問題

模式分解

就是將一個泛關(guān)系模式R分解成數(shù)據(jù)庫模式P,以P代替R的過程。它不僅僅是屬性集合的

分解,它是對關(guān)系模式上的函數(shù)依賴集、以及關(guān)系模式的當(dāng)前值分解的具體表現(xiàn)。

分解一個模式有很多方法,但是有的分解會出現(xiàn)失去函數(shù)依賴、或出現(xiàn)插入、刪除異常等情況,

而有的分解則不出現(xiàn)相關(guān)問題。

衡量一個分解的標(biāo)準(zhǔn)有三種:分解具有無損聯(lián)接;分解要保持函數(shù)依賴;分解既要保持依賴,

又要具有無損聯(lián)接。

那么什么是無損聯(lián)接呢?什么又是保持依賴?

2.無損聯(lián)接的定義和性質(zhì)

設(shè)R是一關(guān)系模式,分解成P={R1,R2,...,Rk},F是R上的一個函數(shù)依賴集。無損聯(lián)接就是

指R中每一個滿足F的關(guān)系r(也就是一個關(guān)系實例)都有r=nRI(r)IX|nR2(r)...|X|nR3(r),

即r為它在Ri上的投影的自然聯(lián)接。

最簡單的理解,也就是說,分解后的關(guān)系自然連接后完全等于分解前的關(guān)系,則這個分解相

對于F是無損聯(lián)接分解。

設(shè)R的分解為P={R1,R2},F為R所滿足的函數(shù)依賴集,則分解P具有無損聯(lián)接性的充分必要條件是:

RinR2-(R1-R2)

RinR2f(R2-R1)

也就是說,分解后的兩個模式的交能決定這兩個模式的差集,即RI、R2的公共屬性能夠函數(shù)決

定R1或R2中的其他屬性,這樣的分解就必定是無損聯(lián)接分解。

3.保持函數(shù)依賴的分解

在分解過程中,要求模式分解的無損聯(lián)接是必要的,只有無損聯(lián)接分解才能保證任何一個關(guān)系

能由它的那些投影進(jìn)行自然聯(lián)接得到恢復(fù)。

同時,分解關(guān)系模式時還應(yīng)保證關(guān)系模式的函數(shù)依賴集在分解后仍在數(shù)據(jù)庫模式中保持不變,

這就是保持函數(shù)依賴的問題。也就是所有分解出的模式所滿足的函數(shù)依賴的全體應(yīng)當(dāng)?shù)葍r于原模式

的函數(shù)依賴集。只有這樣才能確保整個數(shù)據(jù)庫中數(shù)據(jù)的語義完整性不受破壞。

1NF:第一范式

即關(guān)系模式中的屬性的值域中每一個值都是不可再分解的值。如果某個數(shù)據(jù)庫模式都是第一范

式的,則稱該數(shù)據(jù)庫模式是屬于第一范式的數(shù)據(jù)庫模式。

2NF;第二范式

如果關(guān)系模式R為第一范式,并且R中每一個非主屬性完全函數(shù)依賴于R的某個候選鍵,則稱

為第二范式模式。

非主屬性、完全函數(shù)依賴、候選鍵

三個名詞的含義。

候選鍵就是指可以唯一決定關(guān)系模式R中某元組值且不含有多余屬性的屬性集。

非主屬性也就是非鍵屬性,指關(guān)系模式R中不包含在任何建中的屬性。

設(shè)有函數(shù)依賴W-A,若存在XUW,有X-A成立,那么稱W-A是局部依賴,否則就稱W-A是完

全函數(shù)依賴。

在分析是否為第2范式時,應(yīng)首先確定候選鍵,然后把關(guān)系模式中的非主屬性與鍵的依賴關(guān)系進(jìn)行

考察,是否都為完全函數(shù)依賴,如是,則此關(guān)系模式為2NF。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是

2NF的,則此數(shù)據(jù)庫模式屬于2NF的數(shù)據(jù)庫模式。

3NF:第三范式

如果關(guān)系模式R是第二范式,且每個非主屬性都不傳遞依賴于R的候選鍵,則稱R為第三范式

的模式。

這里首先要了解傳遞依賴的含義:在關(guān)系模式中,如果Y-X,X-A,且X不決定Y和A不屬于

X,那么Y-A是傳遞依賴。

注意的是,這里要求非主屬性都不傳遞依賴于候選鍵。

BCNF:

這個范式和第三范式有聯(lián)系,它是3NF的改進(jìn)形式。若關(guān)系模式R是第一范式,且每個屬性都

不傳遞依賴于R的候選鍵。這種關(guān)系模式就是BCNF模式。

縱觀四種范式,可以發(fā)現(xiàn)它們之間存在如下關(guān)系:

5.分解成BCNF模式集的算法

對于任一關(guān)系模式,可找到一個分解達(dá)到3NF,且具有無損聯(lián)接和保持函數(shù)依賴性。而對于BCNF

分解,則可以保證無損聯(lián)接但不一定能保證保持函數(shù)依賴集。

無損聯(lián)接分解成BCNF模式集的算法:

⑴置初值P={R};

(2)如果P中所有關(guān)系模式都是BCNF,則轉(zhuǎn)(4);

(3)如果P中有一個關(guān)系模式S不是BCNF,則S中必能找到一個函數(shù)依賴集X-A有X不是S的

鍵,且A不屬于X,設(shè)SI=XA,S2=S-A,用分解SI,S2代替S,轉(zhuǎn)⑵;

(4)分解結(jié)束。輸出P。

在這個過程中,重點在于(3)步,判斷哪個關(guān)系不是BCNF,并找到X和A。這里,S的判斷用BCNF

的定義,而X不是S的鍵則依靠分析。

6.分解成3NF模式集

算法:

(1)如果R中的某些屬性在F的所有依賴的左邊和右邊都不出現(xiàn),那么這些屬性可以從R中分出

去,單獨構(gòu)成一個關(guān)系模式。

(2)如果F中有一個依賴X-A有XA-R,則P={R},轉(zhuǎn)(4)

(3)對于F中每一個X-A,構(gòu)成一個關(guān)系模式XA,如果F有有X-A1,X-A2...X-An,

則可以用模式XA1A2...An代替n個模式XA1,XA2...XAn;

(4)w分解結(jié)束,輸入P。

這個過程的重點是這一句“對于F中每一個X-A,構(gòu)成一個關(guān)系模式XA”,這使我們的分解十

分容易,然后依據(jù)合并律(合并律:如果X-Y和X-Z成立,那么X-YZ成立)將有關(guān)模式合并即得

到所需3NF模式。

7.模式設(shè)計方法的原則

關(guān)系模式R相對于函數(shù)依賴集F分解成數(shù)據(jù)庫模式P={R1,R2...Rk},一般具有下面四項

特性:

P中每個關(guān)系模式Ri上應(yīng)具有某種范式性質(zhì)(3NF或BCNF)

無損聯(lián)接性。

保持函數(shù)依賴集。

最小性,即P中模式個數(shù)應(yīng)最少且模式中屬性總數(shù)應(yīng)最少。

一個好的模式設(shè)計方法應(yīng)符合下列三條原則:

表達(dá)性

分離性

最小冗余性

8.多值依賴與第四范式(4NF)

例:

學(xué)校中某一門課程由多個教師講授,他們使用相同的一套參考書。

關(guān)系模式Teaching(C,T,B)

課程C、教師T和參考書B

多值依賴與第四范式

TeachingSBCNF:

Teach具有唯一候選碼(C,T,B),即全碼

Teaching模式中存在的問題

(1)數(shù)據(jù)冗余度大:有多少名任課教師,參考書就要存儲多少次。

(2)插入操作復(fù)雜:當(dāng)某一課程增加一名任課教師時,該課程有多少本參照書,就必須插入多少個元

組。

例如物理課增加一名教師劉關(guān),需要插入兩個元組:

(物理,劉關(guān),普通物理學(xué))

(物理,劉關(guān),光學(xué)原理)

(3)刪除操作復(fù)雜:某一門課要去掉一本參考書,該課程有多少名教師,就必須刪除多少個元組。

(4)修改操作復(fù)雜:某一門課要修改一本參考書,該課程有多少名教師,就必須修改多少個元

組。

產(chǎn)生原因

存在多值依賴。

1)多值依賴

設(shè)R(U)是一個屬性集U上的一個關(guān)系模式,X、Y和Z是U的子集,并且Z=U—X—Y,多值

依賴X--Y成立當(dāng)且僅當(dāng)對R的任一關(guān)系r,r在(X,Z)上的每個值對應(yīng)一組Y的值,這組值僅

僅決定于X值而與Z值無關(guān)。

例Teaching(C,T,B)

對于C的每一個值,T有一組值與之對應(yīng),而不論B取何值。

2)第四范式(4NF)

關(guān)系模式R<U,F>G1NF,如果對于R的每個非平凡多值依賴Xf—Y(Y土X),X都含有候選碼,

則RG4NF。

如果Re4NF,則ReBCNF

不允許有非平凡且非函數(shù)依賴的多值依賴

允許的是函數(shù)依賴(是非平凡多值依賴)

第四章關(guān)系運算

學(xué)習(xí)目的與要求:

本章總的要求是:深刻理解關(guān)系模型的運算理論,了解查詢優(yōu)化的意義和啟發(fā)式優(yōu)化算法。

本章的重點是關(guān)系代數(shù)運算,應(yīng)熟練掌握。關(guān)系演算是本章的難點。

考核知識點和考核要求

關(guān)系模型有三個重要組成部分:

1)數(shù)據(jù)結(jié)構(gòu)

2)數(shù)據(jù)操縱

3)數(shù)據(jù)完整性規(guī)則

關(guān)系查詢語言根據(jù)其理論基礎(chǔ)的不同分成兩類:

1)關(guān)系代數(shù)語言

2)關(guān)系演算語言

L關(guān)系代數(shù)的五個基本操作:并、差、笛卡爾積、投影和選擇。

并(U):兩個關(guān)系需有相同的關(guān)系模式,并的對象是元組,由兩個關(guān)系所有元組構(gòu)成。

差(-):同樣,兩個關(guān)系有相同的模式,R和S的差是由屬于R但不屬于S的元組構(gòu)成的集合。

笛卡兒積(X):對于兩個關(guān)系作運算,歹I」:(n+m)列的元組的集合,元組的前n列是關(guān)系R

的一個元組后m列是關(guān)系S的一個元組,

行:klXk2個元組。

投影(。):對關(guān)系進(jìn)行垂直分割,消去某些列,并重新安排列的順序。

選擇(口):根據(jù)某些條件關(guān)系作水平分割,即選擇符合條件的元組。

2.關(guān)系代數(shù)的四個組合操作:交、聯(lián)接、自然聯(lián)接和除法

交(Cl):R和S的交是由既屬于R又屬于S的元組構(gòu)成的集合。

聯(lián)接包括0聯(lián)接和F聯(lián)接,是選擇RXS中滿足i0(r+j)或F條件的元組構(gòu)成的集合,特別注

意等值聯(lián)接(9為等號“=”)。

自然聯(lián)接(R|X|S):在RXS中,選擇R和S公共屬性值均相等的元組,并去掉RXS中重復(fù)的公

共屬性列。如果兩個關(guān)系沒有公共屬性,則自然聯(lián)接就轉(zhuǎn)化為笛卡爾積。

除法(土):首先除法的結(jié)果中元數(shù)為兩個元數(shù)的差,可以直接用觀察法來得到結(jié)果,把S看作

一個塊,拿到R中去和相同屬性集中的元組作比較,如果有相同的塊,且除去此塊后留下的相應(yīng)元

組均相同,那么可以得到一條元組,所有這些元組的集合就是除法的結(jié)果。

對于上述的五個基本操作和組合操作,應(yīng)當(dāng)從實際運算方面進(jìn)行理解和運用,對其形式定義可不必

深究。注意課本上的例子。

關(guān)系代數(shù)運算的三個要素:

運算對象:關(guān)系

運算結(jié)果:關(guān)系

運算符:四類

集合運算符

將關(guān)系看成元組的集合

運算是從關(guān)系的“水平”方向即行的角度來進(jìn)行

專門的關(guān)系運算符

不僅涉及行而且涉及列

算術(shù)比較符

輔助專門的關(guān)系運算符進(jìn)行操作

邏輯運算符

輔助專門的關(guān)系運算符進(jìn)行操作

廣義笛卡爾積(ExtendedCartesianProduct)

R

n目關(guān)系,kl個元組

S

m目關(guān)系,k2個元組

RXS

列:(n+m)列的元組的集合

元組的前n列是關(guān)系R的一個元組

后m列是關(guān)系S的一個元組

行:klXk2個元組

RXS={trts|treRAtseS}

選擇(Selection)

1)選擇又稱為限制(Restriction)

2)選擇運算符的含義

在關(guān)系R中選擇滿足給定條件的諸元組

oF(R)={t|teRAF(t)='真'}

F:選擇條件,是一個邏輯表達(dá)式,基本形式為:

J(]XI0Yl[)][63(]X20Y2[)]]???

0:比較運算符(>,<?W,=或〈>)

XI,Y1等:屬性名、常量、簡單函數(shù);屬性名也可以用它的序號來代替;

0:邏輯運算符(八或V)

[]:表示任選項

-:表示上述格式可以重復(fù)下去

3)選擇運算是從行的角度進(jìn)行的運算

4)舉例

設(shè)有一個學(xué)生-課程數(shù)據(jù)庫,包括學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC。

[例1]查詢信息系(IS系)全體學(xué)生

oSdept='IS'(Student)

或。5='IS'(Student)

結(jié)果:

[例2]查詢年齡小于20歲的學(xué)生

oSage<20(Student)

或。4<20(Student)

結(jié)果:

投影(Projection)

1)投影運算符的含義

從R中選擇出若干屬性列組成新的關(guān)系

JtA(R)={t[A]|teR}

A:R中的屬性列

2)投影操作主要是從列的角度進(jìn)行運算

但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行)

3)舉例

[例3]查詢學(xué)生的姓名和所在系

即求Student關(guān)系上學(xué)生姓名和所在系兩個屬性上的投影

JtSname,Sdept(Student)

或“2,5(Student)

結(jié)果:

[例4]查詢學(xué)生關(guān)系Student中都有哪些系

JtSdept(Student)

結(jié)果:

連接(Join)

1)連接也稱為0連接

2)連接運算的含義

從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組

RS={|treRAtseSAtr[A]0ts[B]}

A和B:分別為R和S上度數(shù)相等且可比的屬性組

0:比較運算符

連接運算從R和S的廣義笛卡爾積RXS中選取(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B

屬性組上值滿足比較關(guān)系的元組。

3)兩類常用連接運算

等值連接(equijoin)

什么是等值連接

0為“=”的連接運算稱為等值連接

等值連接的含義

從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:

RS={|treRAtseSAtr[A]=ts[B]}

自然連接(Naturaljoin)

什么是自然連接

自然連接是一種特殊的等值連接

兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組

在結(jié)果中把重復(fù)的屬性列去掉

自然連接的含義

更多優(yōu)質(zhì)自考資料盡在百度貼吧自考樂園俱樂部

”加入…歡迎?交流…止不住的驚喜等著你....

R和S具有相同的屬性組B

RS={|treRAtseSAtr[B]=ts[B]}

4)一般的連接操作是從行的角度進(jìn)行運算。

自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進(jìn)行運算。

5)舉例

[例5]

外連接

例:列出老師的有關(guān)信息,包括姓名、工資、所教授的課程

LIP#,PN,SAL,Ctt,CN((PR0F)PCC)

外連接

為避免自然連接時因失配而發(fā)生的信息丟失,可以假定往參與連接的一方表中附加一個取值全

為空值的行,它和參與連接的另一方表中的任何一個未匹配上的元組都能匹配,稱之為外連接

外連接=自然連接+失配的元組

外連接的形式:左外連接、右外連接、全外連接

重要內(nèi)容分析

1.(1)一般規(guī)則

對于只涉及到選擇、投影、聯(lián)接的查詢可用下列表達(dá)式表示:

Ji…(0...(RXS))或者”…(?!璉RK))

對于否定的操作,一般要用差操作表示,例如“檢索不學(xué)C2課的學(xué)生姓名”。

對于檢索具有“全部”特征的操作,一般要用除法操作表示,例如“檢索學(xué)習(xí)全部課程的學(xué)生

姓名”。

(2)“檢索不學(xué)C2課的學(xué)生姓名”,決不能用下式表示:

nSNAME,AGE(oC#W'C2'(S?SC))

一定要用“差”的形式:

orSNAME,AGE(S)-nSNAME,AGE(。C#='C2'(SKC))

(3)“檢索學(xué)習(xí)全部課程的學(xué)生學(xué)號”,要用nS#,C#(SC)+nC#(C)表示,

而不能寫成滅S#(SC-?nC#(O)形式。這是因為一個學(xué)生學(xué)的課程的成績可能是不一樣的。

2.非過程性語言與過程性語言的區(qū)別

編程時必須指出“干什么”及“怎么干”的語言,稱為過程性語言;編程時只須指出“干什

么",不必指出“怎么干”的語言,稱為非過程性語言。

把數(shù)理邏輯的謂詞演算引入關(guān)系運算中,就可得到以關(guān)系演算為基礎(chǔ)的運算。關(guān)系演算分為元組關(guān)

系演算或域關(guān)系演算,前者以元組為變量,后者以域為變量。

元組關(guān)系演算

形式化定義

{tIp(t)}

表示所有使謂詞P為真的元組集合

t為元組變量

如果元組變量前有“全稱”(V)或“存在"T)量詞,則稱其為約束變量,否則稱為自由變量。

P是公式

由原子公式和運算符組成

原子公式

sGR

s是關(guān)系R中的一個元組

s[x]0u[y]

s[x]與u[y]為元組分量,他們之間滿足比較關(guān)系。

s[x]0C

分量s[x]與常量C之間滿足比較關(guān)系。

公式的遞歸定義

原子公式是公式

如果P是公式,那么rP也是公式

如果Pl,P2是公式,則PlAP2,PlVP2,PlnP2也是公式

如果P(果是公式,R是關(guān)系,則玉eR(P(t))和VteR(P(t))也是公式。

公式的等價性

PlAP2<=>-I(-1Plv-IP2)

VteR(P(t))o-i3teR(-1P(t))

Pl=P2=-iPlvP2

表達(dá)式的安全性

元組關(guān)系演算有可能會產(chǎn)生無限關(guān)系,這樣的表達(dá)式是不安全的。

如{t1(twR)},求所有不在R中的元組

引入公式P的域概念,用dom(P)表示

dom(P)=顯式出現(xiàn)在P中的值+在P中出現(xiàn)的關(guān)系的元組中出現(xiàn)的值(不必是最小集)

如dom(t-|(teR))是區(qū)中出現(xiàn)的所有值的集合

如果出現(xiàn)在表達(dá)式{t|P(t)}結(jié)果中的所有值均來自dom(P),則稱{t|P(t)}是安全的。

示例:

找出工資在800元以上的老師

{t|tePROFAt[SAL]>800}

找出工資在800元以上的老師的姓名

{t3sGPROF(t[PNAME]=s[PNAME]AS[SAL]>800)}

給出計算機(jī)系老師的姓名

{t|3UGDEPT(u[DNAME]=“計算機(jī)系”A3sePR0F(s[DNO]=u[DN0]At[PNAME]=

s[PNAME]))}

求選修了全部課程的學(xué)生號

{t|VueC(BseSC(s[CNO]=u[CN0]At[SNO]=s[SN0]))}

求選修了張軍同學(xué)所選修的全部課程的學(xué)生姓名

V課程,張軍選之=>所求同學(xué)選之

{t|VUGC(3seSCASWGS(s[CN0]=u[CNO]AW[SN0]=s[SN0]AW[SNAME]="張軍”))

元組關(guān)系演算與關(guān)系代數(shù)的等價性

投影

TIA(R)={t|3seR(s[A]=t[A])}

選擇

oF(A)(R)={t|teRAF(t[A])}

廣義笛卡兒積

R(A)xS(B)={t|3ueR3seS(t[A]=u[A]A

t[B]=s[B])}

RuS={t|teRvteS}

R-S={t|teRA-]teS}

域關(guān)系演算

形式化定義

{<xl,x2,?,,,xn>|P(xl,x2,xn)}

xi代表域變量,P為由原子構(gòu)成的公式

原子公式

<xl,x2,,,,,xn>GR

xi是域變量或域常量

xey

域變量x與y之間滿足比較關(guān)系0

x0c

域變量X與常量C之間滿足比較關(guān)系0

示例:

找出工資在800元以上的老師

{<a,b,c,d,e>|<a,b,c,d,e>ePROFAe>800}

找出工資在800元以上的老師的姓名

{<b>|3a,c,d,e(<a,b,c,d,e>ePROFAe>800)}

目的

在關(guān)系代數(shù)中找一種好的操作步驟,既省空間,查詢效率又比較高。

在關(guān)系代數(shù)中,笛卡兒積和聯(lián)結(jié)運算是最費時間和空間的,在關(guān)系很大的時候,必須要考慮怎

樣做才能合理的安排,做到省時省力。

一個例子

設(shè)關(guān)系R和S都是二元關(guān)系,屬性名分別是A、B和C、D。那么如下查詢:

E1=JIA(oB=CAD='99'(RXS))

也可以是

E2=nA(oB=C(RX。D='99'(S))

或E3=nA(RoD='99'(S))

這三個代數(shù)表達(dá)式的等價的,但是執(zhí)行的效率不一樣。

第一種:先做笛卡兒積。假設(shè)每個物理塊可以存儲R的B1個元組,或者S的B2個元組,R關(guān)

系中有nl個元組,S關(guān)系中有n2個元組,內(nèi)存每次只能裝載m塊數(shù)據(jù)。

在做聯(lián)接的時候先把R的第一個m-1塊數(shù)據(jù)裝入內(nèi)存,然后逐個調(diào)入S中的數(shù)據(jù)塊;

R中的每個數(shù)據(jù)塊只要進(jìn)入內(nèi)存一次,總共需要裝入的塊數(shù)示nl/Bl;

S中的每個數(shù)據(jù)塊需要進(jìn)入內(nèi)存(nl/Bl)/(m-1)次,總共需要裝入的塊數(shù)是:

(nl/Bl)(1/(m-1))(n2/B2)

這三個代數(shù)表達(dá)式的等價的,但是執(zhí)行的效率不一樣。

執(zhí)行RXS的總裝入塊數(shù)是(nl/Bl)(l+n2/(m-1)/B2)

若nl=n2=10000,B1=B2=5,m=100,那么總的裝入塊數(shù)是42400,若每秒裝入20塊,需要35分

鐘。

耗費時間長,在實際使用中不采用。

這三個代數(shù)表達(dá)式的等價的,但是執(zhí)行的效率不一樣。

第二種和第三種:先做了選擇,裝入的塊數(shù)為nl/Bl+n2/B2,大約需要裝入4000塊,耗費時間

3分多鐘。

對于S來說,元組并不是全部進(jìn)入內(nèi)存,而且只是進(jìn)入一次,所以速度快。

1.優(yōu)化的一般策略

我們所說的優(yōu)化和存儲沒有關(guān)系,主要是如何來安排操作的順序,節(jié)省時間和空間的消費優(yōu)化

的一般技術(shù):

在關(guān)系代數(shù)表達(dá)式中盡可能早地執(zhí)行選擇操作。

把笛卡兒積和其后的選擇操作合并成F聯(lián)接運算。

同時計算一連串的選擇和投影操作,避免分開運算造成多次掃描文件。

2.關(guān)系代數(shù)表達(dá)式的優(yōu)化算法

對一個關(guān)系代數(shù)表達(dá)式進(jìn)行語法分析可以得

到一棵語法樹,葉子式關(guān)系,非葉子結(jié)點式關(guān)

系代數(shù)操作。

輸入:一個關(guān)系代數(shù)表達(dá)式的語法樹。

輸出:計算表達(dá)式的一個優(yōu)化程序。

方法:依次執(zhí)行下面的每一步。

(1)使用等價變換規(guī)則4將每個形為。FIA…AFn(E)的子表達(dá)式轉(zhuǎn)換成串接形式:

oF1(??,(oFn(E))…)

(2)對每個選擇操作,盡可能把選擇操作移近樹的葉端(盡可能早的實行選擇操作)。

(3)對每個投影操作,盡可能把投影操作移近樹的葉端。

(4)把選擇和投影合并成單個選擇、單個投影或一個選擇后跟一個投影。

(5)將上述步驟得到的語法樹的內(nèi)結(jié)點分組。

(6)生成一個序列,每一組結(jié)點的計算是序列中的一步。

見課本例子。

第五章SQL語言

學(xué)習(xí)目的與要求:

SQL語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,是本課程的一個重點。本章總的要求是:全面掌握,深刻

理解。熟練應(yīng)用。

要求掌握的技能是:SQL定義語句、嵌入式SQL語句的應(yīng)用。

要求熟練掌握的技能是:SQL查詢語句、視圖、SQL更新語句的應(yīng)用。

方法:多做題,多上機(jī)實踐。

考核知識點與考試要求

更多優(yōu)質(zhì)自考資料盡在百度貼吧自考樂園俱樂部

()歡迎”加入…歡迎”交流…止不住的驚喜等著你....

SQL數(shù)據(jù)庫的體系結(jié)構(gòu)也是三級結(jié)構(gòu),但術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同,在SQL中,關(guān)系模式

稱為“基本表”,存儲模式稱為“存儲文件",子模式稱為"視圖",元組稱"行",屬性稱"列"。

SQL數(shù)據(jù)庫體系的結(jié)構(gòu)要點如下:更多優(yōu)質(zhì)自考資料盡在百度貼吧自考樂園俱樂部

()歡迎”加入…歡迎”交流…止不住的驚喜等著你....

(D一個SQL數(shù)據(jù)庫是表的匯集。

(2)一個SQL表由行集構(gòu)成,行是列的序列,每列對應(yīng)一個數(shù)據(jù)項。

(3)表或者是基本表,或者是視圖?;颈硎菍嶋H存儲在數(shù)據(jù)庫中的表,視圖由是由若干基本表

或其他視圖構(gòu)成的表的定義。

(4)一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。存儲文

件與物理文件對應(yīng)。

(5)用戶可以用SQL語句對表進(jìn)行操作,包括視圖和基本表。

(6)SQL的用戶可以是應(yīng)用程序,也可以是終端用戶。

SQL由四部分組成:

(D數(shù)據(jù)定義:SQLDDLo定義SQL模式,基本表、視圖和索引。

(2)數(shù)據(jù)操縱:SQLDMLo包括數(shù)據(jù)查詢和數(shù)據(jù)更新(增、刪、改)。

(3)數(shù)據(jù)控制:包括對基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務(wù)控制等。

(4)嵌入式SQL的使用規(guī)定。

(1)SQL具有十分靈活和強大的查詢功能。

(2)SQL不是一個應(yīng)用開發(fā)語言,它只提供對數(shù)據(jù)庫的操作功能,不能完成屏幕控制、菜單管

理、報表生成等功能。

(3)SQL是國際性標(biāo)準(zhǔn)語言,有利于各種數(shù)據(jù)庫之間交換數(shù)據(jù),有利于程序的移植,有利于實

現(xiàn)高度的數(shù)據(jù)獨立性,有利于實現(xiàn)標(biāo)準(zhǔn)化。

(4)SQL的詞匯不多,完成核心功能只用了9個英語動詞,它的語法結(jié)構(gòu)接近英語,因此容易

學(xué)習(xí)和使用。

SQL模式的創(chuàng)建可簡單理解為建立一個數(shù)據(jù)庫,定義一個存儲空間,其句法是:

CREATESCHEMA〈模式名>AUTHORIZATION〈用戶名〉

撤消SQL模式的句法為:

DROPSCHEMA〈模式名>[CASCADE|RESTRICT]

方括號中的選項參數(shù)CASCADE表示連鎖方式,執(zhí)行時將模式下所有基本表、視圖、索引等元素

全部撤消。RESTRICT表示約束式,執(zhí)行時必須在SQL模式中沒有任何下屬元素時方可撤消模式。

數(shù)值型:包括integer^smallint>real、doubleprecision、float(n),numeric(p,d)

字符串型:char(n)、varchar(n),前者是定長,后者為變長串

位串型:bit(n),bitvarying(n),同上。

時間型:date、time。

3.基本表的創(chuàng)建、修改和撤消

基本表的創(chuàng)建:(可理解為建立表結(jié)構(gòu))

GREATTABLESQL模式名.基本表名

(列名,類型,

完整性約束.??)

完整性約束包括主鍵子句(PRIMARYKEY)、檢查子句(CHECK)和外鍵子句(FOREIGNKEY)?

基本表結(jié)構(gòu)的修改

ALTERTABLE基本表名ADD/DROP(增加/刪除)列名類型名(增加時寫出)

刪除時有子句[CASCADE〔RESTRICT],前者為連鎖刪除,后者為約束刪除,即沒有對本列的任何

引用時才能刪除。

基本表的撤消

DROPTABLE基本表名[CASCADE|RESTRICT]

4.索引的創(chuàng)建和撤消

創(chuàng)建:CREATE[UNIQUE]INDEX索引名ON基本表名(列名表[ASC|DESfi])

撤消:DROPINDEX索引名

總結(jié):凡創(chuàng)建都用CREATE,刪除都用DROP,改變用ALTER,再跟類型和名字,附加子句很容

易了。

SELECT列名表(逗號隔開)FROM基本表或視圖序列WHERE條件表達(dá)式

在這里,重點要掌握條件表達(dá)式中各種運算符的應(yīng)用,如=,>,<,?等算術(shù)比較運算符、邏輯運

算符AND、OR,NOT、集合成員資格運算符:IN,NOTIN,以及嵌套的SELECT語句的用法要特

別注意理解。針對課本的例題和課后習(xí)題進(jìn)行掌握。

在查詢時,SELECT語句可以有多種寫法,如聯(lián)接查詢、嵌套查詢和使用存在量詞的嵌套查詢

等。最好都掌握,但是起碼應(yīng)能寫出一種正確的查詢語句。

SELECT列名表(逗號隔開)

FROM基本表或視圖序列

[WHERE條件表達(dá)式](此為和條件子句)

[GROUPBY列名序列](分組子句)

[HAVING組條件表達(dá)式](組條件子句)

[ORDERBY列名[ASC|DESC]..](排序子句)

這段關(guān)于完整句法的內(nèi)容能夠理解也就問題不大了。

這一段內(nèi)容主要是對SELECT語句進(jìn)一步使用進(jìn)行的深入學(xué)習(xí),領(lǐng)會下列各種限定的使用目的

和方法。

要求輸出表格中不出現(xiàn)重復(fù)元組,則在SELECT后加一DISTINCT

SELECT子句中允許出現(xiàn)加減乘除及列名,常數(shù)的算術(shù)表達(dá)式

WHERE子句中可以用BETWEEN...AND...來限定一個值的范圍

同一個基本表在SELECT語句中多次引用時可用AS來增加別名

WHERE子句中字符串匹配用LIKE和兩個通配符,%和下劃線.

查詢結(jié)果的結(jié)構(gòu)完全一致時可將兩個查詢進(jìn)行并(UNION)交(INTERSECT)差(EXCPT)操作

查詢空值操作不是用='null',而是用ISNULL來測試.

集合成員資格比較用IN/NOTIN,集合成員算術(shù)比較用元組0SOME/ALL

可以用子查詢結(jié)果取名(表名(列名序列))來作為導(dǎo)出表使用

基本表的自然聯(lián)接操作是用NATURALINNERJOIN來實現(xiàn)的。

1.數(shù)據(jù)插入:

INSERTINTO基本表名(列名表)

VALUES(元組值)

INSERTINTO基本表名(列名表)

SELECT查詢語句

其中元組值可以連續(xù)插入?用查詢語句可以按要求插入所需數(shù)據(jù)。

2.數(shù)據(jù)刪除:

DELETEFROM基本表名[WHERE條件表達(dá)式]

3.數(shù)據(jù)修改:

UPDATE基本表名

SET列名=值表達(dá)式,[列名=值表達(dá)式...]

[WHERE條件表達(dá)式]

1.視圖的創(chuàng)建和撤消

創(chuàng)建:CREATEVIEW視圖名(列名表)ASSELECT查詢語句

撤消:DROPVIEW視圖名

2.視圖的操作

查詢與關(guān)系中一致

更新與關(guān)系不同

如果視圖是從多個使用聯(lián)接操作導(dǎo)出的,不允許對此視圖更新

如果在導(dǎo)出視圖的過程中,使用了分組和聚合函數(shù),不允許對此視圖更新。

如果視圖是從單個關(guān)系使用選擇、投影操作導(dǎo)出的,并且包含了關(guān)系的主健或某個候選健,稱

此視圖為“行列子集視圖”,允許對此視圖更新。

CREATEVIEWSMAIL

ASSELECTStt,SNAME,AGE

FROMS

WHERESEX='M'

INSERTINTOS_MALE

VALUES('S28','WU',18)

INSERTINTOS

VALUES('S28','WU',18,'M')

相同

3.視圖的優(yōu)點

使用視圖的優(yōu)點:

視圖提供了邏輯數(shù)據(jù)的獨立性

簡化了用戶觀點

用戶只需關(guān)心視圖的內(nèi)容,而不必關(guān)心構(gòu)成視圖的若干關(guān)系的聯(lián)結(jié)、投影操作。

能夠?qū)?shù)據(jù)庫的訪問限制在一定范圍內(nèi),有利于數(shù)據(jù)安全保護(hù)功能。

可針對不同的用戶定義不同的視圖,在視圖種只出現(xiàn)用戶需要的數(shù)據(jù),系統(tǒng)提供視圖讓用戶使

用。

交互式

嵌入式

為什么要引入嵌入式SQL

SQL語言是非過程性語言

事務(wù)處理應(yīng)用需要高級語言

這兩種方式細(xì)節(jié)上有差別,在程序設(shè)計的環(huán)境下,SQL語句要做某些必要的擴(kuò)充。

2.嵌入式SQL的一般形式

為了區(qū)分SQL語句與主語言語句,需要:

前綴:EXECSQL

結(jié)束標(biāo)志:隨主語言的不同而不同

以C為主語言的嵌入式SQL語句的一般形式

EXECSQL<SQL語句》;

例:EXECSQLDROPTABLEStudent;

以COBOL作為主語言的嵌入式SQL語句的一般形式

EXECSQL<SQL語句>END-EXEC

例:EXECSQLDROPTABLEStudentEND-EXEC

預(yù)編譯

修改和擴(kuò)充主語言使之能處理SQL語句。

4.嵌入式SQL語句與主語言之間的通信

將SQL嵌入到高級語言中混合編程,程序中會含

有兩種不同計算模型的語句

SQL語句

描述性的面向集合的語句

負(fù)責(zé)操縱數(shù)據(jù)庫

高級語言語句

過程性的面向記錄的語句

負(fù)責(zé)控制程序流程

5.工作單元之間的通信方式

1)SQL通信區(qū)

向主語言傳遞SQL語句的執(zhí)行狀態(tài)信息

主語言能夠據(jù)此控制程序流程

2)共享變量

主語言向SQL語句提供參數(shù)

將SQL語句查詢數(shù)據(jù)庫的結(jié)果交主語言進(jìn)一步處理

3)游標(biāo)

解決集合性操作語言與過程性操作語言的不匹配

6.共享變量

溫馨提示

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

評論

0/150

提交評論