資料庫第二章
阿新 • • 發佈:2018-12-20
關係資料庫
關係資料結構及形式化定義
- 關係
- 單一的資料結構—關係:現實世界的實體以及實體間的各種聯絡均用關係來表示
- 邏輯結構—二維表:從使用者角度,關係模型中資料的邏輯結構是一張二維表
- 建立在集合代數上
- 域
- 是一組具有相同資料型別的值得集合
- 笛卡爾積
- 給定一組域 d1,d2,。。。,dn,允許其中某些域是相同的。其笛卡爾積為每個域的乘積。
- 所有域的所有取值的一個組合
- 不能重複
- 基數:若di(i=1,2,3….n)為有限集,其基數為mi(i=1.2.3…n)則D1*D2*……Dn的基數M為:M=所有m的乘積
- 表示方法:
- 笛卡爾積可以表示為一張二維表
- 表中的每行對應一個元組,表中的每列對應一個域
- 例如,給出3個域:
- D1=導師集合SUPERVISOR={張清玫,劉逸}
- D2=專業集合SPECIALITY={計算機專業,資訊專業}
- D3=研究生集合POSTGRADUATE={李勇,劉晨,王敏}
- D1,D2,D3的笛卡爾積為
- D1×D2×D3={
- (張清玫,計算機專業,李勇),(張清玫,計算機專業,劉晨),
- (張清玫,計算機專業,王敏),(張清玫,資訊專業,李勇),
- (張清玫,資訊專業,劉晨),(張清玫,資訊專業,王敏),
- (劉逸,計算機專業,李勇),(劉逸,計算機專業,劉晨),
- (劉逸,計算機專業,王敏),(劉逸,資訊專業,李勇),
- (劉逸,資訊專業,劉晨),(劉逸,資訊專業,王敏) }
- 基數為2×2×3=12
- 給定一組域 d1,d2,。。。,dn,允許其中某些域是相同的。其笛卡爾積為每個域的乘積。
-
- 關係
- 關係
- 關係
D1*D2*D3*……Dn的子集叫做在域D1,D2……Dn上的關係,表示
R(D1,D2,…,Dn)
-
-
- R:關係名
- n:關係的目或度(Degree)
-
-
-
- 元組:關係中的每個元素是關係中的元組,通常用t表示。
- 單元關係與二元關係
-
當n=1時,該關係為單元關係或一元關係
當n=2時,該關係為二元關
-
-
- 關係的表示:
- 關係也是一個二維表,表的每一行對應一個元組,表的每一列對應一個域
- 屬性
- 關係中不同列也可以對應相同的額域
- 為了加以區分,必須對每一列起一個名字,稱為屬性
- N目關係必有n個屬性
- 碼
- 候選碼:若關係中的某一組屬性組的值能唯一的標識一個元組,則成該屬性為候選碼
- 簡單的情況:候選碼只包含一個屬性
- 全碼:最極端的情況:關係模式的所有屬性組是這個關係模式的候選碼,則稱為全碼
- 主碼:若一個關係有多個候選碼,則定期中一個為主碼
- 主屬性:候選碼的諸屬性為主屬性,不包含在任何候選碼中屬性稱為非主屬性或非碼屬性
- 碼
- 主碼:如果一個關係有多個候選碼,則選取其中一個為主碼
- 主屬性:候選碼的諸屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性或者非碼屬性
- 三類關係
- 基本關秀:基本存在表,是實際儲存資料的邏輯結構
- 查詢表:查詢結構對應表
- 視圖表:由基本表或其他檢視匯出的表,是虛標,不對應實際儲存的資料
- 基本關係的性質
- 列本是同質的
- 不同的列可以出同一個域
- 其中的每一列稱為一個屬性
- 不同的屬性要給予不同屬性名
- 列的順序無所謂,,列的次序可以任意改變
- 任意的順序無所謂,列的次序可以 任意交換
- 任意兩個元組的候選碼不能相容
- 行的順序無所謂,行的次序可以任意交換
- 關係的表示:
-
- 關係模式
- 什麼是關係模式
- 關係模式是型
- 關係是值
- 關係模式是 對關係的描述
- 元組集合的結構
- 屬性構成
- 屬性來自的域
- 屬性與域之間的映像關係
- 完整性約束條件
- 元組集合的結構
- 定義關係模式:可表示為R(U,D,DOM,F)R:關係名,U:組成改關係的屬性名集合。D:U中屬性屬性所來自的域,DOM:屬性向域的映像集合,F屬性間資料的依賴關係的集合
- 關係模式與關係
- 關係模式
- 對關係的描述
- 靜態的,穩定的
- 關係
- 關係模式在某一時刻的狀態或內容
- 動態的,隨時間不斷變化的
- 關係模式和關係往往統稱為關係:通過上下文區別
- 關係模式
- 什麼是關係模式
- 關係資料庫
- 關係資料庫
- 在一個給定的應用領域中,所有關係的集合構成一個關係資料庫
- 關係資料庫 的型與值
- 型:關係資料庫模式,是對關係資料庫的描述
- 值:關係模式在某一時刻對應的關係的集合,通常稱為關係資料庫
- 關係資料庫
- 關係模式的儲存結構
- 關係資料庫的物理組織
- 有的關係資料庫管理系統中的一個表對應一個作業系統檔案,將物理資料組織交給作業系統完成
- 有的關係資料庫管理系統從作業系統哪裡申請若干個大的檔案,自己花分檔案空間,組織表,索引等儲存結構,並進行儲存管理
- 關係資料庫的物理組織
關係操作
-
-
-
- 常見的關係操作
- 查詢操作:選擇,投影,連結,除,並,差,交,笛卡爾積
- 選擇,投影,並,差,笛卡爾積
- 資料更新:插入,刪除,修改
- 查詢操作:選擇,投影,連結,除,並,差,交,笛卡爾積
- 關係模式的特點
- 集合操作方式:操作的物件和結果都是集合,一次一集合的方式
- 關係代數語言
- 用對關係的運算來達到表達查詢要求
- 代表:ISBL
- 關係演算語言:用謂詞來表達查詢要求
- 元組關係演算語言
- 謂詞變元的基本物件是元組變數
- 代表:APLHA,QUEL
- 域關係演算語言
- 謂詞變元的基本操作是域變數
- 代表:QBE
- 元組關係演算語言
- 具有關係代數和關係演算雙重特點的語言
- 代表:SQL
- 常見的關係操作
-
-
關係的完整性
- 實體完整性和參照完整性
- 關係模型必須滿足的完整性約束條件稱為關係的兩個不變性,應該由關係系統自動支援
- 使用者定義的完整性
- 應用領域需要的約束條件,體現了具體領域中的語義約束
實體完整性:
- 若資料A是基本關係R的主屬性,則A不能取空值
- 空值就是 不存在 或 無意義的值
- 例:
- 選修(學號,課程號,成績)
- “學號、課程號”為主碼
- “學號”和“課程號”兩個屬性都不能取空值
- 實體完整性的說明
- 實體完整性規則是針對基本關係而言的,一個基本表通常對應現實世界的一個實體集。
- 現實世界中的實體是可以區分的,即他們具有某種唯一標識。
- 關係模型中的實體是可以區分的,即他們具有某種唯一性標識。
- 主碼中的屬性即主屬性不能取空值,主屬性取空值,說明存在不可區分的實體,與第二點衝突,因此這個規則稱為實體完整性。
參照完整性
- 關係間的引用
- 在關係模型中實體及實體間 的聯絡都是用關係來描述的,自然存在著關係與關係的引用
- 外碼
- 設F是基本關係R的一個或一組屬性,但不是關係R的碼。如果F與基本關係S的主碼Ks相對應,則稱F是R的外碼。
- 基本關係R稱為參照關係
- 基本關係S稱為被參照關係或目標關係
- 關係R和S不一定是不同的關係
- 目標關係S的主碼Ks和參照關係的外碼F必須定義在同一個域上
- 外碼並不一定要與相應的主碼同名
- 參照完整性規則
- 若屬性F是基本關係R的外碼它與基本關係S的主碼相對應,則對於每個元組F上的值必須為:
- 或者取空值
- 或者等於S\中的額某個元祖的主碼值
- 若屬性F是基本關係R的外碼它與基本關係S的主碼相對應,則對於每個元組F上的值必須為:
使用者定義的完整性
- 針對某一具體關係資料庫的約束條件,反映某一具體應用所涉及的資料必須滿足的語義要求
- 關係模型應提供定義和檢驗者類完整性的機制,以便用同一的系統的方式處理他們,而不需由應用程式承擔著一功能。
關係代數
- 關係代數式一種抽象的查詢語言,它用對關係的運算來表達查詢
- 關係代數
- 運算物件是關係
- 運算關係亦為關係
- 關係代數的運算子有兩種:集合運算子和專門的關係運算符
- 傳統的集合運算是從運算的“水平”方向即行的角度進行
- 專門的關係運算不僅涉及行而且涉及列
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
傳統的集合運算
- 並
- R和S
- 具有相同的目n
- 相應的屬性取自同一個域
- RuS
- 仍未n目關係,由屬於R或S的元組組成:R∪S = { t|t Î R∨t ÎS }
- R和S
- 差
- R和S
- 具有相同的目n
- 相應的屬性取自同一域
- R-S
- 仍為n目關係,由屬於R而不屬於S的所有元組組成R -S = { t|tÎR∧tÏS }
- R和S
- 交
- R和S
- 具有相同的目
- 相應 的屬性取自同一個域
- R∩S
- 仍為n目關係,由即屬於R由屬於S的元組組成R∩S = { t|t Î R∧t ÎS }
- R∩S = R –(R-S)
- R和S
- 笛卡兒積
- 嚴格地講應該是廣義的笛卡兒積
- R:n目關係,K1個元組
- S:m目關係,K2個元組
- R*S
- 列(n+m)列元組的集合
- 元組的前n列是關係的R的一個元組
- 後m列是關係的S的一個元組
- 行:K1*K2個元組
- R×S = {tr ts |tr ÎR ∧ tsÎS }
- 列(n+m)列元組的集合
專門的關係運算
- 1) R,tÎR,t[Ai]
設關係模式為R(A1,A2,…,An)
它的一個關係設為R
- ÎR表示t是R的一個元組
t[Ai]則表示元組t中相應於屬性Ai的一個分量
(2) A,t[A], A
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,則A稱為屬性列或屬性組。
t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合。
A則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}後剩餘的屬性組。
(3) tr ts
R為n目關係,S為m目關係。
- r ÎR,tsÎS, tr ts稱為元組的連線。
tr ts是一個n + m列的元組,前n個分量為R中的一個n元組,後m個分量為S中的一個m元組。
(4)象集Zx
給定一個關係R(X,Z),X和Z為屬性組。
當t[X]=x時,x在R中的象集(Images Set)為:
- x={t[Z]|t ÎR,t[X]=x}
它表示R中屬性組X上值為x的諸元組在Z上分量的集合
專門的關係運算
-
-
- 選擇
-
- 選擇又稱為限制
- 選擇運算的含義
- 在關係R中選擇滿足給定條件的諸元組σF(R) = {t|tÎR∧F(t)= '真'}
- F:選擇條件,是一個邏輯表示式,取值為真或假
- 基本形式為:X1θY1
- θ表示比較運算子,它可以是>,≥,<,≤,=或<>
- 選擇運算是從關係R中選取使邏輯表示式F為真的元組,是從行的角度進行的運算。
-
- 投影
- 從R中選擇出若干屬性列組成新的關係
- 投影造作主要是從列的角度進行運算
- 投影之後不僅取消了原關係中的某些列,而且還可能取消某些元組(避免重複行)
- 選擇
-
-
-
- 連結
- 連結也稱θ連結
- 連結運算的含義
- 從兩個關係中的笛卡爾積中選取屬性間滿足一定條件的元組
- A和B:分別為R和S上度數相等且可比的屬性組
- Θ:比較運算子
- 連結運算從R和S的廣義笛卡爾積R*S中選取R關係在A屬性組上的值與S關係在B上上的值滿足比較關係0的元組
- 兩類常用的連線運算
- 等值連線
- Θ為“=”的連線運算稱為等值連線
- 從關係R與S的廣義笛卡爾積中選取AB屬性值相等的那些元組,即等值連線為:R S = { | trÎR∧ts ÎS∧tr[A] = ts[B] }
- 自然連線
- 自然連線是一種特殊的等值連線
- 兩個關係中進行比較的分量必須是相同的屬性組
- 在結果中吧相同那個的屬性列去掉
- 自然連線的含義:R和S具有相同的屬性組B: R S = { [U-B] | tr ÎR∧ts ÎS∧tr[B] = ts[B] }
- 懸浮元組
- 兩個關係R和S在做自然連線時,關係R中某些元組有可能在R中這些元組時被捨棄了這些被捨棄的被元組成為懸浮元組
- 外連線
- 如果把懸浮元組也儲存在關係中,而在其他屬性上填空值,就叫外連線
- 左外連線
- 之保留左邊關係R中的懸浮元組
- 右外連線
- 只保留右邊關係S中的懸浮元組
- 自然連線是一種特殊的等值連線
- 等值連線
- 除運算
- 給定關係R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y和S中的Y可以有不同的屬性名,但必須出自相同的域集。
- R和S的除運算得到一個新的關係P(X)
- P是R中滿足下列條件的元組在X屬性列上的投影:
- 元組 在X上分量值X的像極Yx包含S在Y上投影的集合,記做:R÷S={tr[X]|trÎR∧πY(S)ÍYx}
- Yx:x在R中的象集,x = tr[X]
- 小結
- 關係代數運算
- 並交叉笛卡兒積,投影,選擇,連線,除
- 基本運算
- 並交叉笛卡兒積 投影 選擇
- 交 連線 除
- 可以用5中基本運算來表達
- 引進他們並不增加語言比表達能力,但可以簡化表達
- 5種基本運算:
- 並交差 笛卡兒積 投影 選擇,不能用其他運算來表達
- 3中簡化運算
- 交 連線 和 除
- 關係代數運算
- 連結
-
- 1.交:R∩S=R-(R-S)
- 2.連線:R S=sXqY(R×S)
- 3.除法:R÷S=PX(R)-PX(PX(R)×S-R)
可見,引進他們並沒有增加語言的表大能力,但可以大大簡化表示式
集合運算實現的資料庫操作
- 資料記錄的新增和插入
- 資料記錄的刪除:關係差運算
- 資料記錄的修改操作:先刪除後插入——關係差運算+關係並運算
- 關係的連線:關係的笛卡兒積