形象地說,乙個關係(relation)就是乙個table
關係模型就是處理table的,它由三個部分組成:
- 描述db各種資料的基本結構形式(table/relation)
- 描述table與table之間所可能發生的各種操作(關係運算)
- 描述這些操作所應遵循的約束條件(完整性約束)
所以要研究,table如何描述,有哪些操作、 結果是什麼、 有哪些約束等。
擴充套件的
完整性約束
關係運算 : (關係代數(基於集合的運算))和(關係演算(元組演算和域演算))
首先定義「列」的取值範圍「域(domain)」
一組值的集合,這組值具有相同的資料型別(如整數的集合、字串的集合、全體學生的集合,再如, 由8位數字組成的數字串的集合,由0到100組成的整數集合)
集合中元素的個數稱為域的基數(cardinality)
再定義「元組」及所有可能組合成的元組:笛卡爾積
一組域d1, d2,..., dn
的笛卡爾積為:
d1×d2×...×dn =
笛卡爾積的每個元素(d1 , d2 , … , dn)稱作乙個n-元組(n-tuple)
由於笛卡爾積中的所有元組並不都是有意義的,因此…
- 一組域d1 , d2 ,..., dn
的笛卡爾積的子集
- 笛卡爾積中具有某一方面意義的那些元組被稱作乙個關係(relation)
- 由於關係的不同列可能來自同乙個域,為區分,需要為每一列起乙個名字,該名字即為屬性名
關係可用r(a1:d1 , a2:d2 , ... , an:dn)
表示,可簡記為r(a1 , a2 , ... , an)
,這種描述又被稱為關係模式(schema)或表標題(head)
r
是關係的名字,ai
是屬性,di
是屬性所對應的域,n
是關係的度或目(degree), 關係中元組的數目稱為關係的基數(cardinality)
例如下圖的關係為一3目關係,描述為
家庭(丈夫:男人,妻子:女人, 子女:兒童) 或 家庭(丈夫,妻子, 子女)
關係模式r(a1:d1 , a2:d2 , ... , an:dn)
中屬性向域的映象在很多dbms中一般直接說明為屬性的型別、長度等
例如:student(s# char(8), sname char(10), s*** char(2), sage integer, d# char(2), sclass char(6))
course(c# char(3), cname char(12), chours integer, credit float(1), t# char(3))
sc(s# char(8), c# char(3), grade float(1))
關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。(簡言之,唯一標示)
例如: 「學生(s#, sname, sage, sclass)」,s#就是乙個候選碼,在此 關係中,任何兩個元組的s#是一定不同的,而這兩個元組的sname, sage, sclass都可能相同(同名、同齡、同班),所以s#是候選碼。
再如: 「選課(s#, c#, sname, cname, grade)」,(s#,c#)聯合起來是乙個候選碼
有時,關係中有很多組候選碼,例如: 學生(s#, sname, sage, sclass, saddress)其中屬性s#是候選碼,屬性組(sname, saddress)也是候選碼(同名同地 址的兩個同學是不存在的)
再如employee(empid, empname, mobile)每一雇員有唯一的empid, 沒有兩個雇員有相同的手機號mobile, 則 empid是候選碼,mobile也是候選碼
當有多個候選碼時,可以選定乙個作為主碼。
包含在任何乙個候選碼中的屬性被稱作主屬性,而其他屬性被稱作非主屬性。
關係r中的乙個屬性組,它不是r的候選碼,但它與另乙個關係s的候選碼相對應,則稱這個屬性組為r的外碼或外來鍵。
關係的主碼中的屬性值不能為空值(不知道或無意義的值)。
如果關係r1的外碼fk與關係r2的主碼pk相對應,則r1中的每乙個元組的fk值或者等於r2中某個元組的pk值,或者為空值。(簡言之,外來鍵要與那張表的主鍵對應,只能從中取,不能自己造)
使用者針對具體的應用環境定義的完整性約束條件。
比如要求名字在5個 漢字字元之內,年齡在[12, 35]之間,性別只能是「男」或「女」等。
以家有兒女這部劇中的角色為例。
男人夏東海
胡一統
女人劉梅瑪麗
兒童夏雪
夏雨劉星
一組值的集合,這組值具有相同的資料型別
d1=男人集合=
d2=女人集合=
d3=兒童集合=
集合中元素的個數稱為域的基數
基數就是有多少行。
d1域的基數為2
d2域的基數為2
d3域的基數為3
笛卡爾積的基數就是2 * 2 * 3 = 12
所有可能組合成的元組
男人女人
兒童夏東海
劉梅夏雪
夏東海劉梅
夏雨夏東海
劉梅劉星
夏東海瑪麗
夏雪夏東海
瑪麗夏雨
夏東海瑪麗
劉星胡一統
劉梅夏雪
胡一統劉梅
夏雨胡一統
劉梅劉星
胡一統瑪麗
夏雪胡一統
瑪麗夏雨
胡一統瑪麗
劉星笛卡爾積的每個元素(d1 , d2 , … , dn)稱作乙個n-元組(n-tuple)
元組就是一行資料。
|夏東海|劉梅|夏雪|
元組(d1 , d2 , ... , dn)
的每乙個值di
叫做乙個分量
夏東海是乙個分量。劉梅是乙個分量。夏雪是乙個分量。
一組域d1 , d2 ,…, dn的笛卡爾積的子集
笛卡爾積中具有某一方面意義的那些元組被稱作乙個關係(relation)
取笛卡爾積後的有意義的幾行。
家庭丈夫
妻子子女
夏東海劉梅
夏雪夏東海
劉梅夏雨
夏東海劉梅劉星
這是乙個」家庭「關係,其他的都不能組成家庭!
由於關係的不同列可能來自同乙個域,為區分,需要為每一列起乙個名字,該名字即為屬性名
原本是男人、女人、兒童,取名為丈夫、妻子、子女。
關係可用r(a1:d1 , a2:d2 , … , an:dn )表示,可簡記為r(a1 , a2 , … , an ),這種描述又被稱為關係模式(schema)或表標題(head)
n是關係的度或目。
男人、女人、兒童,3個度(目)。
關係模型之基本概念
關係模型的提出 是從表及表的處理方式中抽象出來的,是在對傳統表及其操作進行數學化嚴格定義基礎上,引入集合理論與邏輯學理論提出來的 是資料庫的三大經典資料模型之一 sql是建立在關係模型基礎之上的 關係模型的研究 關係模型就是處理表的 關係模型的三要素 組成 三要素 關係模型與關聯式資料庫語言的關係 ...
關係模型基本概念
1.關係模型的提出 關係模型最早是由e.f codd在1970年提出來的。是從表 table 以及表的處理中抽象出來的。是在傳統表以及其上面的操作嚴格化的數學定義上引入 集合理論 與 邏輯學理論 關係模型是資料庫的三大典型模型之一。也是現在大多數商業資料庫使用的模型。2.關係模型研究的內容 形象的說...
關係模型的基本概念
關係模型由若干關係模型 記錄型別 組成,記錄型別又分為實體型別和聯絡型別 記錄型別的例項是關係,關係實際上就是一張二維表。關係模型靠鍵來導航,表與表之間靠鍵關聯起來,回到現實中是事物之間的聯絡。用圖和表來表示思路,有幾個好處,第一是簡化了表達,一目了然 第二是提供了角度觀察和思考問題的另乙個角度。這...