數據庫系統概念複習筆記
基本介紹
數據庫系統
數據庫系統由一個相互關聯的數據的集合和一組用以訪問這些數據的程序組成。這個數據集合通常稱作數據庫。
數據庫系統的主要目標是提供一種可以方便,高效地存取數據庫信息的途徑。
數據庫系統的目的:能夠持久性地存儲,大量數據,用戶數據獨立性,原子性,減少冗餘,一致性,完整性,高效存儲和訪問,併發訪問,安全。
數據視圖
數據抽象:視圖層(外模式),邏輯層(模式),物理層(內模式)。
實例:特定時刻存儲在數據庫中的信息的集合稱作數據庫的一個實例。
模式:數據庫的總體設計稱作數據庫模式。
物理數據獨立性:應用程序如果不依賴與物理模式,它們就被稱爲是具有物理獨立性,因此即使物理模式改變了它們也無需重寫。
數據模型:關係模型,實體-聯繫模型,基於對象的數據模型,半結構化數據模型。網狀數據模型,層次數據模型。
- 關係模型
- 實體-聯繫模型
- 層次數據模型
- 網狀數據模型
數據庫語言
數據操縱語言(DML):它使得用戶可以訪問或操縱那些按照某種適當的數據模型組織起來的數據。(查詢,插入,刪除,更新)
- 過程化DML:要求用戶指定需要什麼數據以及如何獲得這些數據。
- 聲明式DML:(非過程化DML)只要求用戶指定需要什麼數據,而不聲明如何獲得這些數據。
DML中涉及信息檢索的部分稱作查詢語言。(實踐中常把查詢語言和數據操縱語言作爲同義詞使用)
Pure:關係代數,元組關係演算,域關係演算。
Commercial:SQL。
數據定義語言(DDL):數據庫模式是通過一系列定義來說明的,這些定義由數據定義語言來表達。
DDL的輸出放在數據字典中,數據字典包含了元數據,元數據是關於數據的數據。可以把數據字典看作一種特殊的表,這種表只能由數據庫系統本身(不是常規的用戶)來訪問和修改。在讀取和修改實際的數據前,數據庫系統先要參考數據字典。
數據字典包括:數據庫模式和一致性約束。
一致性約束:域約束,參照完整性(主鍵,外鍵),斷言,授權。
訪問數據庫:爲了訪問數據庫,DML語言需要宿主語言來執行。有兩種途徑可以做到這一點:
- 通過提供應用程序接口(過程集),它可以用來將DML和DDL的語句發送給數據庫,再取回結果。與C語言一起使用的開放數據庫連接(ODBC)標準,是一種常見的應用程序接口標準。Java數據庫連接(JDBC)標準爲Java語言提供了相應的特性。
- 通過擴展宿主語言的語法,在宿主語言的程序中嵌入DML調用。通常用一個特殊字符作爲DML調用的開始,並且通過預處理器,稱爲DML預編譯器,來將DML語句轉變成宿主語言中的過程調用。
數據庫設計
數據庫設計
- 全面刻畫預期的數據庫用戶的數據需求。
- 選擇一個數據模型,並運用該選定的數據模型的概念,將那些需求轉換成一個數據庫的概念模式。(概念設計階段=邏輯設計階段+物理設計階段)
實體-聯繫模型
數據庫中的實體通過屬性集合來描述。
同一類型的所有實體的集合稱作實體集。
聯繫是幾個實體之間的關聯。
同一類型的所有聯繫的集合稱作聯繫集。
一個重要的約束是映射基數,它表示某個聯繫集能與一實體進行關聯的實體數目。
規範化
設計關係數據庫所用到的另外一種方法是通常被稱爲規範化的過程。它的目標是生成一個關係模式集合,使我們存儲信息時沒有不必要的冗餘,同時又能很輕易地檢索數據。這種方法是設計一種符合適當的範式的模式,爲確定一個關係模式是否符合想要的範式,我們需要額外的關於數據庫建模的現實世界中機構的信息。最常用的方法是使用函數依賴。
一個不好的設計可能會包括如下不良特性:
- 信息重複。
- 缺乏表達某些信息的能力。
數據存儲和查詢
存儲管理器是數據庫系統中負責在數據庫中存儲的底層數據與應用程序以及向系統提交的查詢之間提供接口的部件。
- 存儲管理器負責與文件管理器進行交互。
- 存儲管理器負責數據庫中數據的存儲,檢索和更新。
存儲管理器部件包括:權限及完整性管理器,事務管理器,文件管理器,緩衝區管理器。
存儲管理器的數據結構,作爲系統物理實現的一部分:
- 數據文件:存儲數據庫自身。
- 數據字典:存儲關於數據庫結構的元數據,尤其是數據庫模式。
- 索引:提供對數據項的快速訪問。
查詢處理器組件包括: DDL解釋器,DML編譯器(一個查詢通常可被翻譯成多種等價的具有相同結果的執行方案的一種。DML編譯器還進行查詢優化,也就是從幾種選擇中選出代價最小的一種),查詢執行引擎。
事務
事務是數據庫應用中完成單一邏輯功能的操作集合。
ACID:原子性,一致性,獨立性,持久性。
數據庫體系結構
- 集中式數據庫系統
- 客戶服務器式數據庫系統
- 並行數據庫系統
- 分佈式數據庫系統
數據挖掘與信息檢索
數據挖掘是指半自動地分析大型數據庫並從中找出有用的模式的過程。數據挖掘就是在數據庫中發現知識。
大型企業有各種不同的可用於業務決策的數據來源。要在這些各種各樣的數據上高效地執行查詢,企業建立了數據倉庫。
文本結構是非結構化的,與關係數據庫中嚴格的結構化數據不同。查詢非結構化的文本數據被稱爲信息檢索。
特種數據庫
- 基於對象的數據模型
- 半結構化數據模型
數據庫管理員
使用DBS的一個主要原因是可以對數據和訪問這些數據的程序進行集中控制。對系統進行集中控制的人稱作數據庫管理員。
- 模式定義
- 存儲結構及存取方式定義
- 模式及物理組織的修改
- 數據訪問授權
- 日常維護
關係模型
關係用來指代表。
元組用來指代行。
屬性用來指代列。
關係實例:一個關係的特定實例,也就是所包含的一組特定的行。
域:關於關係中的每個屬性,都存在一個允許取值的集合,稱爲該屬性的域。如果域中元素被看做是不可再分的單元,則域是原子的。
空:一個特殊的值,代表值未知或不存在。
數據庫模式是數據庫的邏輯設計。
數據庫實例是給定時刻數據庫中數據的一個快照。
超碼是一個或多個屬性的集合,這些屬性的組合可以使我們在一個關係中唯一地標識一個元組。
候選碼是最小的超碼,它們的任意真子集都不能成爲超碼。
主碼代表被數據庫設計者選中的,主要用來在一個關係中區分不同元組的候選碼。
外碼:一個關係模式r1可能在它的屬性中包括另一個關係模式r2的主碼,這個屬性在r1上稱作參照r2的外碼。關係r1也稱爲外碼依賴的參照關係,r2叫做外碼的被參照關係。
事務
可串行化
衝突指令交換:
- read(Q)和write(Q)
- write(Q)和read(Q)
- write(Q)和write(Q)
如果調度 可以經過一系列非衝突指令交換轉換成 ,我們稱 和 是衝突等價的。
不是所有的串行調度相互之間都衝突等價。
若一個調度 與一個串行調度衝突等價,則稱調度 是衝突可串行化的。
衝突指令的事務 指向調度 ,該調度是衝突可串行化的當且僅當圖不循環。
可恢復調度
可恢復調度應滿足:對於每對事務 和 ,如果 讀取了之前由 所寫的數據項,則 先於 提交。
無級聯調度
無級聯調度應滿足:對於每對事務 和 ,如果 讀取了之前由 所寫的數據項,則 必須在 這一讀操作前提交。
每一個無級聯調度也都是可恢復調度。
併發控制:鎖
共享鎖:如果事務 獲得了數據項Q上的共享鎖(S),則 可讀但不能寫Q。
排他鎖:如果事務 獲得了數據項Q上的排他鎖(X),則 既可讀又可寫Q。
實體—聯繫圖
分成兩部分的矩形代表實體集。第一部分包含實體集的名字,第二部分包含實體集中所有屬性的名字。構成主碼的屬性以下劃線標明。
菱形代表聯繫集。
未分割的矩形代表聯繫集的屬性。
線段將實體集連接到聯繫集。
虛線將聯繫集屬性連接到聯繫集。
雙線顯示實體在聯繫集中的參與度。
雙菱形代表連接到弱實體集的標誌性聯繫集。
映射基數
- 箭頭表示一,線段表示多。
- l.h形式,l爲最小的映射基數,h爲最大的映射基數(*)。
弱實體集
沒有足夠的屬性以形成主碼的實體集稱作弱實體集。有主碼的實體集稱作強實體集。
弱實體集必須與另一個稱作標識的屬主實體集關聯纔能有意義。
弱實體集存在依賴於標識實體集。標識實體集擁有它所標識的弱實體集。
將弱實體集與其標識實體集相連的聯繫稱爲標識性聯繫。
弱實體集的分辨符是使得我們進行區分弱實體集中的實體的屬性集合。
弱實體集的主碼由標識實體集的主碼加上該弱實體集的分辨符構成。
- 弱實體集的分辨符以虛下劃線標明,而不是實線。
- 關聯弱實體集的標識性強實體集的聯繫集以雙菱形表示。
- 如果弱實體集在聯繫中的參與是全部的,表示每個弱實體集中的元素都必須通過聯繫和標識性強實體集關聯,則使用雙線表明全部參與。
關係運算
關係代數
- 選擇運算
- 投影運算
- 更名運算
- 交運算
- 集合差運算
- 笛卡爾積運算
元組關係演算
表達式的安全性:元組關係公式P的域是P所引用的所有值的集合。
域關係演算
總結
元組關係演算和域關係演算是非過程化語言,代表了關係查詢語言所需的基本能力。基本關係代數是一種過程化語言,在能力上等價於被限制在安全表達式範圍內的關係演算的這兩種形式。
例題
巴斯範式
無損分解
如果用兩個關係模式r1和r2替代r時沒有信息損失,則我們稱該分解是無損分解。
即把r投影至r1和r2上,然後計算投影結果的自然連接,我們仍然得到一模一樣的r。
保持依賴
如果F中的每一個函數依賴都可以在分解得到的某一個關係上驗證,那麼這個分解就是保持依賴的。
第一範式
我們稱一個關係模式R屬於第一範式,如果R的所有集合的域都是原子的。
巴斯範式
具有函數依賴集F的關係模式R屬於BCNF的條件是,對 中所有形如α->β的函數依賴,下面至少有一項成立:
- α->β是平凡的函數依賴(即β∈α)。
- α是模式R的一個超碼。
第三範式
具有函數依賴集F的關係模式R屬於第三範式的條件是,對 中所有形如α->β的函數依賴,下面至少有一項成立:
- α->β是平凡的函數依賴(即β∈α)。
- α是模式R的一個超碼。
- β - α中的每個屬性A都包含於R的一個候選碼中。
注意上面的第三個條件並沒有說單個候選碼必須包含β - α中的所有屬性;β - α中的每個屬性A可能包含於不同的候選碼中。
第四範式
函數依賴集和多值依賴集爲D的關係模式R屬於第四範式的條件是,對 中所有形如α->->β的多值依賴,下面至少有一項成立:
- α->->β是平凡的多值依賴(即β∈α)。
- α是模式R的一個超碼。
SQL
函數
create function funcName(parmName parmType)
returns parmType
begin
declare parmName parmType;
……
return parm;
end
過程
create produce proName(in parmName parmType,out parmName parmType)
begin
……
end
觸發器
create trigger triName after update on tableName
for each row
begin
……
end