關系數據庫

關系數據庫

建立在關系數據庫模型基礎上的數據庫
關系數據庫,是建立在關系數據庫模型基礎上的數據庫,借助于集合代數等概念和方法來處理數據庫中的數據。目前主流的關系數據庫有oracle、SQL、access、db2、sqlserver,sybase等。[1] 每行包含一個唯一的數據實體,這些數據是被列定義的種類。當創造一個關系數據庫的時候,你能定義數據列的可能值的範圍和可能應用于那個數據值的進一步約束。而SQL語言是标準用戶和應用程序到關系數據庫的接口。其優勢是容易擴充,且在最初的數據庫創造之後,一個新的數據種類能被添加而不需要修改所有的現有應用軟件。目前主流的關系數據庫有oracle、db2、sqlserver、sybase、mysql等。
    中文名:關系數據庫 外文名: 别名: 建立:在關系數據庫模型基礎上的數據庫 借助:集合代數等概念和方法 處理:數據庫中的數據

基本概念

關系模型建立在代數集合的基礎上。

關系

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關系數據庫知名,是因為這些數據庫系統缺乏許多新聞的宣傳度,我們很容易把它認為是一個實驗而已,然後這些實驗在人們的印象中就會半途而廢了,最終慢慢的消失。

相關詞條

相關搜索

其它詞條