資料庫總結第2章
第二章 關係資料庫
關係資料庫簡介
1,提出關係模型的是美國IBM公司的E.F.Codd
1970年提出關係資料模型
E.F.Codd, “A Relational Model of Data for Large
Shared Data Banks”, 《Communication of the
ACM》,1970
2,之後,提出了關係代數和關係演算的概念
3,1972年提出了關係的第一、第二、第三正規化
4,1974年提出了關係的BC正規化
關係資料結構及形式化定義
關係
1,單一的資料結構----關係
現實世界的實體以及實體間的各種聯絡均用關係來表示
2,邏輯結構----二維表
從使用者角度,關係模型中資料的邏輯結構是一張二維表
3,建立在集合代數的基礎上
1. 域(Domain)
2. 笛卡爾積(Cartesian Product)
3. 關係(Relation)
域是一組具有相同資料型別的值的集合。例:
1,整數
2,實數
3,介於某個取值範圍的整數
4,指定長度的字串集合
5,{‘男’,‘女’}
……笛卡爾積
給定一組域D1,D2,…,Dn,允許其中某些域是相同的。
D1,D2,…,Dn的笛卡爾積為:
D1×D2×…×Dn =
{(d1,d2,…,dn)|diDi,i=1,2,…,n}
1,所有域的所有取值的一個組合
2,不能重複
………..
元組(Tuple)
1,笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組
2,(張清玫,計算機專業,李勇)、
3, (張清玫,計算機專業,劉晨) 等 都是元組
分量(Component)
1,笛卡爾積元素(d1,d2,…,dn)中的每一個值di 叫作一個分量
2,張清玫、計算機專業、李勇、劉晨等都是分量
基數(Cardinal number)
若Di(i=1,2,…,n)為有限集,其基數為mi(i=1,2,…,n),則D1×D2×…×Dn的基數M為:
笛卡爾積的表示方法
1,笛卡爾積可表示為一張二維表
2,表中的每行對應一個元組,表中的每列對應一個域
關係(Relation)
(1) 關係
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的
關係,表示為
R(D1,D2,…,Dn)
1,R:關係名
2,n:關係的目或度(Degree)
(2)元組
關係中的每個元素是關係中的元組,通常用t表示。
(3)單元關係與二元關係
當n=1時,稱該關係為單元關係(Unary relation)
或一元關係
當n=2時,稱該關係為二元關係(Binary relation)
(4)關係的表示
關係也是一個二維表,表的每行對應一個元組,表的每
列對應一個域
(5)屬性
關係中不同列可以對應相同的域
為了加以區分,必須對每列起一個名字,稱為屬性(Attribute)
n目關係必有n個屬性
(6)碼
候選碼(Candidate key)
若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼
簡單的情況:候選碼只包含一個屬性
全碼(All-key)
最極端的情況:關係模式的所有屬性組是這個關係模式的候選碼,稱為全碼(All-key)
主碼
若一個關係有多個候選碼,則選定其中一個為主碼(Primary key)
主屬性
候選碼的諸屬性稱為主屬性(Prime attribute)
不包含在任何侯選碼中的屬性稱為非主屬性(Non-Prime attribute)或非碼屬性(Non-key attribute)
(7)三類關係
基本關係(基本表或基表)
實際存在的表,是實際儲存資料的邏輯表示
查詢表
查詢結果對應的表
視圖表
由基本表或其他視圖表匯出的表,是虛表,不對
應實際儲存的資料
(8)基本關係的性質
① 列是同質的(Homogeneous)
② 不同的列可出自同一個域
其中的每一列稱為一個屬性
不同的屬性要給予不同的屬性名
③ 列的順序無所謂,,列的次序可以任意交換
④ 任意兩個元組的候選碼不能相同
⑤ 行的順序無所謂,行的次序可以任意交換
⑥ 分量必須取原子值
這是規範條件中最基本的一條
關係模式
關係模式(Relation Schema)是型
關係是值
關係模式是對關係的描述
1,元組集合的結構
屬性構成
屬性來自的域
屬性與域之間的映象關係
2,完整性約束條件
關係模式可以形式化地表示為:
R(U,D,DOM,F)
R 關係名
U 組成該關係的屬性名集合
D U中屬性所來自的域
DOM 屬性向域的映象集合
F 屬性間資料的依賴關係的集合
關係模式通常可以簡記為
R (U) 或 R (A1,A2,…,An)
R: 關係名
A1,A2,…,An : 屬性名
注:域名及屬性向域的映象常常直接說明為
屬性的型別、長度
關係模式
1,對關係的描述
2,靜態的、穩定的
關係
1,關係模式在某一時刻的狀態或內容
2,動態的、隨時間不斷變化的
關係模式和關係往往籠統稱為關係
通過上下文加以區別
關係資料庫
關係資料庫
在一個給定的應用領域中,所有關係的集合構成一個關係資料庫
關係資料庫的型與值
關係資料庫的型: 關係資料庫模式,是對關係資料庫的描述
關係資料庫的值: 關係模式在某一時刻對應的關係的集合,通常稱為關係資料庫
關係模型的儲存結構
關係資料庫的物理組織
1,有的關係資料庫管理系統中一個表對應一個作業系統檔案,將物理資料組織交給作業系統完成
2,有的關係資料庫管理系統從作業系統那裡申請若干個大的檔案,自己劃分檔案空間,組織表、索引等儲存結構,並進行儲存管理
關係操作
基本的關係操作
常用的關係操作
1,查詢操作:選擇、投影、連線、除、並、差、交、笛卡爾積
選擇、投影、並、差、笛卡爾基是5種基本操作
2,資料更新:插入、刪除、修改
關係操作的特點
1,集合操作方式:操作的物件和結果都是集合,一次一集合的方式
關係代數語言
1,用對關係的運算來表達查詢要求
2,代表:ISBL
關係演算語言:用謂詞來表達查詢要求
1,元組關係演算語言
謂詞變元的基本物件是元組變數
代表:APLHA, QUEL
2,域關係演算語言
謂詞變元的基本物件是域變數
代表:QBE
具有關係代數和關係演算雙重特點的語言
1,代表:SQL(Structured Query Language)
關係的完整性
實體完整性和參照完整性
關係模型必須滿足的完整性約束條件稱為關係的兩個不變性,應該由關係系統自動支援
使用者定義的完整性
應用領域需要遵循的約束條件,體現了具體領域中的語義約束
實體完整性
規則2.1 實體完整性規則(Entity Integrity)
1,若屬性A是基本關係R的主屬性,則屬性A不能取空值
2,空值就是“不知道”或“不存在”或“無意義”的值
實體完整性規則的說明
(1)實體完整性規則是針對基本關係而言的。
一個基本表通常對應現實世界的一個實體集。
(2)現實世界中的實體是可區分的,即它們具有某種唯
一性標識。
(3)關係模型中以主碼作為唯一性標識。
(4)主碼中的屬性即主屬性不能取空值。
主屬性取空值,就說明存在某個不可標識的實體,即存在不可區分的實體,這與第(2)點相矛盾,因此這個規則稱為實體完整性
參照完整性
1. 關係間的引用
2. 外碼
3. 參照完整性規則
1. 關係間的引用
在關係模型中實體及實體間的聯絡都是用關係來描述的,自然存在著關係與關係間的引用。
設F是基本關係R的一個或一組屬性,但不是關係R的碼。如果F與基本關係S的主碼Ks相對應,則稱F是R的外碼
基本關係R稱為參照關係(Referencing Relation)
基本關係S稱為被參照關係(Referenced Relation)
或目標關係(Target Relation)
外碼(續)
關係R和S不一定是不同的關係
目標關係S的主碼Ks 和參照關係的外碼F必須定義在同一個(或一組)域上
外碼並不一定要與相應的主碼同名
當外碼與相應的主碼屬於不同關係時,往往取相同的名 字,以便於識別
規則2.2 參照完整性規則
若屬性(或屬性組)F是基本關係R的外碼它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須為:
或者取空值(F的每個屬性值均為空值)
或者等於S中某個元組的主碼值
使用者定義的完整性
針對某一具體關係資料庫的約束條件,反映某一具體應用所涉及的資料必須滿足的語義要求
關係模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不需由應用程式承擔這一功能
關係代數
關係代數是一種抽象的查詢語言,它用對關係的運算來表達查詢
關係代數
1,運算物件是關係
2,運算結果亦為關係
3,關係代數的運算子有兩類:集合運算子和專門的關係運算符
傳統的集合運算是從關係的“水平”方向即行的角度進行
專門的關係運算不僅涉及行而且涉及列
運 算 符 |
含 義 |
|
集合 運算子 |
∪ |
並 |
- |
差 |
|
∩ |
交 |
|
× |
笛卡爾積 |
|
專門的 關係 運算子 |
σ |
選擇 |
π |
投影 |
|
連線 |
||
÷ |
除 |
傳統的集合運算
R和S
具有相同的目n(即兩個關係都有n個屬性)
相應的屬性取自同一個域
並(續)
R∪S
仍為n目關係,由屬於R或屬於S的元組組成
R∪S = { t|t R∨t S }
(2)差(Difference)
R和S
具有相同的目n
相應的屬性取自同一個域
R - S
仍為n目關係,由屬於R而不屬於S的所有元組組成
R -S = { t|tR∧tS }
(3) 交(Intersection)
R和S
具有相同的目n
相應的屬性取自同一個域
R∩S
仍為n目關係,由既屬於R又屬於S的元組組成
R∩S = { t|t R∧t S }
R∩S = R –(R-S)
(4) 笛卡爾積(Cartesian Product)
嚴格地講應該是廣義的笛卡爾積(Extended Cartesian Product)
R: n目關係,k1個元組
S: m目關係,k2個元組
R×S
列:(n+m)列元組的集合
元組的前n列是關係R的一個元組
後m列是關係S的一個元組
行:k1×k2個元組
R×S = {tr ts |tr R ∧ tsS }
專門的關係運算
先引入幾個記號
(1) R,tR,t[Ai]
設關係模式為R(A1,A2,…,An)
它的一個關係設為R
tR表示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目關係。
tr R,tsS, 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)為:
Zx={t[Z]|t R,t[X]=x}
它表示R中屬性組X上值為x的諸元組在Z上分量的集合
1. 選擇(Selection)
選擇又稱為限制(Restriction)
選擇運算子的含義
在關係R中選擇滿足給定條件的諸元組
σF(R) = {t|tR∧F(t)= '真'}
F:選擇條件,是一個邏輯表示式,取值為“真”或“假”
基本形式為:X1θY1
θ表示比較運算子,它可以是>,≥,<,≤,=或<>
選擇運算是從關係R中選取使邏輯表示式F為真的元組,是從行的角度進行的運算
2. 投影(Projection)
從R中選擇出若干屬性列組成新的關係
πA(R) = { t[A] | t R }
A:R中的屬性列
投影操作主要是從列的角度進行運算
投影之後不僅取消了原關係中的某些列,而且還可能取消某些元組(避免重複行)
3. 連線(Join)
連線也稱為θ連線
連線運算的含義
從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組
R S = { | tr R∧ts S∧tr[A]θts[B] }
A和B:分別為R和S上度數相等且可比的屬性組
θ:比較運算子
連線運算從R和S的廣義笛卡爾積R×S中選取R關係在A屬性組上的值與S關係在B屬性組上的值滿足比較關係θ的元組
兩類常用連線運算
等值連線(equijoin)
θ為“=”的連線運算稱為等值連線
從關係R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連線為:
R S = { | tr R∧ts S∧tr[A] = ts[B] }
自然連線(Natural join)
自然連線是一種特殊的等值連線
兩個關係中進行比較的分量必須是相同的屬性組
在結果中把重複的屬性列去掉
自然連線的含義
R和S具有相同的屬性組B
R S = { [U-B] | tr R∧ts S∧tr[B] = ts[B] }
懸浮元組(Dangling tuple)
兩個關係R和S在做自然連線時,關係R中某些元組有可能在S中不存在公共屬性上值相等的元組,從而造成R中這些元組在操作時被捨棄了,這些被捨棄的元組稱為懸浮元組。
外連線(Outer Join)
如果把懸浮元組也儲存在結果關係中,而在其他屬性上填空值(Null),就叫做外連線
左外連線(LEFT OUTER JOIN或LEFT JOIN)
只保留左邊關係R中的懸浮元組
右外連線(RIGHT OUTER JOIN或RIGHT JOIN)
只保留右邊關係S中的懸浮元組
4. 除運算(Division)
給定關係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]|trR∧πY(S)Yx}
Yx:x在R中的象集,x = tr[X]
在關係R中,A可以取四個值{a1,a2,a3,a4}
a1的象集為 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集為 {(b3,c7),(b2,c3)}
a3的象集為 {(b4,c6)}
a4的象集為 {(b6,c6)}
S在(B,C)上的投影為
{(b1,c2),(b2,c1),(b2,c3) }
只有a1的象集包含了S在(B,C)屬性組上的投影
所以 R÷S ={a1}
小結
關係代數運算
關係代數運算
並、差、交、笛卡爾積、投影、選擇、連線、除
基本運算
並、差、笛卡爾積、投影、選擇
交、連線、除
可以用5種基本運算來表達
引進它們並不增加語言的能力,但可以簡化表達
5種基本運算:
並、差、笛卡爾積、投影和選擇。
不能用其他運算來表達.
3種簡化運算(可以用基本運算來表示) :
交、連線和除。
1.交:R∩S=R-(R-S)
2.連線:R S=XY(R×S)
3.除法:R÷S=X(R)-X(X(R)×S-R)
可見,引進交、連線、除法運算並沒有增加語言的表達能力,但可以大大簡化表示式
集合運算實現的資料庫操作
(1) 資料記錄的新增和插入:關係並運算
(2) 資料記錄的刪除:關係差運算
(3) 資料記錄的修改操作:先刪除後插入→關 系差運算+關係並運算
(4) 關係的連線:關係的笛卡兒積
關係代數表示式
關係代數運算經有限次複合後形成的式子
典型關係代數語言
ISBL(Information System Base Language)
由IBM United Kingdom研究中心研製
用於PRTV(Peterlee Relational Test Vehicle)實驗系統
2.6 小結
關係資料庫系統是目前使用最廣泛的資料庫系統
關係資料庫系統與非關係資料庫系統的區別:
關係系統只有“表”這一種資料結構
非關係資料庫系統還有其他資料結構,以及對這些資料結構的操作
關係資料結構
關係
域
笛卡爾積
關係
關係,屬性,元組
候選碼,主碼,主屬性
基本關係的性質
關係模式
關係資料庫
關係模型的儲存結構
關係操作
查詢
選擇、投影、連線、除、並、交、差
數
第二章 關係資料庫
關係資料庫簡介
1,提出關係模型的是美國IBM公司的E.F.Codd
1970年提出關係資料模型
E.F.Codd, “A Relational Model of Data for Large
Shared Data Banks”, 《Communication of the
ACM》,1970
2,之後,提出了關係代數和關係演算的概念
3,1972年提出了關係的第一、第二、第三正規化
4,1974年提出了關係的BC正規化
關係資料結構及形式化定義
關係
1,單一的資料結構----關係
現實世界的實體以及實體間的各種聯絡均用關係來表示
2,邏輯結構----二維表
從使用者角度,關係模型中資料的邏輯結構是一張二維表
3,建立在集合代數的基礎上
1. 域(Domain)
2. 笛卡爾積(Cartesian Product)
3. 關係(Relation)
域是一組具有相同資料型別的值的集合。例:
1,整數
2,實數
3,介於某個取值範圍的整數
4,指定長度的字串集合
5,{‘男’,‘女’}
……笛卡爾積
給定一組域D1,D2,…,Dn,允許其中某些域是相同的。
D1,D2,…,Dn的笛卡爾積為:
D1×D2×…×Dn =
{(d1,d2,…,dn)|diDi,i=1,2,…,n}
1,所有域的所有取值的一個組合
2,不能重複
………..
元組(Tuple)
1,笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組
2,(張清玫,計算機專業,李勇)、
3, (張清玫,計算機專業,劉晨) 等 都是元組
分量(Component)
1,笛卡爾積元素(d1,d2,…,dn)中的每一個值di 叫作一個分量
2,張清玫、計算機專業、李勇、劉晨等都是分量
基數(Cardinal number)
若Di(i=1,2,…,n)為有限集,其基數為mi(i=1,2,…,n),則D1×D2×…×Dn的基數M為:
笛卡爾積的表示方法
1,笛卡爾積可表示為一張二維表
2,表中的每行對應一個元組,表中的每列對應一個域
關係(Relation)
(1) 關係
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的
關係,表示為
R(D1,D2,…,Dn)
1,R:關係名
2,n:關係的目或度(Degree)
(2)元組
關係中的每個元素是關係中的元組,通常用t表示。
(3)單元關係與二元關係
當n=1時,稱該關係為單元關係(Unary relation)
或一元關係
當n=2時,稱該關係為二元關係(Binary relation)
(4)關係的表示
關係也是一個二維表,表的每行對應一個元組,表的每
列對應一個域
(5)屬性
關係中不同列可以對應相同的域
為了加以區分,必須對每列起一個名字,稱為屬性(Attribute)
n目關係必有n個屬性
(6)碼
候選碼(Candidate key)
若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼
簡單的情況:候選碼只包含一個屬性
全碼(All-key)
最極端的情況:關係模式的所有屬性組是這個關係模式的候選碼,稱為全碼(All-key)
主碼
若一個關係有多個候選碼,則選定其中一個為主碼(Primary key)
主屬性
候選碼的諸屬性稱為主屬性(Prime attribute)
不包含在任何侯選碼中的屬性稱為非主屬性(Non-Prime attribute)或非碼屬性(Non-key attribute)
(7)三類關係
基本關係(基本表或基表)
實際存在的表,是實際儲存資料的邏輯表示
查詢表
查詢結果對應的表
視圖表
由基本表或其他視圖表匯出的表,是虛表,不對
應實際儲存的資料
(8)基本關係的性質
① 列是同質的(Homogeneous)
② 不同的列可出自同一個域
其中的每一列稱為一個屬性
不同的屬性要給予不同的屬性名
③ 列的順序無所謂,,列的次序可以任意交換
④ 任意兩個元組的候選碼不能相同
⑤ 行的順序無所謂,行的次序可以任意交換
⑥ 分量必須取原子值
這是規範條件中最基本的一條
關係模式
關係模式(Relation Schema)是型
關係是值
關係模式是對關係的描述
1,元組集合的結構
屬性構成
屬性來自的域
屬性與域之間的映象關係
2,完整性約束條件
關係模式可以形式化地表示為:
R(U,D,DOM,F)
R 關係名
U 組成該關係的屬性名集合
D U中屬性所來自的域
DOM 屬性向域的映象集合
F 屬性間資料的依賴關係的集合
關係模式通常可以簡記為
R (U) 或 R (A1,A2,…,An)
R: 關係名
A1,A2,…,An : 屬性名
注:域名及屬性向域的映象常常直接說明為
屬性的型別、長度
關係模式
1,對關係的描述
2,靜態的、穩定的
關係
1,關係模式在某一時刻的狀態或內容
2,動態的、隨時間不斷變化的
關係模式和關係往往籠統稱為關係
通過上下文加以區別
關係資料庫
關係資料庫
在一個給定的應用領域中,所有關係的集合構成一個關係資料庫
關係資料庫的型與值
關係資料庫的型: 關係資料庫模式,是對關係資料庫的描述
關係資料庫的值: 關係模式在某一時刻對應的關係的集合,通常稱為關係資料庫
關係模型的儲存結構
關係資料庫的物理組織
1,有的關係資料庫管理系統中一個表對應一個作業系統檔案,將物理資料組織交給作業系統完成
2,有的關係資料庫管理系統從作業系統那裡申請若干個大的檔案,自己劃分檔案空間,組織表、索引等儲存結構,並進行儲存管理
關係操作
基本的關係操作
常用的關係操作
1,查詢操作:選擇、投影、連線、除、並、差、交、笛卡爾積
選擇、投影、並、差、笛卡爾基是5種基本操作
2,資料更新:插入、刪除、修改
關係操作的特點
1,集合操作方式:操作的物件和結果都是集合,一次一集合的方式
關係代數語言
1,用對關係的運算來表達查詢要求
2,代表:ISBL
關係演算語言:用謂詞來表達查詢要求
1,元組關係演算語言
謂詞變元的基本物件是元組變數
代表:APLHA, QUEL
2,域關係演算語言
謂詞變元的基本物件是域變數
代表:QBE
具有關係代數和關係演算雙重特點的語言
1,代表:SQL(Structured Query Language)
關係的完整性
實體完整性和參照完整性
關係模型必須滿足的完整性約束條件稱為關係的兩個不變性,應該由關係系統自動支援
使用者定義的完整性
應用領域需要遵循的約束條件,體現了具體領域中的語義約束
實體完整性
規則2.1 實體完整性規則(Entity Integrity)
1,若屬性A是基本關係R的主屬性,則屬性A不能取空值
2,空值就是“不知道”或“不存在”或“無意義”的值
實體完整性規則的說明
(1)實體完整性規則是針對基本關係而言的。
一個基本表通常對應現實世界的一個實體集。
(2)現實世界中的實體是可區分的,即它們具有某種唯
一性標識。
(3)關係模型中以主碼作為唯一性標識。
(4)主碼中的屬性即主屬性不能取空值。
主屬性取空值,就說明存在某個不可標識的實體,即存在不可區分的實體,這與第(2)點相矛盾,因此這個規則稱為實體完整性
參照完整性
1. 關係間的引用
2. 外碼
3. 參照完整性規則
1. 關係間的引用
在關係模型中實體及實體間的聯絡都是用關係來描述的,自然存在著關係與關係間的引用。
設F是基本關係R的一個或一組屬性,但不是關係R的碼。如果F與基本關係S的主碼Ks相對應,則稱F是R的外碼
基本關係R稱為參照關係(Referencing Relation)
基本關係S稱為被參照關係(Referenced Relation)
或目標關係(Target Relation)
外碼(續)
關係R和S不一定是不同的關係
目標關係S的主碼Ks 和參照關係的外碼F必須定義在同一個(或一組)域上
外碼並不一定要與相應的主碼同名
當外碼與相應的主碼屬於不同關係時,往往取相同的名 字,以便於識別
規則2.2 參照完整性規則
若屬性(或屬性組)F是基本關係R的外碼它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須為:
或者取空值(F的每個屬性值均為空值)
或者等於S中某個元組的主碼值
使用者定義的完整性
針對某一具體關係資料庫的約束條件,反映某一具體應用所涉及的資料必須滿足的語義要求
關係模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不需由應用程式承擔這一功能
關係代數
關係代數是一種抽象的查詢語言,它用對關係的運算來表達查詢
關係代數
1,運算物件是關係
2,運算結果亦為關係
3,關係代數的運算子有兩類:集合運算子和專門的關係運算符
傳統的集合運算是從關係的“水平”方向即行的角度進行
專門的關係運算不僅涉及行而且涉及列
運 算 符 |
含 義 |
|
集合 運算子 |
∪ |
並 |
- |
差 |
|
∩ |
交 |
|
× |
笛卡爾積 |
|
專門的 關係 運算子 |
σ |
選擇 |
π |
投影 |
|
連線 |
||
÷ |
除 |
傳統的集合運算
R和S
具有相同的目n(即兩個關係都有n個屬性)
相應的屬性取自同一個域
並(續)
R∪S
仍為n目關係,由屬於R或屬於S的元組組成
R∪S = { t|t R∨t S }
(2)差(Difference)
R和S
具有相同的目n
相應的屬性取自同一個域
R - S
仍為n目關係,由屬於R而不屬於S的所有元組組成
R -S = { t|tR∧tS }
(3) 交(Intersection)
R和S
具有相同的目n
相應的屬性取自同一個域
R∩S
仍為n目關係,由既屬於R又屬於S的元組組成
R∩S = { t|t R∧t S }
R∩S = R –(R-S)
(4) 笛卡爾積(Cartesian Product)
嚴格地講應該是廣義的笛卡爾積(Extended Cartesian Product)
R: n目關係,k1個元組
S: m目關係,k2個元組
R×S
列:(n+m)列元組的集合
元組的前n列是關係R的一個元組
後m列是關係S的一個元組
行:k1×k2個元組
R×S = {tr ts |tr R ∧ tsS }
專門的關係運算
先引入幾個記號
(1) R,tR,t[Ai]
設關係模式為R(A1,A2,…,An)
它的一個關係設為R
tR表示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目關係。
tr R,tsS, 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)為:
Zx={t[Z]|t R,t[X]=x}
它表示R中屬性組X上值為x的諸元組在Z上分量的集合
1. 選擇(Selection)
選擇又稱為限制(Restriction)
選擇運算子的含義
在關係R中選擇滿足給定條件的諸元組
σF(R) = {t|tR∧F(t)= '真'}
F:選擇條件,是一個邏輯表示式,取值為“真”或“假”
基本形式為:X1θY1
θ表示比較運算子,它可以是>,≥,<,≤,=或<>
選擇運算是從關係R中選取使邏輯表示式F為真的元組,是從行的角度進行的運算
2. 投影(Projection)
從R中選擇出若干屬性列組成新的關係
πA(R) = { t[A] | t R }
A:R中的屬性列
投影操作主要是從列的角度進行運算
投影之後不僅取消了原關係中的某些列,而且還可能取消某些元組(避免重複行)
3. 連線(Join)
連線也稱為θ連線
連線運算的含義
從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組
R S = { | tr R∧ts S∧tr[A]θts[B] }