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

5、 分解成BCNF模式集的算法( 識記 )
對于任一關系模式,可找到一個分解達到3NF,且具有無損聯接和保持函數依賴性。而對于BCNF分解,則可以保證無損聯接但不一定能保證保持函數依賴集。
無損聯接分解成BCNF模式集的算法:
- (1)置初值ρ={R};
- (2)如果ρ中所有關系模式都是BCNF,則轉(4);
- (3)如果ρ中有一個關系模式S不是BCNF,則S中必能找到一個函數依賴集X→A有X不是S的鍵,且A不屬于X,設S 1 =XA,S 2 =S-A,用分解S 1 ,S 2 代替S,轉(2);
- (4)分解結束。輸出ρ。
在這個過程中, 重點在于(3)步 ,判斷哪個關系不是BCNF,并找到X和A。這里,S的判斷用BCNF的定義,而X不是S的鍵則依靠分析。
6、 分解成3NF模式集( 識記 )
算法:
- (1)如果R中的某些屬性在F的所有依賴的左邊和右邊都不出現,那么這些屬性可以從R中分出去,單獨構成一個關系模式。
- (2)如果F中有一個依賴X→A有XA→R,則ρ={R},轉(4)
- (3)對于F中每一個X→A,構成一個關系模式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分解結束,輸入ρ。
這個過程的 重點是這一句 “對于F中每一個X→A,構成一個關系模式XA”,這使我們的分解十分容易,然后依據合并律(合并律:如果X→Y和X→Z成立,那么X→YZ成立)將有關模式合并即得到所需3NF模式。
7、 模式設計方法的原則( 識記 )
關系模式R相對于函數依賴集F分解成數據庫模式ρ={R 1 ,R 2 ...R k },一般具有下面 四項特性 :
- ρ中每個關系模式R i 上應具有某種 范式性質 (3NF或BCNF)
- 無損聯接 性。
- 保持函數依賴 集。
- 最小性 ,即ρ中模式個數應最少且模式中屬性總數應最少。
一個好的模式設計方法應符合下列三條原則:
8、多值依賴。簡單了解一下。
第五章 數據庫設計
與上一章不同,本章的實用性較強,詳細講述了數據庫應用系統設計的全過程。 重點 是概念設計中 ER模型的設計方法, 邏輯設計中 ER模型向關系模型的轉換方法 。
一、數據庫設計概述( 識記 )
1、 軟件生存期 :是指從軟件的規劃、研制、實現、投入運行后的維護、直到它被新的軟件所取代而停止使用的整個期間。它包括六個階段:( 規需設編試運維 )
- (1)規劃階段
- (2)需求分析階段
- (3)設計階段
- (4)程序編制階段
- (5)調試階段
- (6)運行維護階段
2、數據庫系統生存期
數據庫應用系統的開發也是一項軟件工程,稱為數據庫工程,數據庫應用系統也有生存期的概念,通常包括七個階段:
- (1)規劃階段
- (2)需求分析階段
- (3)概念設計階段
- (4)邏輯設計階段
- (5)物理設計階段
- (6)實現階段
- (7)運行維護階段
3、數據庫設計方法學
一個好的數據庫設計方法應該能在合理的期限內,以合理的工作量產生一個有實用價值的數據庫結構。
數據庫及其應用系統的設計分為以下幾個階段:規劃、需求分析、概念設計、邏輯設計、物理設計。
二、規劃( 識記 )
數據設計中的規劃階段的主要任務是進行建立數據庫的必要性及可性性分析,確定數據庫系統在組織中和組織中和信息系統中的地位,以及各個數據庫之間的聯系。
三、需求分析( 識記 )
需求分析階段應對系統的整個應用情況作全面的、詳細的調查、確定用戶的目標,收集支持系統總的設計目標的基礎數據和對這些數據的要求,確定用戶需求,并把這些要求寫成用戶和數據庫設計者都能夠接受的文檔。
確定用戶需求可以通過對不同層次的企業管理人員進行個人訪問得到。還應了解系統將來要發生的變化,充分考慮系統的可能的擴充和變動,使系統設計更符合未來發展方向。
需求分析的步驟大致分為三步:即 需求信息的收集、分析整理和評審。
數據字典:是對系統中數據的詳盡描述,它提供對數據庫數據描述的集中管理。它包含以下幾個部分:數據項、數據結構、數據流、數據存儲和加工過程。
四、概念設計( 識記 )
1、 概念模型 :可以看成是現實世界到機器世界的一個過渡的中間層次。在設計數據庫系統時,要把現實世界的事物通過認識和抽象轉換為信息世界的概念模型,再把概念模型轉換為機器世界的數據模型。
2、 概念設計的主要步驟 :分三步完成:(1)進行 數據抽象 ,設計局部概念模式;(2)將局部概念模式 綜合 成全局概念模式;(3) 評審 。
3、 數據抽象 :數據抽象的兩種形式:聚集和概括:
聚集 :其數學意義就是笛卡爾積的概念,通過聚集,形成對象之間的一個聯系對象。如有一些對象:"老師,課程,班級,上課時間",通過聚集可以得到一個聯系對象"課程表"。聚集表示的是"is_part_of"的關系。
概括 :是從一類其他對象形成一個對象。如有桃樹、李樹、杏樹等對象,我們通過概括或以得到一個對象"樹"。概括表示的是"is_a"的關系,如“李樹”是一種“樹”。
4、基本ER模型的擴展( 領會 )
ER(實體聯系)模型 是對現實世界的一種抽象,它的主要成份是 實體 、 聯系 和 屬性 。但是在現實世界中還有一些特殊的語義。需要擴展ER模型的概念才能更好地模擬現實世界。
依賴聯系
:在現實世界中,有些實體對一另一些實體有很強的依賴關系,即一個實體的存在必須以另一實體的存在為前提。前者就稱為"弱實體",如在人事管理系統中,職
工子女的信息就是以職工的存在為前提的,子女實體是弱實體,子女與職工的聯系是一種依賴聯系。在ER圖中用雙線框表示弱實體。用箭頭表示依賴聯系。
子類 :在現實中,存在某個實體類型中所有實體同時也是另一實體類型中的實體,此時,我們稱前一實體類型為者的子類,后一實體類型稱為超類。子類有一個很重要的性質繼承性。在ER圖中,超類用兩端雙線框表示,并用加圈的線與子類相連。
5、ER模型的操作( 領會 )
ER模型在數據庫概念設計過程中經常需要進行變換,包括實體類型、聯系類型和屬性的分裂、合并和增刪等。
實體類型的分裂包括 垂直分割 、水平分割 。
注意:在垂直分割時,鍵必須在分裂后的每個實體類型中出現。在聯系類型合并時,所合并的聯系類型必須是定義在相同的實體類型中。
6、 采用ER方法的數據庫概念設計( 領會 )
采用ER方法進行數據庫概念設計分成三步進行:
- 首先設計局部ER模式
- 然后把各局部ER模式綜合成全局ER模式
- 最后對全局ER模式進行優化
五、邏輯設計
1、概念設計的結果是得到一個與DBMS無關的概念模式。而 邏輯設計 的目的是把概念設計階段設計好的基本 ER圖轉換 為與選用的具體機器上的DBMS所支持的數據模式相符合的 邏輯結構 (包括數據庫模式和外模式)。
第六章 數據庫保護
本章不是重點章節,主要內容包括數據庫保護的四種措施,數據庫的恢復、并發控制、完整性和安全性。了解這些內容及其在SQL語言中的實現方式。
一、數據庫的恢復( 領會 )
1、 事務的概念 : 事務是一個操作序列 。這些操作要么什么都做,要么都不做,是一個 不可分割 的工作單位。事務以BEGIN TRANSACTION語句開始,以COMMIT(提交)語句或ROLLBACK(回退或撤消)語句結束。
一個程序的執行可通過若干事務的執行序列來完成。
2、 事務的性質 : 原子性 (atomicity)、 一致性 (consistency)、 隔離性 (isolation)和 持久性 (durability)。稱為事務的ACID性質。
通過教材的例子來理解事務的性質 。
3、故障類型和恢復方法

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