關係:乙個扁平二維表。n個集合的笛卡爾積集合的子集。
每一行為乙個元組,每一列為乙個屬性。關係模型為資料庫表的表頭。
主鍵(碼):選乙個候選碼作為身份區別。
超碼:乙個關係中,能夠標識乙個元組的屬性。
候選碼:乙個關係中,能夠標識乙個元組,最小屬性集合。可能有多個,基於使用者的使用環境。
null值與其他值比較時,其結果為null(null表示不確定)。
3 in 結果為null。
關係性的完整性約束機制:1.主碼屬性不能為空 2.外碼取值受限制(取值為參照的表的值,或為空)3.域完整性是針對某一具體關聯式資料庫的約束條件,它保證表中某些列不能輸入無效的值。4.使用者定義的完整性
它是一種抽象的查詢語言,用對關係的運算來表達查詢。
關係代數用到的運算子包括傳統的運算子和專門的關係運算子兩類。
傳統的集合運算有 並,差,交 和 笛卡爾積4個,都為雙目運算子。
專門的關係運算子有選擇,投影,連線和除4個,選擇和投影是單目運算子,連線和除是雙目運算子。
傳統的關係運算子:
1.並(union) 設有兩個關係r和s,它們具有相同的結構(屬於同乙個域)。r和s的並是由屬於r或屬於s的元組組成的集合,運算子為∪。記為t=r∪s。
2.差(difference) r和s的差是由屬於r但不屬於s的元組組成的集合,運算子為-。記為t=r-s。
3.交(intersection) r和s的交是由既屬於r又屬於s的元組組成的集合,運算子為∩。記為t=r∩s。 r∩s=r-(r-s)。
4.笛卡爾積 x,兩個分別為n目和m目的關係r和s的廣義笛卡爾積是乙個(n+m)列的元組的集合。
元組的前n列為r的乙個元組,元組的後m列為關係s的乙個元組。 若r有k1個元組,s有k2個元組,則關係r和關係s的笛卡爾積有k1 x k2個元組。
選擇運算: (類似6)選取某些符合條件的元組。
投影:(類似π)選取某些符合條件的列。
join操作:在某些條件下 r連線s,r中的每乙個元組 與s中的每乙個元組做笛卡爾積,滿足條件的元組留下來,兩個表的列並在一起。
natural join:r連線s,r中的每乙個元組 與s中的每乙個元組做笛卡爾積,相同的列取值相同的被留下,其餘的被刪除,兩個表的列並在一起。
左外連線:左邊全部的資訊會被留下,類似natural join。
象集:乙個關係r(x , z),x的值為某個值時,z的值對應的集合。
除:元組在x上分量值x的象集yx包含s在y上投影的集合。一定是象集yx含有每乙個s在y上投影的集合,結果只有分量值x。並且包含象集yx的元組對應的x應完全相同。
專門的關係運算子:
1.選擇運算
從關係中找出滿足給定條件的那些元組稱為選擇。其中的條件是以邏輯表示式給出的,值為真的元組將被選取。這種運算是從水平方向抽取元組。 在foxpro中的短語for和while均相當於選擇運算
如:list for 出版單位='高等教育出版社' and 單價<=20
2.投影運算
從關係模式中挑選若干屬性組成新的關係稱為投影。這是從列的角度進行的運算,相當於對關係進行垂直分解。在foxpro中短語fields相當於投影運算。 如: list fields 單位,姓名
3.連線運算
連線運算是從兩個關係的笛卡爾積中選擇屬性間滿足一定條件的元組。
4.、除法運算
在關係代數中,除法運算可理解為笛卡爾積的逆運算。
設被除關係r為m元關係,除關係s為n元關係,那麼它們的商為m-n元關係,記為r÷s。商的構成原則是:將被除關係r中的m-n列,按其值分成若干組,檢查每一組的n列值的集合是否包含除關係s,若包含則取m-n列的值作為商的乙個元組,否則不取。
設關係模式為 r(a1,a2,,,an) , 它的乙個關係設為r,t屬於r表示t是r的乙個元組(通俗些也就是一行資料)。t[ai] 表示元組t中相應屬性ai的乙個分量。
象集的本質是一次選擇運算和一次投影運算。
例如關係模式r(x, z),x和z表示互為補集的兩個屬性集,對於遵循模式r的某個關係a,
當t[x]=x時,x在r中的象集(images set)為:
zx=它表示:其實就是所有值等於x的元組(或記錄),然後在z上的投影。
------象集的本質是一次選擇運算和一次投影運算。
(r中x分量等於x的元組集合在屬性集z上的投影)。
如r:x y z
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
在關係r中,x可以取四個值
a1在r中的象集為
a2在r中的象集為
a3在r中的象集為
a4在r中的象集為
1.選擇運算實際上是從關係r中選取使邏輯表示式f為真的元組。這是從行的角度進行的運算。
2.投影運算是從r中選擇出若干列組成新的列。這是從列的角度進行的運算。
3.連線運算從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組,比如,從r到s的笛卡爾積 r x s 中選取r關係中在a屬性組上的值與s關係中在b屬性組上值滿足比較關係。
連線分為等值連線和自然連線。
等值連線,它是從關係r與s的笛卡爾積中選取a , b屬性值相等的那些元組。是從行的角度進行的。自然連線,是一種特殊的等值連線,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重複的屬性去掉。是同時從行的角度和列的角度進行的。
4.除 給定關係r(x,y) 和s(y,z) ,其中x,y,z為屬性組,r中的y與s中的y可以有不同的屬性名,但必須有相同的值域。r與s的除運算得到乙個新的關係p(x),該p中只包含r中投影下來的x屬性組,並且該屬性組x應該滿足: r(y)=s(y);
關係的查詢處理:
查詢處理是關聯式資料庫管理系統執行查詢語句的過程。
查詢處理可以分為4個階段:查詢分析,查詢檢查,查詢優化和查詢執行。
查詢分析檢查語法錯誤。查詢檢查進行語義檢查,即相應的操作物件是否存在,是否違背完整性約束等。
查詢優化是選擇乙個高效執行的查詢處理策略。
查詢執行是根據優化器得到的處理策略生成查詢執行計畫,由**生成器生成某個查詢計畫的**,然後執行。
最佳實踐:
如果在關係代數中需要做連線操作,則應使用自然連線,而不是笛卡爾積運算。
能在自然連線前使用選擇減少資料,則先執行選擇,後連線。
資料庫系統概論 關係代數
關聯式資料庫不是僅僅用來看的,必須有相應的運算來支撐才能得到我們想要的結果。之前也提到,關聯式資料庫有完整的數學模型來支撐,因此這一節可能就要考一考筆者的數學能力了!雖然上學期離散考得還行,但數學乃我一生之大敵 對資料庫系統下達指令需要語言。分為三類 至於這些語言的特點將分別展開說明。關係代數的運算...
資料庫系統概論 關係代數
關係代數語言用對關係的運算來表達查詢的要求,是一種抽象的查詢語言,其運算結果和物件均為關係,包括集合運算子和專門運算子 並運算 union 要求兩個關係具有相同的目且相應的屬性取自同一域,符號為 並運算的結果目不變,由屬於前乙個關係或屬於後乙個關係的元組構成 差運算 difference 要求兩個關...
資料庫系統概論 關係操作
常用的關係操作 查詢操作 選擇 投影 連線 除 並 差 交 笛卡爾積 其中選擇 投影 並 差 笛卡爾基是5種基本操作 資料更新 插入 刪除 修改 查詢的表達能力是其中最主要的部分 關係操作的特點 集合操作方式 操作的物件和結果都是集合,一次一集合的方式 非關係資料模型的資料操作方式 一次一記錄 檔案...