柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù)系統(tǒng) --- 關(guān)系模型
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù)系統(tǒng) --- 關(guān)系模型
一、關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)以及形式化定義
? ? ? ? 1.關(guān)系
? ? ? ? 域:一組具有相同數(shù)據(jù)結(jié)構(gòu)的值的集合。
? ? ? ? 笛卡爾積:域上的一種集合運(yùn)算。多個(gè)集合做笛卡爾積的結(jié)果是每個(gè)集合取一個(gè)元素組合得到的一個(gè)新的集合。
? ? ? ? 域的基數(shù):一個(gè)域上允許的不同取值的個(gè)數(shù)。
? ? ? ? 關(guān)系:在關(guān)系模型D1、D2、D3、...的笛卡爾積是沒(méi)有實(shí)際語(yǔ)意的,只有它的某個(gè)真子集才有實(shí)際含義。
????????給定一組域D1,D2,D3,…,Dn,允許其中某些域是相同的,D1,D2,D3,…,Dn。的笛卡兒積D1×D2xD3×...Dn的子集稱為這組域上的關(guān)系,表示為R(D1,D2,…,Dn)。
????????這里R表示關(guān)系名,n是關(guān)系的目或度(degree)。
????????當(dāng)n=1時(shí),稱該關(guān)系為一元關(guān)系(unary?relation)或單元關(guān)系、單目關(guān)系。 ????????當(dāng)n=2時(shí),稱該關(guān)系為二元關(guān)系(binary?relation)或二目關(guān)系。
????????關(guān)系中的每個(gè)元素是關(guān)系中的元組,通常用t來(lái)表示。
????????關(guān)系是笛卡兒積的有限子集,所以關(guān)系是一張二維表,表的每一行對(duì)應(yīng)一個(gè)元組,表的每一列對(duì)應(yīng)一個(gè)域。由于域可以相同,為了加以區(qū)分,必須對(duì)每一列起一個(gè)名字,稱為屬性。n目關(guān)系必有n個(gè)屬性。
????????關(guān)系可以有三種類型:基本關(guān)系 (通常又稱為基本表或基表)、查詢結(jié)果和視圖。其中,基本關(guān)系是實(shí)際存在的表,它是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示;查詢結(jié)果是查詢執(zhí)行產(chǎn)生的結(jié)果對(duì)應(yīng)的臨時(shí)表;視圖是由基本表或其他視圖導(dǎo)出的虛表,不存儲(chǔ)實(shí)際數(shù)據(jù)。
????????基本關(guān)系具有6條性質(zhì):①.列是同質(zhì)的(homogeneous),即每一列中的分量是同一類型的數(shù)據(jù),來(lái)自同一個(gè)域。②.不同的列可出自同一個(gè)域,稱其中的每一列為一個(gè)屬性,不同的屬性要給予不同的屬性名。③.列的順序無(wú)所謂,即列的次序可以任意交換。由于列順序是無(wú)關(guān)緊要的,因此在許多實(shí)際的關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品中增加新屬性時(shí),永遠(yuǎn)是將其插至最后。④.任意兩個(gè)元組的碼不能取相同的值。⑤.行的順序無(wú)所謂,即行的次序可以任意交換。⑥.分量必須取原子值,即每一個(gè)分量都必須是不可分的數(shù)據(jù)項(xiàng)。
????????關(guān)系模型要求關(guān)系必須滿足一定的規(guī)范條件,其最基本的一條就是元組的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng)。
????????規(guī)范化的關(guān)系簡(jiǎn)稱為范式(normal?form,?NF)
? ? ? ? 2.關(guān)系模式
? ? ? ? 關(guān)系模式是“型”,關(guān)系是“值”。
????????關(guān)系的描述稱為關(guān)系模式(relation?schema)。它可以形式化地表示為
????????R(U,D,DOM,F(xiàn))
????????其中R為關(guān)系名,U為組成該關(guān)系的屬性的屬性名集合,D為U中屬性所來(lái)自的域,DOM為屬性向域的映像集合,F(xiàn)為屬性間數(shù)據(jù)依賴關(guān)系的集合。
????????關(guān)系模式通常簡(jiǎn)記為
R(U)或者 R(A1,A2,…,An)
????????其中R為關(guān)系名,A,A,…,A,為屬性名;而域名及屬性向域的映像則常直接說(shuō)明為屬性的類型、長(zhǎng)度。
????????若關(guān)系模式中的某一個(gè)屬性或一組屬性的值能唯一地標(biāo)識(shí)一個(gè)元組,而它的真子集不能唯一地標(biāo)識(shí)一個(gè)元組,則稱該屬性或?qū)傩越M為候選碼(candidate?key)。
????????若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼(primary?key),或稱主鍵。
????????候選碼的諸屬性稱為主屬性(prime?atnbute)。
????????不包含在任何候選碼中的屬性稱為非主屬性(non?prime?attribute)或非碼屬性(non-key?atribute)。
????????在最簡(jiǎn)單的情況下,候選碼只包含一個(gè)屬性。在最極端的情況下,關(guān)系模式的所有屬性是這個(gè)關(guān)系模式的候選碼,稱為全碼(all-key)。
????????關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容。
????????關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,這是因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
????????在實(shí)際工作中,人們常常把關(guān)系模式和關(guān)系都籠統(tǒng)地稱為關(guān)系。
? ? ? ? 3.關(guān)系數(shù)據(jù)庫(kù)
????????支持關(guān)系模型的數(shù)據(jù)庫(kù)系統(tǒng)稱為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。在關(guān)系模型中,實(shí)體以及實(shí)體間的聯(lián)系都是用關(guān)系來(lái)表示的。
????????例如,“學(xué)生”實(shí)體、“課程”實(shí)體、學(xué)生與課程之間選修課程的多對(duì)多聯(lián)系都可以分別用一個(gè)關(guān)系模式來(lái)描述。
????????“學(xué)生”關(guān)系模式:Student(Sno,Sname,Ssex,Sbirthdate,Smajor),包括學(xué)號(hào)、姓名、性別、出生日期和主修專業(yè)等屬性。 ????????“課程”關(guān)系模式:Course(Cno,Cname,Ccredit,Cpno),包括課程號(hào)、課程名、學(xué)分、先修課(直接先修課)等屬性。 ????????“學(xué)生選課”關(guān)系模式:SC(Sno,Cno,Grade,Semester,Teachingclass),包括學(xué)號(hào)、課程號(hào)、成績(jī)、開(kāi)課學(xué)期、教學(xué)班等屬性。
????????在一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,某一時(shí)刻所有關(guān)系模式對(duì)應(yīng)的關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫(kù)。
????????關(guān)系數(shù)據(jù)庫(kù)也有類型和值之分。
????????關(guān)系數(shù)據(jù)庫(kù)的類型就是關(guān)系數(shù)據(jù)庫(kù)中所有關(guān)系模式的集合,是對(duì)關(guān)系數(shù)據(jù)庫(kù)的描述,通常稱為關(guān)系數(shù)據(jù)庫(kù)模式。
????????關(guān)系數(shù)據(jù)庫(kù)的值是這些關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,通常將為關(guān)系數(shù)據(jù)庫(kù)。
? ? ? ? 4.關(guān)系模型的存儲(chǔ)結(jié)構(gòu)
????????關(guān)系模型是關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu),用關(guān)系數(shù)據(jù)定義語(yǔ)言描述。例如關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL。
????????支持關(guān)系模型的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(relational?database?management?system,?RDBMS)將以一定的組織方式存儲(chǔ)和管理數(shù)據(jù),即設(shè)計(jì)和實(shí)現(xiàn)關(guān)系模型的存儲(chǔ)結(jié)構(gòu),這是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的重要職責(zé)之一。
????????例如,有的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中一個(gè)表對(duì)應(yīng)一個(gè)操作系統(tǒng)文件,將物理數(shù)據(jù)組織的許多任務(wù)交給操作系統(tǒng)完成;有的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)則從操作系統(tǒng)那里申請(qǐng)若干個(gè)大的文件,自己劃分文件空間,組織表、索引等存儲(chǔ)結(jié)構(gòu)并進(jìn)行存儲(chǔ)管理。
二、關(guān)系操作
? ? ? ? 1.基本的關(guān)系操作
????????關(guān)系模型中常用的關(guān)系操作包括查詢(query)操作和更新操作兩大部分,而更新操作又可分為插入(insert)、刪除(delete)、修改(update)等操作。
? ? ? ? 關(guān)系的查詢表達(dá)能力很強(qiáng),因此查詢操作是關(guān)系操作中最主要的部分。查詢操作又可進(jìn)一步分為選擇(select)、投影(project)、連接(join)、除(divide)、并(union)、差(difference)、交(intersection)、笛卡兒積等操作。其中選擇、投影、并、差、笛卡兒積是5種基本操作,其他操作可以用基本操作來(lái)定義和導(dǎo)出,就像乘法可以用加法來(lái)定義和導(dǎo)出一樣。?
????????關(guān)系操作的特點(diǎn)是集合操作方式,即操作的對(duì)象和結(jié)果都是集合。這種操作方式也稱為成組數(shù)據(jù)處理(set-at-a-time?processing),即一次一個(gè)集合的操作方式。相應(yīng)地,層次模型和網(wǎng)狀模型的數(shù)據(jù)操作方式則為一次一個(gè)記錄(record-at-a-time)的方式。
????????這里強(qiáng)調(diào)一下,關(guān)系操作的所有輸入和輸出均是關(guān)系,包括關(guān)系操作的中間結(jié)果也是關(guān)系。
????????2.關(guān)系數(shù)據(jù)語(yǔ)言的分類
????????早期的關(guān)系操作能力通常用代數(shù)方式或邏輯方式來(lái)表示,分別稱為關(guān)系代數(shù)(relational?al-gebra)和關(guān)系演算(relational?calculus)。
????????關(guān)系代數(shù)用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢要求,關(guān)系演算則用謂詞來(lái)表達(dá)查詢要求。
????????關(guān)系演算又可按謂詞變?cè)幕緦?duì)象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。
????????一個(gè)關(guān)系數(shù)據(jù)語(yǔ)言能夠表示關(guān)系代數(shù)可以表示的查詢,稱為具有完備的表達(dá)能力,簡(jiǎn)稱關(guān)系完備性。
????????此外,還有一種結(jié)構(gòu)化查詢語(yǔ)言(structured?query?language,?SQL)。SQL不僅具有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集數(shù)據(jù)查詢語(yǔ)言(data?query?language,?DQL)、數(shù)據(jù)定義語(yǔ)言(DDL)、數(shù)據(jù)操縱語(yǔ)言(DML)和數(shù)據(jù)控制語(yǔ)言(data?control?language,?DCL)于一體的關(guān)系數(shù)據(jù)語(yǔ)言。它充分體現(xiàn)了關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)和優(yōu)點(diǎn),自20世紀(jì)80年代起成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。
三、關(guān)系的完整性
????????關(guān)系模型的完整性約束是對(duì)關(guān)系的其種約束條件。也就是說(shuō)關(guān)系的值隨著時(shí)間變化時(shí)應(yīng)該滿足一些的約束條件,這些約束系件實(shí)際上是現(xiàn)實(shí)世界的要求。任何關(guān)系在任何時(shí)刻都要滿足這些語(yǔ)義約束。
????????關(guān)系模型中有三類完整性約束:實(shí)體完整性(cntiy?iteoity)、參照完整性(refecntial?inte 2)和用戶定義的完整性(ir-?Ihfind?imegrity)。
????????其中實(shí)體完整性和參照完整性是關(guān)系模型必級(jí)滿足的完整性約束,被稱作是關(guān)系的兩個(gè)不變性,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持。用戶定義的完整性是應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語(yǔ)義約束。
? ? ? ? 1.實(shí)體完整性
????????關(guān)系數(shù)據(jù)庫(kù)中每個(gè)元組應(yīng)該是可區(qū)分的,是唯一的。這樣的約束條件用實(shí)體完整性來(lái)保證。
????????實(shí)體完整性約束:若屬性(指一個(gè)或一組屬性)A是基本關(guān)系R的主屬性,則A不能取空值(null?value)。其中空值就是“不知道”或“不存在”或“無(wú)意義”的值。
????????對(duì)于實(shí)體完整性約束說(shuō)明: ????????????????①.實(shí)體完整性約束是針對(duì)基本關(guān)系而言的。一個(gè)基本表通常對(duì)應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體集。例如,“學(xué)生”關(guān)系對(duì)應(yīng)學(xué)生的集合。 ????????????????②.現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。例如,每個(gè)學(xué)生都是獨(dú)立的個(gè)體,是不一樣的。 ????????????????③.關(guān)系模型中以主碼作為唯一性標(biāo)識(shí)。 ????????????????④.主碼中的屬性不能取空值,如果取了空值,就說(shuō)明存在某個(gè)不可標(biāo)識(shí)的實(shí)體,即存在不可區(qū)分的實(shí)體。
? ? ? ? 2.參照完整性
????????現(xiàn)實(shí)世界中的實(shí)體之間往往存在某種聯(lián)系,在關(guān)系模型中實(shí)體及實(shí)體間的聯(lián)系都是用關(guān)系來(lái)描述的,這樣就自然存在著關(guān)系與關(guān)系間的引用。
????????定義? 設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼,Ks 是基本關(guān)系S的主碼。如果F與Ks相對(duì)應(yīng),則稱F是R的外碼(foreign key), 并稱基本關(guān)系R為參照關(guān)系(relerencing relation), 基本關(guān)系S為被參照關(guān)系( referenced relation) 或目標(biāo)關(guān)系( targetrlation)。關(guān)系R和S不一定是不同的關(guān)系。顯然,目標(biāo)關(guān)系S的主碼K。和參照關(guān)系R的外碼F必須定義在同一個(gè)(或同一組)域上。
? ? ? ? 外碼并不一定要與相應(yīng)的主碼同名。
????????參照完整性約束就是定義外碼與主碼之間的引用規(guī)則。
? ? ? ? 參照完整性約束:若屬性( 或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S 的主碼K相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值 必須:
????????①或者取空值(F的每個(gè)屬性值均為空值)。
????????②或者等于S中某個(gè)元組的主碼值。
? ? ? ??在參照完整性約束中,R與S可以是同一個(gè)關(guān)系。
? ? ? ? 3.用戶定義完整性
????????任何關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都應(yīng)該支持實(shí)體完整性和參照完整性,這是關(guān)系模型所要求的。除此 之外,不同的關(guān)系數(shù)據(jù)庫(kù)根據(jù)其應(yīng)用場(chǎng)景不同,往往還需要一些特殊的約束條件。 用戶定義的 完整性就是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一縣體應(yīng)用所涉及的數(shù)據(jù)必須滿足 的語(yǔ)義要求。例如,某個(gè)屬性必須取唯一值,某個(gè)非主屬性不能取空值等。 ????????關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性約束的機(jī)制,以便用統(tǒng)一的系統(tǒng)的方法處理它們, 而不需要由應(yīng)用程序承擔(dān)這一功能。
四、關(guān)系代數(shù)
? ? ? ? 關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,它用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢。
? ? ? ? 運(yùn)算對(duì)象、運(yùn)算符、運(yùn)算結(jié)果是運(yùn)算的三大要素。
????????關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果亦為關(guān)系。關(guān)系代數(shù)用到的運(yùn)算符包括兩類:集合運(yùn)算符和專門的關(guān)系運(yùn)算符。
? ? ??
????????
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù)系統(tǒng) --- 關(guān)系模型
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。