關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)迂尝。關(guān)系模型的組成:關(guān)系數(shù)據(jù)結(jié)構(gòu)嘉熊,關(guān)系操作陈惰,關(guān)系的完整性北专。
單一的數(shù)據(jù)結(jié)構(gòu)——關(guān)系:現(xiàn)實世界的實體以及實體間的各種聯(lián)系均用關(guān)系表示禀挫。數(shù)據(jù)的邏輯結(jié)構(gòu)——二維表:從用戶角度,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表拓颓。
關(guān)系模型建立在集合代數(shù)的基礎(chǔ)上语婴。
域是一組具有相同數(shù)據(jù)類型的值的集合。
笛卡爾積驶睦,所有給定域的所有取值的一個組合砰左,不能重復(fù)。笛卡爾積中每一個元素叫做一個n元組或簡稱元組场航。分量缠导,笛卡爾積元素中的每一個值叫做一個分量。笛卡爾積可表示為一個二維表旗闽,表中每行對應(yīng)一個元組酬核,每列對應(yīng)一個域蜜另。
關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示嫡意。n=1時举瑰,該關(guān)系為單元關(guān)系,n=2時蔬螟,為二元關(guān)系此迅。關(guān)系也是一個二維表。關(guān)系中不同列可以對應(yīng)相同域旧巾,為了加以區(qū)分耸序,對每列起一個名字,稱為屬性鲁猩,n目關(guān)系必有n個屬性坎怪。若關(guān)系中某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼廓握。最簡單的情況下搅窿,候選碼只包含一個屬性,最極端的情況下隙券,所有屬性組都是候選碼男应,稱為全碼。主碼娱仔,若一個關(guān)系有很多候選碼沐飘,則選定其中一個為主碼,主碼中的各個屬性稱為主屬性牲迫,不包含在任何候選碼中的屬性稱為非主屬性或非碼屬性耐朴。基本關(guān)系(基本表)恩溅,實際存在的表隔箍,是實際存儲數(shù)據(jù)的邏輯表示;查詢表脚乡,查詢結(jié)果對應(yīng)的表蜒滩;視圖表,由基本表或其他視圖表導(dǎo)出的表奶稠,是虛表俯艰,不對應(yīng)實際存儲的數(shù)據(jù)⌒慷基本關(guān)系性質(zhì):列是同質(zhì)的竹握;不同的列可出自同一個域;列的順序無所謂辆飘;任意兩個元組的候選碼不能取相同的值啦辐;行的順序無所謂谓传;分量必須取原子值。
關(guān)系模式是型芹关,關(guān)系是值续挟。關(guān)系模式是對關(guān)系的描述。
關(guān)系模式可以表示為R(U,D,dom,F)侥衬,R是關(guān)系名诗祸;U是組成該關(guān)系的屬性名集合;D是屬性組U中屬性所來自的域轴总;dom是屬性向域的映像集合直颅;F是屬性間的數(shù)據(jù)依賴關(guān)系集合。域名及屬性向域的映像常常直接說明為屬性的類型怀樟、長度功偿。
關(guān)系模式,對關(guān)系的描述往堡,靜態(tài)的脖含、穩(wěn)定的。關(guān)系投蝉,關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容,動態(tài)的征堪、隨時間不斷變化的瘩缆。關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系,通過上下文加以區(qū)別佃蚜。
關(guān)系數(shù)據(jù)庫庸娱,在給定的應(yīng)用領(lǐng)域中,所有實體及實體間的聯(lián)系的關(guān)系的集合構(gòu)成了一個關(guān)系數(shù)據(jù)庫谐算。
常用的關(guān)系操作熟尉。查詢:選擇、投影洲脂、連接斤儿、除、并恐锦、交往果、差;數(shù)據(jù)更新:插入一铅、刪除陕贮、修改;查詢的表達能力是其中最主要的部分潘飘。?
關(guān)系操作的特點肮之。集合操作方式掉缺,即操作的對象和結(jié)果都是集合,一次一集合的方式戈擒。非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄眶明。
關(guān)系數(shù)據(jù)語言的種類。關(guān)系代數(shù)語言峦甩,用對關(guān)系的運算來表達查詢要求赘来。關(guān)系演算語言,用謂詞來表達查詢要求:元組關(guān)系演算語言凯傲,謂詞變元的基本對象是元祖變量犬辰;域關(guān)系演算語言,謂詞變元的基本對象是域變量冰单。具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言幌缝,例如SQL。
關(guān)系數(shù)據(jù)語言的特點诫欠。一種高度非過程化的語言:存取路徑的選擇由DBMS的優(yōu)化機制來完成涵卵,用戶不必用循環(huán)機構(gòu)就可以完成數(shù)據(jù)操作。能夠嵌入高級語言中使用荒叼。關(guān)系代數(shù)轿偎、元組關(guān)系演算和域關(guān)系演算三種語言在表達能力上完全等價。
關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件被廓。關(guān)系模型中三類完整性約束:實體完整性坏晦,參照完整性,用戶定義的完整性嫁乘。實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件昆婿,被稱作是關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持蜓斧。用戶定義的完整性仓蛆,反映應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束挎春,用戶定義后由系統(tǒng)支持看疙。
實體完整性規(guī)則,若屬性A是基本關(guān)系R的主屬性直奋,則屬性A不能取空值狼荞。
外碼。設(shè)F是基本關(guān)系R的一個或一組屬性帮碰,但不是R的碼相味。如果F與基本關(guān)系S的主碼Ks相對應(yīng),則稱F是基本關(guān)系R的外碼殉挽,基本關(guān)系R稱為參照關(guān)系丰涉,基本關(guān)系S稱為被參照關(guān)系或目標關(guān)系拓巧。
參照完整性規(guī)則。若屬性F(或?qū)傩越M)是基本關(guān)系R的外碼一死,它與基本關(guān)系S的主碼Ks相對應(yīng)(S和R不一定是不同的關(guān)系)肛度,則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值投慈。
用戶定義的完整性承耿。針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求伪煤。關(guān)系模型應(yīng)提供定義和檢驗這類完整性的機制加袋,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔這一功能抱既。
關(guān)系代數(shù)運算的三個要素职烧。運算對象:關(guān)系。運算結(jié)果:關(guān)系防泵。運算符:四類蚀之。
集合運算符,將關(guān)系看成元組的集合捷泞,運算時從關(guān)系的“水平”方向即行的角度來進行足删。專門的關(guān)系運算符,不僅涉及行而且涉及列锁右。算術(shù)比較符壹堰,輔助專門的關(guān)系運算符進行操作。邏輯運算符骡湖,輔助專門的關(guān)系運算符進行操作。
選擇峻厚,又稱為限制响蕴。在關(guān)系R中選擇滿足給定條件的諸元組。F是選擇條件惠桃,是一個邏輯表達式浦夷。選擇運算符是從關(guān)系R中選取使邏輯表達式F為真的元組,是從行的角度進行的計算辜王。
投影劈狐。從R中選擇出若干屬性列組成新的關(guān)系。主要從列的角度進行計算呐馆,但投影之后不僅取消了原關(guān)系中的某些列肥缔,還可能取消某些元組(避免重復(fù)行)。
連接汹来。從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組续膳。連接運算從R和S的廣義笛卡爾積RXS中選雀耐А(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系的元組。兩類常用連接坟岔。等值連接谒兄,從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組社付;自然連接承疲,一種特殊的等值連接,在兩個關(guān)系中進行比較的分量必須是相同的屬性組鸥咖,在結(jié)果中把重復(fù)的屬性列去掉燕鸽。一般連接操作是從行的角度進行計算的,自然連接還需要取消重復(fù)列扛或,同時從行和列的角度進行計算绵咱。
R與S的除運算能得到一個新的關(guān)系Px,P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的場合熙兔。同時從行與列角度進行計算悲伶。
典型關(guān)系代數(shù)語言ISBL。由IBM研究中心研制住涉;用于PRTV實驗系統(tǒng)麸锉。