基本概念
關系模型建立在代數集合的基礎上。
關系
1)域(Domain)
域是一組具有相同數據類型的值的集合。
例:整數,實數,介于某個取值範圍的整數,長度指定長度的字符串集合,{‘男’,‘女’},介于某個取值範圍的日期等
2)笛卡爾積(Cartesian Product)
給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:
D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n}
所有域的所有取值的一個組合,不能重複。
元組(Tuple)
笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組。
分量(Component)
笛卡爾積元素(d1,d2,…,dn)中的每一個值di叫作一個分量。
基數(Cardinal number)
若Di(i=1,2,…,n)為有限集,其基數為Mi(i=1,2,…,n)
在上例中,基數:2×2×3=12,即D1×D2×D3共有2×2×3=12個元組
笛卡爾積的表示方法
笛卡爾積可表示為一個二維表。表中的每行對應一個元組,表中的每列對應一個域。
3)關系(Relation)
關系
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關系,表示為:R(D1,D2,…,Dn)
(R:關系名;n:關系的目或度(Degree))
注意:
關系是笛卡爾積的有限子集。無限關系在數據庫系統中是無意義的。
由于笛卡爾積不滿足交換律,即
(d1,d2,…,dn)≠(d2,d1,…,dn)
但關系滿足交換律,即
(d1,d2,…,di,dj,…,dn)=(d1,d2,…,dj,di,…,dn)(i,j=1,2,…,n)
解決方法:為關系的每個列附加一個屬性名以取消關系元組的有序性
元組
關系中的每個元素是關系中的元組,通常用t表示。
單元關系與二元關系
當n=1時,稱該關系為單元關系(Unary relation)。
當n=2時,稱該關系為二元關系(Binary relation)。
關系的表示
關系也是一個二維表,表的每行對應一個元組,表的每列對應一個域。
屬性
關系中不同列可以對應相同的域,為了加以區分,必須對每列起一個名字,稱為屬性(Attribute)。
n目關系必有n個屬性
碼
候選碼(Candidate key)
若關系中的某一屬性組的值能唯一地标識一個元組,則稱該屬性組為候選碼。
在最簡單的情況下,候選碼隻包含一個屬性。稱為單碼(Single Key)。
在最極端的情況下,關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(All-key)。
主碼
若一個關系有多個候選碼,則選定其中一個為主碼(Primary key),
關系中,候選碼的屬性稱為主屬性(Prime attribute),不包含在任何候選碼中的屬性稱為非碼屬性(Non-key attribute)。
◇三類關系
基本關系(基本表或基表):實際存在的表,是實際存儲數據的邏輯表示
查詢表:查詢結果對應的表
視圖表:由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據
關系數據庫
1)關系數據庫
在一個給定的應用領域中,所有實體及實體之間聯系的集合構成一個關系數據庫。
2)關系數據庫的型與值
關系數據庫的型稱為關系數據庫模式,是對關系數據庫的描述,若幹域的定義,在這些域上定義的若幹關系模式。
關系數據庫的值是這些關系模式在某一時刻對應的關系的集合,通常簡稱為關系數據庫。
曆史
1970年,IBM的研究員,有“關系數據庫之父”之稱的埃德加·弗蘭克·科德(Edgar Frank Codd或E. F. Codd)博士在刊物《Communication of the ACM》上發表了題為“A Relational Model of Data for Large Shared Data banks(大型共享數據庫的關系模型)”的論文,文中首次提出了數據庫的關系模型的概念,奠定了關系模型的理論基礎。20世紀70年代末,關系方法的理論研究和軟件系統的研制均取得了很大成果,IBM公司的San Jose實驗室在IBM370系列機上研制的關系數據庫實驗系統System R曆時6年獲得成功。1981年IBM公司又宣布了具有System R全部特征的新的數據庫産品SQL/DS問世。由于關系模型簡單明
了、具有堅實的數學理論基礎,所以一經推出就受到了學術界和産業界的高度重視和廣泛響應,并很快成為數據庫市場的主流。20世紀80年代以來,計算機廠商推出的數據庫管理系統幾乎都支持關系模型,數據庫領域當前的研究工作大都以關系模型為基礎。
結構
單一結構
單一的數據結構----關系
現實世界的實體以及實體間的各種聯系均用關系來表示
數據的邏輯結構----二維表
從用戶角度,關系模型中數據的邏輯結構是一張二維表。
但是關系模型的這種簡單的數據結構能夠表達豐富的語義,描述出現實世界的實體以及實體間的各種關系。
主數據庫
oracle數據庫是oracle公司(中文名叫甲骨文公司)的,還有SQL,access;db2是IBM的(中文名稱是國際商務機器公司)。主流的關系數據庫還有微軟的Sql server,Sybase公司的sybase,(英孚美)軟件公司的informix以及免費的MySQL等。
集合
1)操作
◇查詢:選擇、投影、連接、除、并、交、差
◇數據更新:插入(insert)、删除(delete)、修改(update)
查詢的表達能力是其中最主要的部分
2)特點
集合操作方式:即操作的對象和結果都是集合。
(非關系數據模型的數據操作方式:一次一記錄文件系統的數據操作方式)
3)種類
◇關系代數語言
用對關系的運算來表達查詢要求
典型代表:ISBL
◇關系演算語言:用謂詞來表達查詢要求元組關系演算語言
謂詞變元的基本對象是元組變量
典型代表:APLHA,QUEL
◇域關系演算語言
謂詞變元的基本對象是域變量
典型代表:QBE
◇具有關系代數和關系演算雙重特點的語言
典型代表:SQL
4)關系數據語言的特點
◇關系語言是一種高度非過程化的語言
a.存取路徑的選擇由DBMS的優化機制來完成
b.用戶不必用循環結構就可以完成數據操作
◇能夠嵌入高級語言中使用
◇關系代數、元組關系演算和域關系演算三種語言在表達能力上完全等價
約束
1)實體完整性
通常由關系系統自動支持
2)參照完整性
早期系統不支持,但大型系統能自動支持
3)用戶定義的完整性
反映應用領域需要遵循的約束條件,體現了具體領域中的語義約束
用戶定義後由系統支持
延伸
在數據庫世界裡,後關系數據庫仍舊泰然自若,保持其本色。
在現代IT界,SQL和XML已經成為數據庫的非常重要組成部分,這二者成為數據庫系統結構組成部分的曆史也很長久了,至于開始的時間我也很難記得了。
但是,在60年代末和70年代初,出現了具備靈活字段長度、嵌套表格、松散數據類型選擇的數據庫構架,這樣的數據庫系統不僅受市場歡迎,也得到大家的青睐。這些早期的數據庫系統雖然缺乏像XML一樣的标記功能,但是它們在實際工作中卻表現出和XML極為類似的功能。
現在描述這些數據庫系統的術語是“後關系”或者“多值”,它們沒有SQL關系數據庫知名,是因為這些數據庫系統缺乏許多新聞的宣傳度,我們很容易把它認為是一個實驗而已,然後這些實驗在人們的印象中就會半途而廢了,最終慢慢的消失。