(2)關系操作 關系模型規(guī)定了關系操作的功能和特點,但不對DBMS語言的語法做出具體的規(guī)定。關系數據庫語言的主要特點(或優(yōu)點)是其高度的非過程化(Non-procedureae)或者說明性(declarative)。關系數據庫語言的語句是透明的。用戶只須知道語句做什么,而不須知道怎么做的。Codd在其早期的文章中,引入了8種基本的操作:并(Union)交(Intersection)差(Difference)笛卡爾乘積(Cartesian Product)限制(Restrictions)投影(Projection)連接(Join)除(Division)這些操作都是對關系的內容或表體實施操作的,得到的結果仍為關系。注意,這些操作只是基本的操作,而不是不再可分的原始(Primitive)操作,例如,Join,Intersection和Division可以由其它五種操作合成。但是,把它們三個也作為基本操作使用起來很方便。另外,Codd并沒說上述8種操作就是關系數據庫只能有的8種操作。實際上,上述8種操作僅僅是作為最小的DML操作的基礎部分,并且也還未考慮到DDL的需求。SQL支持的操作多于上述8種DML操作,而且SQL還支持DDL操作。關系操作的特點是集合操作,即操作的對象和結果都是集合。這種操作方式也稱為一次一集合(set-at-a-time)方式。而非關系模型的數據庫的操作方式則為一次一記錄(record-at-a-time)方式。關系操作可以用兩種方式來表示:
、俅鷶捣绞,即關系代數
、谶壿嫹绞,即關系演算而關系演算又進一步分為元組關系演算和域關系演算。已經證明,這些表示方式在功能上是相互等價的。一般選其一即可。
(3)關系模型的三類完整性 關系模型的三類完整性是:
①實體完整性(Entity Integrity)
、趨⒄胀暾(Referential Integrity)
③用戶定義的完整性(User Defined Integrity)其中,實體完整性和參照完整性是任何關系模型都必須滿足的完整性約束條件,應該由關系數據庫DBMS自動支持。而用戶定義的完整性的支持是由DBMS提供完整性定義設施(或機制),可以隨DBMS商品軟件不同而有所變化。實體完整性是指:若屬性A是基本關系R的主關鍵字的屬性(即主屬性),則屬性A不能取空值(NULL)。在關系數據庫中有各種關系,如基本關系(常稱為基本表)、查詢表、視圖表等等。基本表是指實際存在的表,它是實際存儲數據的邏輯表示。查詢表是指和查詢結果相對應的表。而視圖表是由基本表或視圖表導出的表,是虛表,不對應實際存儲的數據。實體完整性是針對基本關系的?罩凳侵浮安恢馈被蛘摺盁o意義的”或“不屬于定義域”值。空值以“NULL”表示。對于實體完整性作如下說明:
(1)一個基本關系通常對應于現實世界中的一個實體集。例如學生關系對應于學生實體集;娟P系不是由其它關系生成的關系。基本關系是本原(Primitive),是定義復雜關系的出發(fā)點。
(2)現實世界中的實體是可區(qū)分的,即實體具有某種唯一性的標識。
(3)在關系模型中由主關鍵字作為滿足唯一性的標識。
(4)主關鍵字中屬性不能取空值。因為若主關鍵字中某屬性取空值,則意味著某個實體不可標識;而這和(2)相矛盾。參照完整性是指:若基本關系R中含有另一個基本關系S的主關鍵字K S 所對應的屬性組F(F稱為R的外部關鍵字(external keys)),則在關系R中的每個元組中的F上的值必須滿足:
①或者取空值(即F中的每個屬性的值均為空值);
、诨虻扔赟中某個元組的主關鍵字的值;娟P系R和S不一定是不同的關系。外部關鍵字也稱為外來關鍵字。例如,某數據庫中有職工關系EMP(職工號,姓名,部門號)和部門關系DEPT(部門號,部門名稱)為兩個基本關系。關系EMP的主關鍵字為“職工號”,DEPT的主關鍵字為“部門號”在EMP中,“部門號”是EMP的外部關鍵字。故此,在EMP中的每個元組中“部門號”的值只有兩種可能性:
、偃】罩。這說明這個職工尚未分到某個部門;
、诨蛉》强罩。這時“部門號”的值必須是DEPT中某個元組中的“部門號”的值。這說明一個職工不可能被分配到一個不存在的部門。也就是說,被參照的關系DEPT中一定存在一個元組,該元組的關鍵字的值等于EMP中某元組的外部關鍵字的值。實體完整性和參照完整性是針對任何關系數據庫系統(tǒng)的所有數據庫的一般性原則。用戶定義的完整性針對某一具體的數據庫的約束條件。條件是由現實世界中的應用環(huán)境決定的。它涉及到某一具體的應用中的數據所必須滿足的語義要求。關型模型的DBMS應提供定義和檢驗這類完整性條件的機制,以使用統(tǒng)一的方法來自動地處理它們而不要求應用程序員來承擔這一功能。
5.關系數據庫語言概述
關系數據庫語言分三類:數據描述語言DDL,數據操縱語言DML和數據控制語言DCL。其中,DDL負責數據庫的描述,提供一種數據描述機制,用來描述數據庫的特征或數據的邏輯結構。DML負責數據庫的操作,提供一種處理數據庫操作的機制。DCL負責控制數據庫的完整性和安全性,提供一種檢驗完整性和保證安全的機制。DML是用戶經常使用的語言,包括了DBMS的主要功能。DML包括數據查詢和數據的增、刪、改等功能。其中查詢的表達方式是DML的主要部分。關系數據庫的DML按照查詢方式可以分為兩大類:
(1)用對關系的集合代數運算來表示查詢的方式,稱為關系代數(Relational Algebra)。
(2)用謂詞演算來表達查詢的方式,稱為關系演算(Relational Calculus)。關系演算又可按謂詞變元的基本對象是元組變量(tuple variable)還是域變量(domain variable)分為元組關系演算和域關系演算兩種。關系代數和兩種關系演算均是抽象的查詢語言,這些抽象的查詢語言和實際的DBMS軟件產品中實現的具體的查詢語言并不完全一樣。但它們是DBMS中查詢語言的理論基礎。關系代數、元組關系演算和域關系演算這三種語言在表達能力上是彼此相互等價的,它們均可以作為評價實際DBMS軟件產品中查詢語言能力的標準。實際DBMS軟件產品的查詢語言,除了提供關系代數(或一種關系演算)之外,還提供了許多附加的功能,如庫函數、算術運算等功能。SQL是介于關系代數,和關系演算之間的一種語言。SQL不僅具有豐富的查詢功能,而且還具有數據庫定義和數據庫控制功能。SQL是集DDL、DML、DCL為一體的標準的關系數據庫語言。SQL充分體現了關系數據庫語言的優(yōu)點。
6.關系代數
關系代數中的運算可以分為兩類:
(1)傳統(tǒng)的集合運算,如并、交、差、笛卡爾乘積等。這類運算是從關系的“水平方向(即按行)”來進行的。
(2)專門的關系運算,如選擇、投影、連接、除。這類運算不僅涉及到行而且也涉及到列。
7.關系演算
關系演算是以數理邏輯中的謂詞演算為基礎的。用謂詞演算作為關系數據庫的語言并提出關系演算的是E.F.Codd。Codd首先定義了關系演算語言ALPHA。但ALPHA并沒有在計算機上實現。但關系數據庫管理系統(tǒng)INGRES所用的QUEL語言是參考ALPHA研制的,與ALPHA十分類似。
相關推薦: 軟考數據庫系統(tǒng)師歷年真題匯總(2007年-2010年)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |