數據庫學習筆記(四)
2024-07-21 02:08:28
供稿:網友
國內最大的酷站演示中心!
關系數據庫
六, 關系代數
關系代數是一種抽象的查詢語言,是關系數據操縱語言的一種傳統表達方式,它是用對關系的運算來表達查詢的。
1,傳統的集合運算
并(union),差(difference),交(intersection),廣義笛卡兒(extended cartesian product)
2,專門的關系運算
規定的幾個記號。
⑴ 設關系模式為r(a1,a2, …,an)。它的一個關系設為r。t∈r表示t是r的一個元組。t[ai]則表示元組t中相應于屬性ai上的一個分量。
⑵ 若a={ai1,ai2, …,aik},其中ai1,ai2, …,aik是a1,a2, …,an中的一部分,則a稱為屬性列或域列。t[a]=(t[ai1],t[ai2],…,t[aik])表示元組t在屬性列a上諸分量的集合。則表示(a1,a2, …,an)中去掉{ai1,ai2, …,aik}后剩余的屬性組。
⑶ r為n目關系,s為m目關系。tr∈r,ts∈s,tr ts稱為元組的連接。它是一個n+m列的元組,前n個分量為r中的一個n元組,后m個分量為s中的一個m元組。
⑷ 給定一個關系r(x,z),x和z為屬性組。定義當t[x]=x時,x在r中的象集為:
zx={t[z] | t∈r,t[x]=x}
3,下面給出關系運算的定義:
1.選擇(selection)
σf(r)={ t | t∈r∧f(t)=’真’}
從關系r中選取使邏輯表達式f為真的元組。這是從行的角度進行的運算。
2.投影(projection)
關系r上的投影使從r中選擇出若干屬性列組成新的關系。記做:
πa(r)={ t[a] | t∈r }
投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組,因為取消了某些屬性列后,就可能出現重復行,應取消這些完全相同的行。
3.連接(join)
連接也稱為 連接。它是從兩個關系的笛卡兒積中選取屬性間滿足一定條件的元組。
連接運算中由兩種常用的連接,一種是等值連接,一種是自然連接。
1,為“=”的連接運算稱為等值連接。它是從關系r與s的廣義笛卡兒積中選取a,b屬性值相等的那些元組,集等值連接為:
2,自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。
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上投影的集合。除操作是同時從行和列的角度進行運算。
七,關系演算
1, 元素關系演算語言alpha:
alpha語言主要有get、put、hold、update、delete、drop六條語句,語句的基本格式是:
操作語句 工作空間名(表達式): 操作條件
表達式用于指定語句的操作對象,它可以是關系名或屬性名,一條語句可以同時操作多個關系或多個屬性。操作條件是一個邏輯表達式,用于將操作對象限定在滿足條件的元組中,操作條件可以為空。
1, get檢索操作
2, update更新操作,步驟如下:
·首先用hold語句將要修改的元組從數據庫中讀到工作空間中
·然后用宿主語言修改工作空間中元組的屬性
·最后用update語句將修改后的元組送回數據庫中
3, put插入操作,步驟如下:
·首先用宿主語言在工作空間中建立新元組
·然后用put語句把該元組存入指定的關系中
4, hold帶著并發控制的get語句
5, delete刪除操作
·用hold語句把要刪除的元組從數據庫中讀到工作空間中
·用delete語句刪除該元組
2, 域關系演算qbe(query by example)
最突出的特點是它的操作方式。它是一種高度非過程化的基于屏幕表格的查詢語言,用戶通過終端屏幕編輯程序以填寫表格的方式構造查詢要求,而查詢結果也是以表格形式顯示,因此非常直觀,易學易用。
八,關系數據庫管理系統:
關系數據庫管理系統簡稱為關系系統,是指支持關系模型的系統。一個數據庫管理系統可定義為關系系統,當且僅當它至少支持:
1, 關系數據庫(即關系數據結構)。也就是說,從用戶觀點看,數據庫是由表構成的,并且系統中只有表這種結構。
2, 支持選擇、投影和(自然)連接運算。對這些運算不要求用戶定義任何物理存取路徑。
按照e.f.codd的思想,依據關系系統支持關系模型的程度不同,可以把關系系統分為四類:
1,表式系統。
這類系統僅支持關系數據結構(即表),不支持集合級的操作。表式系統實際上不能算關系系統。倒排表列(inverted list)系統就屬于這一類。
2,(最小)關系系統。
即上面定義的關系系統,它支持關系數據結構和選擇、投影、連接三種關系操作。許多微機關系系統如foxbase、foxpro等就屬于這一類。
3,關系上完備的系統。
這類系統支持關系數據結構和所有的關系代數操作(功能上與關系代數等價)。目前許多中大型關系系統如db2、 oracle等就屬于這一類。
4,全關系系統。
這類系統支持關系模型的所有特征,特別是數據結構中域的概念,實體完整性和參照完整性。雖然db2、 oracle等系統已經接近這個目標,但到目前為止尚沒有一個系統是全關系系統。
盡管不同的關系系統對關系模型的支持程度不同,但它們的體系結構都符合三級模式結構,提供了模式、外模式、內模式以及模式與外模式之間的映象、模式與內模式之間的映象。表就是關系系統的模式,在表上面可以定義視圖,這就是關系系統的外模式,關系系統通常都提供了定義視圖即外模式的語句。內模式則是實際存儲在磁盤或磁帶上的文件。
未完待續。
小康
[email protected]
2004-2-29