Trackback: http://51zk.csai.cn/sjkyl
第一章 數(shù)據(jù)庫概論
本章屬于基礎(chǔ)知識,主要是對一些概念的理解和記憶。沒有難點(diǎn),相對的重點(diǎn)在于ER模型的設(shè)計(jì)和關(guān)系模型的掌握。
一、數(shù)據(jù)管理技術(shù)的發(fā)展階段( 識記 )
數(shù)據(jù)管理技術(shù)共經(jīng)歷了三個階段: 人工管理階段 、 文件系統(tǒng)階段 、 數(shù)據(jù)庫階段 :
1、人工管理階段的特點(diǎn):
(1)數(shù)據(jù)不保存在機(jī)器中
(2)沒有專用軟件對數(shù)據(jù)進(jìn)行管理
(3)只有程序的概念,沒有文件的概念。
2、文件系統(tǒng)階段的特點(diǎn)與缺陷:
(1)數(shù)據(jù)可長期保存在磁盤上。
(2)數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)有了區(qū)別
(3)文件組織呈現(xiàn)多樣化
(4)數(shù)據(jù)不再屬于某個特定程序,可以重復(fù)使用。
其缺陷是:
數(shù)據(jù)冗余性
數(shù)據(jù)不一致性
數(shù)據(jù)聯(lián)系弱
3、數(shù)據(jù)庫階段的特點(diǎn)
采用復(fù)雜的數(shù)據(jù)模型表示數(shù)據(jù)結(jié)構(gòu)
有較高的數(shù)據(jù)獨(dú)立性(數(shù)據(jù)結(jié)構(gòu)分成用戶的邏輯結(jié)構(gòu)、整體邏輯結(jié)構(gòu)和物理結(jié)構(gòu)三級)
數(shù)據(jù)庫系統(tǒng)為用戶提供方便的用戶接口,可以使用查詢語言、終端命令或程序方式操作數(shù)據(jù)庫。
系統(tǒng)提供了四個方面的數(shù)據(jù)控制功能:數(shù)據(jù)庫的恢復(fù)、并發(fā)控制、數(shù)據(jù)完整性和數(shù)據(jù)安全性。
對數(shù)據(jù)的操作不一定以記錄為單位,還可以數(shù)據(jù)項(xiàng)為單位。
數(shù)據(jù)庫技術(shù)中的四個名詞:DB、DBMS、DBS、數(shù)據(jù)庫技術(shù)。其概念是不同的,要分清。
DB :數(shù)據(jù)庫(Database),DB是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。
DBMS :
數(shù)據(jù)庫管理系統(tǒng)(Database Management
System),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)(Database System),DBS是實(shí)現(xiàn)有組織地、動態(tài)地存儲大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問的計(jì)算機(jī)軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)。
數(shù)據(jù)庫技術(shù) :是一門研究數(shù)據(jù)庫結(jié)構(gòu)、存儲、管理和使用的軟件學(xué)科。
二、數(shù)據(jù)描述的術(shù)語( 領(lǐng)會 )
1、數(shù)據(jù)描述的三個領(lǐng)域:現(xiàn)實(shí)世界、信息世界和機(jī)器世界。
信息世界中的幾個概念: 實(shí)體 (即客觀存在可以相互區(qū)別的事物)、 實(shí)體集 (同類實(shí)體的集合)、屬性(實(shí)體的特性)、 實(shí)體標(biāo)識符 (唯一標(biāo)識實(shí)體的屬性(集))。
機(jī)器世界中的四個概念: 字段、記錄、文件、鍵 (關(guān)鍵碼)。
2、數(shù)據(jù)描述的兩種形式: 物理描述 和 邏輯描述 。前者是指數(shù)據(jù)在存儲設(shè)備上的存取方式,后者是指程序員或用戶以用以操作的數(shù)據(jù)形式。
3、物理描述用到的術(shù)語有:位、字節(jié)、字、塊、桶、卷
4、數(shù)據(jù)聯(lián)系的描述:
1:1聯(lián)系 :如果實(shí)體集E1中的每個實(shí)體最多只能和實(shí)體集E2中的一個實(shí)體有聯(lián)系,反之亦然,好么實(shí)體集E1對E2的聯(lián)系稱為“一對一聯(lián)系”,記為“1:1”。
1:N聯(lián)系 :如果實(shí)體集E1中每個實(shí)體與實(shí)體集E2中任意個(零個或多個)實(shí)體有聯(lián)系,而E2中每個實(shí)體至多和E1中的一個實(shí)體有聯(lián)系,那么E1對E2的聯(lián)系是“一對多聯(lián)系”,記為“1:N”。
M:N聯(lián)系 :如果實(shí)體集E1中每個實(shí)體與實(shí)體集E2中任意個(零個或多個)實(shí)體有聯(lián)系,反之亦然,那么E1對E2的聯(lián)系是“多對多聯(lián)系”,記為“M:N”。
三、數(shù)據(jù)模型
1、 數(shù)據(jù)模型 的概念( 領(lǐng)會 ):
表示實(shí)體類型及實(shí)體類型間聯(lián)系的模型稱為“數(shù)據(jù)模型”。它可分為兩種類型: 概念數(shù)據(jù)模型 和 結(jié)構(gòu)數(shù)據(jù)模型 。
2、 概念數(shù)據(jù)模型( 簡單應(yīng)用 ) :
它是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在系統(tǒng)中的表示,只是用來描述某個特定組織所關(guān)心的信息結(jié)構(gòu)。 ( 應(yīng)當(dāng)掌握教材例1.1,設(shè)計(jì)簡單的ER模型 )
3、 結(jié)構(gòu)數(shù)據(jù)模型 :
它是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),是現(xiàn)實(shí)世界的第二層抽象。這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),所以稱為“結(jié)構(gòu)數(shù)據(jù)模型”。結(jié)構(gòu)數(shù)據(jù)模型應(yīng)包含:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)完整性約束三部分。它主要有: 層次 、 網(wǎng)狀 、 關(guān)系 三種模型。
層次模型( 識記 ) :用樹型結(jié)構(gòu)表示實(shí)體間聯(lián)系的數(shù)據(jù)模型
網(wǎng)狀模型 ( 識記 ):用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。
關(guān)系模型( 領(lǐng)會 ):是由若干個關(guān)系模式組成的集合,其主要特征是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。
4、面向?qū)ο竽P?識記):
通過對象和類的概念來建立的數(shù)據(jù)庫模型,是面向?qū)ο蠹夹g(shù)與數(shù)據(jù)庫技術(shù)結(jié)合的產(chǎn)物,本節(jié)了解一下即可。
四、數(shù)據(jù)庫的體系結(jié)構(gòu)( 領(lǐng)會 )
1、三級結(jié)構(gòu)模式:數(shù)據(jù)庫的體系結(jié)構(gòu)分為三級:內(nèi)部級、概念級和外部級:
外部級 :單個用戶所能看到的數(shù)據(jù)特性,稱外模式。
概念級 :涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖,稱“概念模式”。
內(nèi)部級 :最接近于物理存儲,涉及到實(shí)際數(shù)據(jù)存儲的結(jié)構(gòu),稱“內(nèi)模式”。
2、兩級映象:
模式/內(nèi)模式映象 :用于定義概念模式和內(nèi)模式之間的對應(yīng)性。一般在內(nèi)模式中描述。
外模式/模式映象 :用于定義外模式和概念模式間的對應(yīng)性。一般在外模式中描述。
3.兩級數(shù)據(jù)獨(dú)立性:
物理數(shù)據(jù)獨(dú)立性 :修改內(nèi)模式時盡量不影響概念模式及外模式,則達(dá)到物理數(shù)據(jù)獨(dú)立性。
邏輯數(shù)據(jù)獨(dú)立性 :修改概念模式時盡量不影響外模式和應(yīng)用程序。
4.用戶及用戶界面:這里插一句,數(shù)據(jù)庫模式可以理解為數(shù)據(jù)庫結(jié)構(gòu)。
五、數(shù)據(jù)庫管理系統(tǒng)( DBMS 領(lǐng)會 )
1、DBMS的主要功能:
(1)數(shù)據(jù)庫的定義功能
(2)數(shù)據(jù)庫的操縱功能
(3)數(shù)據(jù)庫的保護(hù)功能
(4)數(shù)據(jù)庫的存儲管理
(5)數(shù)據(jù)庫的維護(hù)功能
(6)數(shù)據(jù)字典
2、DBMS的組成:
由兩大部分組成:查詢處理器和存儲管理器,前者包括DDL編譯器、DML編譯器、嵌入型DML預(yù)編譯器、查詢運(yùn)行核心程序。后者包括授權(quán)和完整性管理器,事務(wù)管理器、文件管理器,緩沖區(qū)管理器。
六、數(shù)據(jù)庫系統(tǒng)(DBS 領(lǐng)會 )
DBS由四部分組成:數(shù)據(jù)庫、硬件、軟件、數(shù)據(jù)庫管理員。
DBS的全局結(jié)構(gòu)及DBS的效益,了解一下。
第二章 關(guān)系模型
本章為次重點(diǎn)章,我們經(jīng)常使用的數(shù)據(jù)庫均采用關(guān)系模型,本章主要介紹了關(guān)系模型的關(guān)系運(yùn)算理論,主要在于對關(guān)系演算運(yùn)算的理解,為后面章節(jié)的SQL作準(zhǔn)備。
一、關(guān)系模型的基本概念( 識記 )
1、關(guān)系模型的基本術(shù)語:
用二維表格 結(jié)構(gòu)表示實(shí)體集、外鍵表示實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為 關(guān)系模型 。
基本術(shù)語有: 字段(屬性)、字段值(屬性值)、記錄(元組)、二維表格(元組集合、關(guān)系或?qū)嵗?。 在這里,括號中的表述為關(guān)系模型中的術(shù)語。它與表格中術(shù)語可以一一對應(yīng)。還有,關(guān)系中屬性個數(shù)稱為元數(shù),元組個數(shù)為基數(shù)。
鍵 :由一個或幾個屬性組成。(注意鍵不一定是唯一的一個屬性)。
超鍵 :在關(guān)系中能唯一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵。(注意,超鍵也是一個屬性集,不一定只是一個屬性)
候選鍵 :不含有多余屬性的超鍵稱為候選鍵。
主鍵 :用戶選作元組標(biāo)識的一個候選鍵為主鍵。
外鍵 :某個關(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的外鍵。
2、關(guān)系模式、關(guān)系子模式和存儲模式
關(guān)系模式 :關(guān)系模式實(shí)際上就是記錄類型。它包括:模式名,屬性名,值域名以及模式的主鍵。關(guān)系模式僅是對數(shù)據(jù)特性的描述。 (這通常在數(shù)據(jù)庫中表現(xiàn)為一個數(shù)據(jù)表的結(jié)構(gòu))
關(guān)系子模式 :就是用戶所用到那部分?jǐn)?shù)據(jù)的描述。
存儲模式 :關(guān)系存儲時的基本組織方式是文件,元組是文件中的記錄。
3、關(guān)系模型的三類完整性規(guī)則
實(shí)體完整性規(guī)則 :要求關(guān)系中組成主鍵的屬性上不能有空值。
參照完整性規(guī)則 :要求不引用不存在的實(shí)體。
用戶定義完整性規(guī)則 :由具體應(yīng)用環(huán)境決定,系統(tǒng)提供定義和檢驗(yàn)這類完整性的機(jī)制。
4、關(guān)系模型的形式定義:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性規(guī)則。
二、關(guān)系代數(shù)運(yùn)算(簡單應(yīng)用)
1、關(guān)系代數(shù)的五個基本操作:并、差、笛卡爾積、投影和選擇。
并 (∪):兩個關(guān)系需有相同的關(guān)系模式,并的對象是元組,由兩個關(guān)系所有元組構(gòu)成。
差 (-):同樣,兩個關(guān)系有相同的模式,R和S的差是由屬于R但不屬于S的元組構(gòu)成的集合。
投影( σ):對關(guān)系進(jìn)行垂直分割,消去某些列,并重新安排列的順序。
選擇 (π):根據(jù)某些條件關(guān)系作水平分割,即選擇符合條件的元組。
2、關(guān)系代數(shù)的四個組合操作:交、聯(lián)接、自然聯(lián)接和除法
交 (∩):R和S的交是由既屬于R又屬于S的元組構(gòu)成的集合。
聯(lián)接 包括θ聯(lián)接和F聯(lián)接,是選擇R×S中滿足iθ(r+j)或F條件的元組構(gòu)成的集合,特別注意 等值聯(lián)接 (θ為等號“=”)。
自然聯(lián)接 (R|X|S):在R×S中,選擇R和S公共屬性值均相等的元組,并去掉R×S中重復(fù)的公共屬性列。如果兩個關(guān)系沒有公共屬性,則自然聯(lián)接就轉(zhuǎn)化為笛卡爾積。
除法
(÷):首先除法的結(jié)果中元數(shù)為兩個元數(shù)的差,以例2.6為例,我們可以直接用觀察法來得到結(jié)果,把S看作一個塊,拿到R中去和相同屬性集中的元組作比
較,如果有相同的塊,且除去此塊后留下的相應(yīng)元組均相同,那么可以得到一條元組,所有這些元組的集合就是除法的結(jié)果。
對于上述的五個基本操作和組合操作,應(yīng)當(dāng)從實(shí)際運(yùn)算方面進(jìn)行理解和運(yùn)用,對其形式定義可不必深究。注意課本上的例子。
3、關(guān)系代數(shù)表達(dá)式及應(yīng)用
在關(guān)系代數(shù)表達(dá)式中,復(fù)合了上述五個基本操作,在給出相應(yīng)的表格(關(guān)系)中,應(yīng)該能夠根據(jù)給出的關(guān)系代數(shù)表達(dá)式計(jì)算關(guān)系值,也要能根據(jù)相應(yīng)查詢要求列出關(guān)系表達(dá)式。
在列關(guān)系表達(dá)式時,通常有以下形式:
π...(σ...(R×S))或者π...(σ...(R|X|S))
首先把查詢涉及到的關(guān)系取來,執(zhí)行笛卡爾積或自然聯(lián)接操作得到一張大的表格,然后對大表格執(zhí)行水平分割(選擇)和垂直分割(投影)操作。但是注意當(dāng)查詢涉及到否定或全部值時,就不能用上述形式,而要用到差或除法操作。
三、關(guān)系演算( 領(lǐng)會 )
關(guān)系演算分為元組關(guān)系演算或域關(guān)系演算,前者以元組為變量,后者以域?yàn)樽兞俊?
元組演算表達(dá)式的一般形式為:{t|P(t)},其含義為:這是一個元組集合,其中的每個元組t(t是元組變量)滿足公式P所規(guī)定的條件。所以在書寫演算表達(dá)式時,應(yīng)該注重理解公式P如何表達(dá)。
域演算表達(dá)式的一般形式為:{t1...tk|P(t1...,tk)},其含義為:這是一個域集合,其中每個域變量的取值關(guān)系滿足公式P所規(guī)定的條件。也是注意公式P的表達(dá)。
以上兩類演算需要一定的離散數(shù)學(xué)基礎(chǔ),如果不能很深刻的掌握,問題也不大,主要應(yīng)看懂表達(dá)式即可,對于給定的表達(dá)式和給定的關(guān)系,應(yīng)當(dāng)能計(jì)算表達(dá)式的結(jié)果(得到一個關(guān)系)
四、查詢優(yōu)化
查詢優(yōu)化的目的就是為了系統(tǒng)在執(zhí)行時既省時間又能提高效率,在關(guān)系代數(shù)運(yùn)算中,通常是先進(jìn)行笛卡爾積或聯(lián)接運(yùn)算,再進(jìn)行選擇和投影,恰當(dāng)?shù)匕才胚x擇、投影和聯(lián)接的順序,就可實(shí)現(xiàn)查詢優(yōu)化。
優(yōu)化的策略主要有以下幾點(diǎn):
(1)在關(guān)系代數(shù)表達(dá)式中盡可能早地執(zhí)行選擇操作(早選擇).
(2)把笛卡爾積和隨后的選擇操作合并成F聯(lián)接運(yùn)算(F聯(lián)接)
(3)同時計(jì)算一連串的選擇和投影操作(同時算)
(4)保留同一子表達(dá)式的結(jié)果
(5)適當(dāng)對關(guān)系文件進(jìn)行預(yù)處理
(6)計(jì)算表達(dá)式之前先估計(jì)一下怎么計(jì)算合算。
以上幾點(diǎn)需要理解。根據(jù)表達(dá)式優(yōu)化的算法步驟對給定表達(dá)式進(jìn)行優(yōu)化。
第三章 關(guān)系數(shù)據(jù)庫SQL語言
本章為重點(diǎn)章,應(yīng)熟悉和掌握SQL的數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新的句法及其應(yīng)用,特別是數(shù)據(jù)查詢的應(yīng)用。結(jié)合上機(jī)操作進(jìn)行理解和掌握。
一、SQL概述。
1、SQL發(fā)展歷程( 識記 )
SQL從1970年美國IBM研究中心的E.F.Codd發(fā)表論文到1974年Boyce和Chamberlin把SQUARE語言改為SEQUEL語
言,到現(xiàn)在還在不斷完善和發(fā)展之中,SQL(結(jié)構(gòu)式查詢語言)雖然名為查詢,但實(shí)際上具有定義、查詢、更新和控制等多種功能。
2、SQL數(shù)據(jù)庫的體系結(jié)構(gòu)( 領(lǐng)會 )
SQL數(shù)據(jù)庫的體系結(jié)構(gòu)也是三級結(jié)構(gòu) ,但術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同,在SQL中,關(guān)系模式稱為" 基本表 ",存儲模式稱為" 存儲文件 ",子模式稱為" 視圖 ",元組稱" 行 ",屬性稱" 列 "。
SQL數(shù)據(jù)庫體系的結(jié)構(gòu)要點(diǎn)如下:
(1)一個SQL數(shù)據(jù)庫是表的匯集。
(2)一個SQL表由行集構(gòu)成,行是列的序列,每列對應(yīng)一個數(shù)據(jù)項(xiàng)。
(3)表或者是基本表,或者是視圖。基本表是實(shí)際存儲在數(shù)據(jù)庫中的表,視圖由是由若干基本表或其他視圖構(gòu)成的表的定義。
(4)一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。存儲文件與物理文件對應(yīng)。
(5)用戶可以用SQL語句對表進(jìn)行操作,包括視圖和基本表。
(6)SQL的用戶可以是應(yīng)用程序,也可以是終端用戶。
3、SQL的組成( 識記 )
SQL由四部分組成:
(1)數(shù)據(jù)定義:SQL DDL。定義SQL模式,基本表、視圖和索引。
(2)數(shù)據(jù)操縱:SQL DML。包括數(shù)據(jù)查詢和數(shù)據(jù)更新(增、刪、改)。
(3)數(shù)據(jù)控制:包括對基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務(wù)控制等。
(4)嵌入式SQL的使用規(guī)定。
二、SQL的數(shù)據(jù)定義( 簡單應(yīng)用 )
1、SQL模式的創(chuàng)建和撤消:
SQL 模式的創(chuàng)建 可簡單理解為建立一個數(shù)據(jù)庫,定義一個存儲空間,其句法是:
CREAT SCHEMA <模式名> AUTHORIZATION <用戶名>
撤消SQL模式的句法為:
DROP SCHEMA <模式名> [ CASCADE | RESTRICT ]
方括號中的選項(xiàng)參數(shù)CASCADE表示連鎖方式,執(zhí)行時將模式下所有基本表、視圖、索引等元素全部撤消。RESTRICT表示約束式,執(zhí)行時必須在SQL模式中沒有任何下屬元素時方可撤消模式。
2、SQL提供的基本數(shù)據(jù)類型
數(shù)值型:包括 integer、smallint、real、double precision 、float(n),numeric(p,d)
字符串型:char(n)、varchar(n),前者是定長,后者為變長串
位串型:bit(n),bit varying(n),同上。
時間型:date、time。
3、基本表的創(chuàng)建、修改和撤消
- 基本表的創(chuàng)建:(可理解為建立表結(jié)構(gòu))
CREAT TABLE SQL 模式名.基本表名
(列名,類型,
……
完整性約束...)
完整性約束包括主鍵子句(PRIMARY KEY)、檢查子句(CHECK)和外鍵子句(Foreign KEY).
- 基本表結(jié)構(gòu)的修改
ALTER TABLE 基本表名 ADD/ DROP (增加/刪除) 列名 類型名(增加時寫出)
刪除時有子句 [CASCADE|RESTRICT],前者為連鎖刪除,后者為約束刪除,即沒有對本列的任何引用時才能刪除。
- 基本表的撤消
DROP TABLE 基本表名 [CASCADE|RESTRICT]
4、視圖的創(chuàng)建和撤消
- 創(chuàng)建: CREAT VIEW 視圖名(列名表) AS SELECT 查詢語句
- 撤消: DROP VIEW 視圖名
5、索引的創(chuàng)建和撤消
- 創(chuàng)建: CREAT [UNIQUE] INDEX 索引名 ON 基本表名(列名表 [ASC|DESC])
- 撤消: DROP INDEX 索引名
總結(jié):凡創(chuàng)建都用 CREAT ,刪除都用 DROP ,改變用 alter ,再跟類型和名字,附加子句很容易了。
三、SQL的數(shù)據(jù)查詢( 綜合應(yīng)用 )
這一段是本章的重點(diǎn)內(nèi)容,應(yīng)該熟練掌握。首先了解基本句法:
1、 SELECT -FROM- WHERE 句型
- SELECT 列名表(逗號隔開) FROM 基本表或視圖序列 WHERE 條件表達(dá)式
在這里,重點(diǎn)要掌握條件表達(dá)式中各種運(yùn)算符的應(yīng)用,如=,>,<,<>等算術(shù)比較運(yùn)算符、邏輯運(yùn)算符 AND、OR、NOT 、集合成員資格運(yùn)算符: IN,NOT IN ,以及嵌套的 SELECT 語句的用法要特別注意理解。 針對課本的例題和課后習(xí)題進(jìn)行掌握。
在查詢時, SELECT 語句可以有多種寫法,如 聯(lián)接查詢、嵌套查詢和使用存在量詞的嵌套查詢 等。最好都掌握,但是起碼應(yīng)能寫出一種正確的查詢語句。
2. SELECT 語句完整的句法:
- SELECT 列名表(逗號隔開)
FROM 基本表或視圖序列
[ WHERE 條件表達(dá)式] (此為和條件子句)
[GROUP BY 列名序列] (分組子句)
[HAVING 組條件表達(dá)式] (組條件子句)
[ORDER BY列名[ASC|DESC]..] (排序子句)
這段關(guān)于完整句法的內(nèi)容能夠理解也就問題不大了。
3、 SELECT 語句中的限定
這一段內(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',而是用 IS NULL來測試。
- 集合成員資格比較用 IN/NOT IN ,集合成員算術(shù)比較用元組θSOME/ALL
- 可以用子查詢結(jié)果取名(表名(列名序列))來作為導(dǎo)出表使用
- 基本表的自然聯(lián)接操作是用 NATURAL INNER JOIN來實(shí)現(xiàn)的。
四、SQL的數(shù)據(jù)更新( 簡單應(yīng)用 )
簡單應(yīng)用就是掌握基本的句型并能套用在一些簡單的查詢要求上。
1、數(shù)據(jù)插入:
INSERT INTO 基本表名(列名表)
valueS (元組值)
或
INSERT INTO 基本表名(列名表)
SELECT 查詢語句
其中元組值可以連續(xù)插入。用查詢語句可以按要求插入所需數(shù)據(jù)。
2、數(shù)據(jù)刪除:
DELETE FROM 基本表名 [ WHERE 條件表達(dá)式]
3、數(shù)據(jù)修改:
UPDATE 基本表名
SET 列名=值表達(dá)式,[列名=值表達(dá)式...]
[ WHERE 條件表達(dá)式]
4、對視圖的更新:
我們知道,對視圖的查詢是和基本表相同的,但是更新操作則受到下列三條規(guī)則的限制:(領(lǐng)會一下)
- 如果視圖是從多個基本表使用聯(lián)接操作導(dǎo)出的,則不允許更新。
- 如果導(dǎo)出的視圖使用了分組和聚合操作,也不允許更新。
- 如果視圖是從單個基本表使用選擇和投影操作導(dǎo)出的,并且包括了基本表的主鍵或某個候選鍵,則可以執(zhí)行操作。(這就相當(dāng)于在基本表上操作)。
這一節(jié)的關(guān)于增刪改的操作要和前面關(guān)于數(shù)據(jù)庫模式、表的增刪改操作進(jìn)行對比學(xué)習(xí),以加深理解。不要忘記上機(jī)實(shí)踐 。
第四章 關(guān)系數(shù)據(jù)庫的模式設(shè)計(jì)
本章的理論性較強(qiáng),學(xué)習(xí)時有無從下手的感覺,在學(xué)習(xí)時應(yīng)多加思考,從概念出發(fā)去理解理論,前后的理論有較強(qiáng)的聯(lián)系,因此要逐個理解,但對于理論的證明等內(nèi)容則不必深究,本章重點(diǎn)是函數(shù)依賴,無損聯(lián)接、保持依賴和范式的概念。
一、關(guān)系模式的設(shè)計(jì)問題( 識記 )
關(guān)系數(shù)據(jù)庫 是以關(guān)系模型為基礎(chǔ)的數(shù)據(jù)庫,它利用關(guān)系來描述現(xiàn)實(shí)世界。一個關(guān)系既可以用來描述一個實(shí)體及其屬性 ,也可以用來描述實(shí)體間的聯(lián)系。關(guān)系實(shí)質(zhì)上就是一張二維表 ,表的 行稱為元組 ,列稱為屬性 。
關(guān)系模式是用來定義關(guān)系的,這里的關(guān)系模式我們可以簡單地理解為一個表的結(jié)構(gòu),一個關(guān)系數(shù)據(jù)庫包含一組關(guān)系,也就是包含一組二維表,這些二維表結(jié)構(gòu)體的集合就構(gòu)成數(shù)據(jù)庫的模式(也可以理解為數(shù)據(jù)庫的結(jié)構(gòu))。
關(guān)系數(shù)據(jù)庫 設(shè)計(jì)理論包括三個方面內(nèi)容: 數(shù)據(jù)依賴 、范式 、模式設(shè)計(jì)方法。核心內(nèi)容是數(shù)據(jù)依賴。
泛關(guān)系模式 :把現(xiàn)實(shí)問題的所有屬性組成一個關(guān)系模式R(U),這個關(guān)系模式就稱為泛關(guān)系模式。
數(shù)據(jù)庫模式 :把泛關(guān)系模式用一組關(guān)系模式的集合ρ來表示時,這個ρ就是數(shù)據(jù)庫模式。
下面我們總結(jié)一下關(guān)系模式的相關(guān)內(nèi)容從"大"到"小"的排列
泛關(guān)系模式→數(shù)據(jù)庫模式→關(guān)系數(shù)據(jù)庫→表結(jié)構(gòu)→關(guān)系模式實(shí)例(表)→記錄(行、列.)
關(guān)系模式的存儲異常: 數(shù)據(jù)冗余 、更 新異常 、 插入異常和刪除異常
二、函數(shù)依賴(FD)
1、函數(shù)依賴的定義 (
領(lǐng)會
):設(shè)有關(guān)系模式R(A1,A2,...An)或簡記為R(U),X,Y是U的子集,r是R的任一具體關(guān)系,如果對r的任意兩個元組t1,t2,由t1
[X]=t2[X]導(dǎo)致t1[Y]=t2[Y],則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為X→Y。X→Y為模式R的一個函數(shù)依賴。
這個定義可以這樣理解 :有一張?jiān)O(shè)計(jì)好的二維表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,這就是說Y函數(shù)依賴于X。
2、函數(shù)依賴的邏輯蘊(yùn)涵 ( 識記 )
設(shè)F是關(guān)系模式R的一個函數(shù)依賴集,X,Y是R的屬性子集,如果從F中的函數(shù)依賴能夠推出X→Y,則稱F邏輯蘊(yùn)涵X→Y,記為F|=X→Y.
而函數(shù)依賴的閉包F + 是指被F邏輯蘊(yùn)涵的函數(shù)依賴的全體構(gòu)成的集合。
3、鍵和FD的關(guān)系 ( 領(lǐng)會 )
鍵是唯一標(biāo)識實(shí)體的屬性集。對于鍵和函數(shù)依賴的關(guān)系:有兩個條件:設(shè)關(guān)系模式R(A1,A2...An),F(xiàn)是R上的函數(shù)依賴集,X是R的一個子集,
(1)X→A1A2...An∈F + (它的意思是X能夠決定唯一的一個元組)
(2)不存在X的真子集Y,使得Y也能決定唯一的一個元組,則X就是R的一個候選鍵。(它的意思是X能決定唯一的一個元組但又沒有多余的屬性集)
包含在任何一個候選鍵中的屬性稱為主屬性 ,不包含在任何鍵中的屬性為非主屬性(非鍵屬性),注意主屬性應(yīng)當(dāng)包含在候選鍵中。
4、函數(shù)依賴(FD)的推理規(guī)則 ( 簡單應(yīng)用 )
前面我們舉的例子中是以實(shí)際經(jīng)驗(yàn)來確定一個函數(shù)依賴的邏輯蘊(yùn)涵,但是我們需要一個推理規(guī)則才能完全確定F或F+的所有函數(shù)依賴。
設(shè)有關(guān)系模式R(U),X,Y,Z,W均是U的子集,F(xiàn)是R上只涉及到U中屬性的函數(shù)依賴集,推理規(guī)則如下:
- 自反律 :如果Y
X
U,則X→Y在R上成立。
- 增廣律 :如果X→Y為F所蘊(yùn)涵,Z
U,則XZ→YZ在R上成立。(XZ表示X∪Z,下同)
- 傳遞律 :如果X→Y和Y→Z在R上成立,則X→Z在R上成立。
- 合并律 :如果X→Y和X→Z成立,那么X→YZ成立。
- 偽傳遞律 :如果X→Y和WY→Z成立,那么WX→Z成立。
- 分解律 :如果X→Y和Z
Y成立,那么X→Z成立。
5、函數(shù)依賴推理規(guī)則的完備性 ( 識記 )
函數(shù)依賴推理規(guī)則系統(tǒng)(自反律、增廣律和傳遞律)是完備的。由推理規(guī)則的完備性可得到兩個重要結(jié)論:
- 屬性集X + 中的每個屬性A,都有X→A被F邏輯蘊(yùn)涵,即X + 是所有由F邏輯蘊(yùn)含X→A的屬性A的集合。
- F + 是所有利用Amstrong推理規(guī)則從F導(dǎo)出的函數(shù)依賴的集合
6、函數(shù)依賴集的等價(jià)和覆蓋 ( 識記)
在關(guān)系模式R(U)上的兩個函數(shù)依賴集F和G,如果 滿足F + =G + ,則稱F和G是 等價(jià) 的,稱F和G等價(jià)也稱F 覆蓋 G或G覆蓋F。
每個函數(shù)依賴集F都可以被一個 右部只有單屬性的函數(shù)依賴集 G所覆蓋。
- 如果函數(shù)依賴集合F滿足:
- (1)F中每一個函數(shù)依賴的右部都是單屬性;
- (2)F中的任一函數(shù)依賴X→A,其F-{X→A}是不等價(jià)的;
- (3)F中的任一函數(shù)依賴X→A,Z為X的子集。(F-{X→A})∪{Z→A}與F不等價(jià)。
- 則稱F為最小函數(shù)依賴集合。
如果函數(shù)依賴集F和G等價(jià),并且G是最小集,那么稱G是F的一個 最小覆蓋 。
這一段并不要求掌握最小集的求法,但是應(yīng)當(dāng)通過其求法理解最小集的概念 。
三、關(guān)系模式的分解特性
1、 模式分解中存在的問題 :( 識記 )
模式分解 就是將一個泛關(guān)系模式 R分解成 數(shù)據(jù)庫模式ρ ,以ρ代替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)系模式,分解成ρ={R1,R2,...,Rk},F(xiàn)是R上的一個函數(shù)依賴集。無損聯(lián)接就是指R中每一個滿足F的關(guān)系r(也就是一個關(guān)系實(shí)
例)都有r=π R1 (r)|X|π R2 (r)...|X|π R3 (r),即r為它在Ri上的投影的自然聯(lián)接。
最簡單的理解, 也就是說,分解后的關(guān)系 自然連接后 完全等于 分解前的 關(guān)系,則這個分解相對于F是無損聯(lián)接分解。
設(shè)R的分解為ρ={R1,R2},F為R所滿足的函數(shù)依賴集,則分解ρ具有無損聯(lián)接性的 充分必要條件 是:
- R1∩R2→(R1-R2)
- R1∩R2→(R2-R1)
也就是說,分解后的兩個模式的交能決定這兩個模式的差集,即R1、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(jià)于原模式的函數(shù)依賴集。只有這樣才能確保整個數(shù)據(jù)庫中數(shù)據(jù)的語義完整性不受破壞。
四、關(guān)系模式的范式( 領(lǐng)會 )
1、1NF、2NF、3NF、BCNF的定義:
- 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,若存在X
W,有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模式集的算法:
- (1)置初值ρ={R};
- (2)如果ρ中所有關(guān)系模式都是BCNF,則轉(zhuǎn)(4);
- (3)如果ρ中有一個關(guān)系模式S不是BCNF,則S中必能找到一個函數(shù)依賴集X→A有X不是S的鍵,且A不屬于X,設(shè)S 1 =XA,S 2 =S-A,用分解S 1 ,S 2 代替S,轉(zhuǎn)(2);
- (4)分解結(jié)束。輸出ρ。
在這個過程中, 重點(diǎn)在于(3)步 ,判斷哪個關(guān)系不是BCNF,并找到X和A。這里,S的判斷用BCNF的定義,而X不是S的鍵則依靠分析。
6、 分解成3NF模式集( 識記 )
算法:
- (1)如果R中的某些屬性在F的所有依賴的左邊和右邊都不出現(xiàn),那么這些屬性可以從R中分出去,單獨(dú)構(gòu)成一個關(guān)系模式。
- (2)如果F中有一個依賴X→A有XA→R,則ρ={R},轉(zhuǎn)(4)
- (3)對于F中每一個X→A,構(gòu)成一個關(guān)系模式XA,如果F有有X→A 1 ,X→A 2 ...X→A n ,則可以用模式XA 1 A 2 ...A n 代替n個模式XA 1 ,XA 2 ...XA n ;
- (4)w分解結(jié)束,輸入ρ。
這個過程的 重點(diǎn)是這一句 “對于F中每一個X→A,構(gòu)成一個關(guān)系模式XA”,這使我們的分解十分容易,然后依據(jù)合并律(合并律:如果X→Y和X→Z成立,那么X→YZ成立)將有關(guān)模式合并即得到所需3NF模式。
7、 模式設(shè)計(jì)方法的原則( 識記 )
關(guān)系模式R相對于函數(shù)依賴集F分解成數(shù)據(jù)庫模式ρ={R 1 ,R 2 ...R k },一般具有下面 四項(xiàng)特性 :
- ρ中每個關(guān)系模式R i 上應(yīng)具有某種 范式性質(zhì) (3NF或BCNF)
- 無損聯(lián)接 性。
- 保持函數(shù)依賴 集。
- 最小性 ,即ρ中模式個數(shù)應(yīng)最少且模式中屬性總數(shù)應(yīng)最少。
一個好的模式設(shè)計(jì)方法應(yīng)符合下列三條原則:
8、多值依賴。簡單了解一下。
第五章 數(shù)據(jù)庫設(shè)計(jì)
與上一章不同,本章的實(shí)用性較強(qiáng),詳細(xì)講述了數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的全過程。 重點(diǎn) 是概念設(shè)計(jì)中 ER模型的設(shè)計(jì)方法, 邏輯設(shè)計(jì)中 ER模型向關(guān)系模型的轉(zhuǎn)換方法 。
一、數(shù)據(jù)庫設(shè)計(jì)概述( 識記 )
1、 軟件生存期 :是指從軟件的規(guī)劃、研制、實(shí)現(xiàn)、投入運(yùn)行后的維護(hù)、直到它被新的軟件所取代而停止使用的整個期間。它包括六個階段:( 規(guī)需設(shè)編試運(yùn)維 )
- (1)規(guī)劃階段
- (2)需求分析階段
- (3)設(shè)計(jì)階段
- (4)程序編制階段
- (5)調(diào)試階段
- (6)運(yùn)行維護(hù)階段
2、數(shù)據(jù)庫系統(tǒng)生存期
數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)也是一項(xiàng)軟件工程,稱為數(shù)據(jù)庫工程,數(shù)據(jù)庫應(yīng)用系統(tǒng)也有生存期的概念,通常包括七個階段:
- (1)規(guī)劃階段
- (2)需求分析階段
- (3)概念設(shè)計(jì)階段
- (4)邏輯設(shè)計(jì)階段
- (5)物理設(shè)計(jì)階段
- (6)實(shí)現(xiàn)階段
- (7)運(yùn)行維護(hù)階段
3、數(shù)據(jù)庫設(shè)計(jì)方法學(xué)
一個好的數(shù)據(jù)庫設(shè)計(jì)方法應(yīng)該能在合理的期限內(nèi),以合理的工作量產(chǎn)生一個有實(shí)用價(jià)值的數(shù)據(jù)庫結(jié)構(gòu)。
數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的設(shè)計(jì)分為以下幾個階段:規(guī)劃、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)。
二、規(guī)劃( 識記 )
數(shù)據(jù)設(shè)計(jì)中的規(guī)劃階段的主要任務(wù)是進(jìn)行建立數(shù)據(jù)庫的必要性及可性性分析,確定數(shù)據(jù)庫系統(tǒng)在組織中和組織中和信息系統(tǒng)中的地位,以及各個數(shù)據(jù)庫之間的聯(lián)系。
三、需求分析( 識記 )
需求分析階段應(yīng)對系統(tǒng)的整個應(yīng)用情況作全面的、詳細(xì)的調(diào)查、確定用戶的目標(biāo),收集支持系統(tǒng)總的設(shè)計(jì)目標(biāo)的基礎(chǔ)數(shù)據(jù)和對這些數(shù)據(jù)的要求,確定用戶需求,并把這些要求寫成用戶和數(shù)據(jù)庫設(shè)計(jì)者都能夠接受的文檔。
確定用戶需求可以通過對不同層次的企業(yè)管理人員進(jìn)行個人訪問得到。還應(yīng)了解系統(tǒng)將來要發(fā)生的變化,充分考慮系統(tǒng)的可能的擴(kuò)充和變動,使系統(tǒng)設(shè)計(jì)更符合未來發(fā)展方向。
需求分析的步驟大致分為三步:即 需求信息的收集、分析整理和評審。
數(shù)據(jù)字典:是對系統(tǒng)中數(shù)據(jù)的詳盡描述,它提供對數(shù)據(jù)庫數(shù)據(jù)描述的集中管理。它包含以下幾個部分:數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和加工過程。
四、概念設(shè)計(jì)( 識記 )
1、 概念模型 :可以看成是現(xiàn)實(shí)世界到機(jī)器世界的一個過渡的中間層次。在設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時,要把現(xiàn)實(shí)世界的事物通過認(rèn)識和抽象轉(zhuǎn)換為信息世界的概念模型,再把概念模型轉(zhuǎn)換為機(jī)器世界的數(shù)據(jù)模型。
2、 概念設(shè)計(jì)的主要步驟 :分三步完成:(1)進(jìn)行 數(shù)據(jù)抽象 ,設(shè)計(jì)局部概念模式;(2)將局部概念模式 綜合 成全局概念模式;(3) 評審 。
3、 數(shù)據(jù)抽象 :數(shù)據(jù)抽象的兩種形式:聚集和概括:
聚集 :其數(shù)學(xué)意義就是笛卡爾積的概念,通過聚集,形成對象之間的一個聯(lián)系對象。如有一些對象:"老師,課程,班級,上課時間",通過聚集可以得到一個聯(lián)系對象"課程表"。聚集表示的是"is_part_of"的關(guān)系。
概括 :是從一類其他對象形成一個對象。如有桃樹、李樹、杏樹等對象,我們通過概括或以得到一個對象"樹"。概括表示的是"is_a"的關(guān)系,如“李樹”是一種“樹”。
4、基本ER模型的擴(kuò)展( 領(lǐng)會 )
ER(實(shí)體聯(lián)系)模型 是對現(xiàn)實(shí)世界的一種抽象,它的主要成份是 實(shí)體 、 聯(lián)系 和 屬性 。但是在現(xiàn)實(shí)世界中還有一些特殊的語義。需要擴(kuò)展ER模型的概念才能更好地模擬現(xiàn)實(shí)世界。
依賴聯(lián)系
:在現(xiàn)實(shí)世界中,有些實(shí)體對一另一些實(shí)體有很強(qiáng)的依賴關(guān)系,即一個實(shí)體的存在必須以另一實(shí)體的存在為前提。前者就稱為"弱實(shí)體",如在人事管理系統(tǒng)中,職
工子女的信息就是以職工的存在為前提的,子女實(shí)體是弱實(shí)體,子女與職工的聯(lián)系是一種依賴聯(lián)系。在ER圖中用雙線框表示弱實(shí)體。用箭頭表示依賴聯(lián)系。
子類 :在現(xiàn)實(shí)中,存在某個實(shí)體類型中所有實(shí)體同時也是另一實(shí)體類型中的實(shí)體,此時,我們稱前一實(shí)體類型為者的子類,后一實(shí)體類型稱為超類。子類有一個很重要的性質(zhì)繼承性。在ER圖中,超類用兩端雙線框表示,并用加圈的線與子類相連。
5、ER模型的操作( 領(lǐng)會 )
ER模型在數(shù)據(jù)庫概念設(shè)計(jì)過程中經(jīng)常需要進(jìn)行變換,包括實(shí)體類型、聯(lián)系類型和屬性的分裂、合并和增刪等。
實(shí)體類型的分裂包括 垂直分割 、水平分割 。
注意:在垂直分割時,鍵必須在分裂后的每個實(shí)體類型中出現(xiàn)。在聯(lián)系類型合并時,所合并的聯(lián)系類型必須是定義在相同的實(shí)體類型中。
6、 采用ER方法的數(shù)據(jù)庫概念設(shè)計(jì)( 領(lǐng)會 )
采用ER方法進(jìn)行數(shù)據(jù)庫概念設(shè)計(jì)分成三步進(jìn)行:
- 首先設(shè)計(jì)局部ER模式
- 然后把各局部ER模式綜合成全局ER模式
- 最后對全局ER模式進(jìn)行優(yōu)化
五、邏輯設(shè)計(jì)
1、概念設(shè)計(jì)的結(jié)果是得到一個與DBMS無關(guān)的概念模式。而 邏輯設(shè)計(jì) 的目的是把概念設(shè)計(jì)階段設(shè)計(jì)好的基本 ER圖轉(zhuǎn)換 為與選用的具體機(jī)器上的DBMS所支持的數(shù)據(jù)模式相符合的 邏輯結(jié)構(gòu) (包括數(shù)據(jù)庫模式和外模式)。
第六章 數(shù)據(jù)庫保護(hù)
本章不是重點(diǎn)章節(jié),主要內(nèi)容包括數(shù)據(jù)庫保護(hù)的四種措施,數(shù)據(jù)庫的恢復(fù)、并發(fā)控制、完整性和安全性。了解這些內(nèi)容及其在SQL語言中的實(shí)現(xiàn)方式。
一、數(shù)據(jù)庫的恢復(fù)( 領(lǐng)會 )
1、 事務(wù)的概念 : 事務(wù)是一個操作序列 。這些操作要么什么都做,要么都不做,是一個 不可分割 的工作單位。事務(wù)以BEGIN TRANSACTION語句開始,以COMMIT(提交)語句或ROLLBACK(回退或撤消)語句結(jié)束。
一個程序的執(zhí)行可通過若干事務(wù)的執(zhí)行序列來完成。
2、 事務(wù)的性質(zhì) : 原子性 (atomicity)、 一致性 (consistency)、 隔離性 (isolation)和 持久性 (durability)。稱為事務(wù)的ACID性質(zhì)。
通過教材的例子來理解事務(wù)的性質(zhì) 。
3、故障類型和恢復(fù)方法

4、恢復(fù)的基本原則和實(shí)現(xiàn)方法
恢復(fù)的基本原則 很簡單,就是“ 冗余 ”,即數(shù)據(jù)的重復(fù)存儲 。
實(shí)現(xiàn)方法有:
- (1)定期對數(shù)據(jù)庫進(jìn)行 復(fù)制 或轉(zhuǎn)儲(dump)。注意幾個概念:靜態(tài)轉(zhuǎn)儲、動態(tài)轉(zhuǎn)儲、海量轉(zhuǎn)儲和增量轉(zhuǎn)儲。
- (2)建立“ 日志 ”文件。
- (3) 恢復(fù) 。發(fā)生故障時有兩種處理方法,如數(shù)據(jù)庫已破壞,則由DBA裝入最近備份的數(shù)據(jù)庫然后利用"日志文件"執(zhí)行REDO(重做)操作。如數(shù)據(jù)庫未被損壞,但某些數(shù)據(jù)不可靠,則系統(tǒng)會自動執(zhí)行UNDO操作恢復(fù)數(shù)據(jù)。
5、 運(yùn)行記錄優(yōu)先原則 (即 先記錄,再更新,先記完,再結(jié)束 )
- (1)至少要等相應(yīng)的運(yùn)行記錄已經(jīng)寫入“日志”文件后,才能允許事務(wù)往數(shù)據(jù)庫在寫數(shù)據(jù)。
- (2)直到事務(wù)的所有運(yùn)行記錄都已寫入運(yùn)行“日志”文件后,才能允許事務(wù)完成“END TRANSACTION”處理。
6、SQL中的恢復(fù)操作,可上機(jī)觀察。
二、數(shù)據(jù)庫的并發(fā)控制( 領(lǐng)會 )
1、并發(fā)控制帶來的三類問題:
- (1)丟失更新的問題
- (2)不一致分析問題
- (3)“臟數(shù)據(jù)”的讀出。(在數(shù)據(jù)庫技術(shù)中,未提交的隨后又被撤消的數(shù)據(jù)為“臟數(shù)據(jù)”。)
2、為解決并發(fā)控制帶來的問題,通常要采用 封鎖 (locking)技術(shù),常用的封鎖有:排它型封鎖( X封鎖) 和共享型封鎖( S封鎖 )兩種。
X封鎖的規(guī)則稱為 PX協(xié)議 ,其內(nèi)容為:任何企圖更新記錄R的事務(wù)必須先執(zhí)行LOCK X(R)操作,以獲得對該記錄進(jìn)行尋址的能力,并對它取得X封鎖。如果未獲得X封鎖,那么這個事務(wù)進(jìn)入等待狀態(tài),一直到獲準(zhǔn)X封鎖,事務(wù)繼續(xù)進(jìn)行。
簡記為: 先鎖X,再執(zhí)行,取不到,就等待。
PXC協(xié)議 :它由PX協(xié)議及一條規(guī)則"X封鎖必須保留到 事務(wù)終點(diǎn) (COMMIT或ROLLBACK)"組成。
S封鎖的規(guī)則稱為 PS協(xié)議 :其內(nèi)容為:任何要更新記錄R的事務(wù)必須先執(zhí)行LOCK
S(R)操作,以獲得對該記錄尋址的能力并對它取得S封鎖。如果未獲準(zhǔn)S封鎖,那么這個事務(wù)進(jìn)入等待狀態(tài),一直到獲準(zhǔn)S封鎖,事務(wù)才繼續(xù)進(jìn)行下去。當(dāng)事務(wù)
獲準(zhǔn)對記錄R的要封鎖后,在記錄R修改前必須把S封鎖升級為X封鎖。
簡記為: 先鎖S,再執(zhí)行,鎖不到,就等待,若要修改則升X 。
PSC協(xié)議:由PS協(xié)議和“將S封鎖保持到事務(wù)終點(diǎn)”組成。
3、 活鎖 :是指某個事務(wù)永遠(yuǎn)處于等待狀態(tài),得不到執(zhí)行的現(xiàn)象。避免活鎖的方法是采用“先來先服務(wù)”策略。
死鎖 :有兩個或以上的事務(wù)處于等待狀態(tài),每個事務(wù)都在等待另一個事務(wù)解除封鎖,它才能繼續(xù)執(zhí)行下去,結(jié)果任何一個事務(wù)都無法執(zhí)行,這種現(xiàn)象就是死鎖。
解除死鎖的方法是由DBMS中的“死鎖測試程序”來檢查,如發(fā)現(xiàn)死鎖則犧牲一個事務(wù),并做回退操作,解除它的所有封鎖。
4、 兩段封鎖法 ( 識記 )
兩段封鎖協(xié)議規(guī)定所有事務(wù)都要遵守下列規(guī)則:(1)在對任何數(shù)據(jù)進(jìn)行讀寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖;(2)在釋放一個封鎖之后,事務(wù)不再獲得任何其他封鎖。
針對課本的例子來理解。
三、數(shù)據(jù)庫的完整性( 領(lǐng)會 )
1、數(shù)據(jù)庫的 完整性 是指數(shù)據(jù)的 正確性和相容性 。數(shù)據(jù)庫中數(shù)據(jù)發(fā)生錯誤,往往是由非法更新引起的。
數(shù)據(jù)庫完整性是通過DBMS的 完整性子系統(tǒng) 實(shí)現(xiàn)的,它有兩個功能:
- (1)監(jiān)督事務(wù)的執(zhí)行,并測試是否違反完整性規(guī)則。
- (2)如有違反,則采取恰當(dāng)?shù)牟僮鳎缇芙^、報(bào)告違反情況,改正錯誤等方法進(jìn)行處理。
數(shù)據(jù)庫完整性子系統(tǒng) 是根據(jù)“ 完整性規(guī)則集 ” 工作的,這些完整性規(guī)則包括: 域 完整性規(guī)則、 域聯(lián)系 的規(guī)則、 關(guān)系完整性 規(guī)則(一個比一個大)
2、SQL中的完整性約束
在SQL中,表達(dá)完整性約束的規(guī)則有 主鍵約束 、 外鍵約束 、 屬性值約束 和 全局約束等 多種形式。
- 主鍵約束:可用主鍵子句或主鍵短語 PRIMARY KEY 來定義。
- 外鍵約束:可用外鍵子句來定義如 FOREIGN KEY (S#) REFERNCE S(S#)
- 屬性值約束:包括非空值約束( NOT NULL )和基于屬性的檢查子句( CHECK ) 及域約束子句 如 CREAT DOMAIN AGE SMALLINT CHECK (value>10)
- 全局約束:包括基于元組的檢查子句( CHECK )和斷言( CREATE ASSERTION 斷言名 CHECK 條件)。
四、數(shù)據(jù)庫的安全性( 識記 )
數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫防止不合法的使用,以免數(shù)據(jù)的泄漏、非法更改和破壞。
1、安全性級別:包括 環(huán)境級 、 職員級 、 OS級 、 網(wǎng)絡(luò)級 和 數(shù)據(jù)庫系統(tǒng)級 。
2、用戶或應(yīng)用程序 使用數(shù)據(jù)庫的方式稱為權(quán)限 ,權(quán)限的種類:
- 訪問數(shù)據(jù)權(quán)限: 讀、插入、修改、刪除 四種
- 修改數(shù)據(jù)庫模式權(quán)限: 索引 (創(chuàng)建或刪除索引)、 資源 (創(chuàng)建新關(guān)系)、 修改 (增刪關(guān)系結(jié)構(gòu)屬性)和 撤消權(quán)限 (撤消關(guān)系)
3、權(quán)限的轉(zhuǎn)授與回收:畫一個 權(quán)限圖 ,只要根結(jié)點(diǎn)到用戶結(jié)點(diǎn)之間存在一條 路徑 ,那么它就有權(quán)限,回收時就是刪去某些路徑。
4、SQL中的安全性控制
SQL中有兩個安全機(jī)制:一是 視圖機(jī)制 、二是 授權(quán)子系統(tǒng) 。
視圖是從一個或幾個 基本表 導(dǎo)出的表,是 虛表 ,視圖定義后可以像基本表一樣用于查詢和刪除,但其 更新操作(增、刪、改) 會受到限制。
視圖機(jī)制 把用戶可以使用的數(shù)據(jù)定義在視圖中,這樣用戶就不能使用視圖定義外的其他數(shù)據(jù),從而保證了數(shù)據(jù)庫的安全性。視圖機(jī)制使系統(tǒng)具有 三個優(yōu)點(diǎn) : 數(shù)據(jù)安全性 、 數(shù)據(jù)獨(dú)立性 和 操作簡便性 。
授權(quán)機(jī)制 可以保證用戶只能進(jìn)行其權(quán)限范圍內(nèi)的操作。
6、數(shù)據(jù)加密可更好地保證數(shù)據(jù)庫中數(shù)據(jù)的安全性,采用加密算法給把源文變?yōu)槊芪膩韺?shí)現(xiàn)。常用的加密算法有“ 替換方法 ”和 明鍵加密法 。
同時,為保證數(shù)據(jù)庫的安全,也應(yīng)注意自然環(huán)境的安全性。