我學數據庫(8)--關系模型三要素


  前面的隨筆當中也介紹了關於關系模型以及一些簡單的基本術語,這次隨筆呢深入的了解一下這些概念。

  關系數據結構只包含單一的數據結構,那就是關系,在我們看來就是一張和execl差不多的二維表。雖然簡單但可以表示非常豐富的現實關系。在前面的隨筆中簡單介紹了一些術語的概念,關系模型是建立在集合的概念之上,所以呢都可以從集合論的角度對這些術語給出定義。

  域,一組具有相同數據類型的值的集合。比數據類型int,集合{1,2,3,4,5}就是一個域,一個有限的域。

  笛卡爾積,在域上進行的集合運算。給定域組D1,D2,…,Dn,可以是相同的域。這n個域的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}其中,(d1,d2,…,dn)為一個n元組,平常不這么叫,直接叫做元組。di為一個分量,mi為基數,基數就是元素的個數,即元組的個數。

關系,定義在D1×D2×…×Dn上的子集,表示為R(D1,D2,D3,…,Dn),R是關系的名字,n是關系的目或度,也就是列的個數,或者屬性的個數,n關系必有n個屬性。

  如果關系中的某一屬性組的值能唯一地標識一個元組,則成該屬性為候選碼。若有多個候選碼,則選擇其中一個為主碼。最簡單的時候候選碼只有一個屬性,最復雜的時候候選碼包括所有屬性,稱之為全碼。不包括在任何候選碼中的屬性稱為非主屬性,當然,包括在內的就是主屬性。

  關系是二維表,表的類型有三種:

  基本表:就是數據庫中真是存在的表,是實際存儲數據的邏輯表示。

  查詢表:查選結果對應的表,也就是經常說的結果集。

  視圖表:由基本表或其他視圖表導出的虛表。數據庫中只存儲視圖表的定義,而不對應實際存儲的數據,數據來自基本表。

  基本關系有如下性質:

  (1)列是同質的,每一列的分量來自於同一個域;

  (2)不同列可出自同一個域,但列名不能相同;

  (3)列/行在表中出現的順序不重要,可以任意交換;

  (4)候選碼是用來唯一標識元組的,不能有任意兩個元組的候選碼相同;

  (5)每一個分量都是原子的,也就是不能允許表中有表,這就是三大范式中的第一范式。

  雖然每個關系有如上的性質,但有經驗的同志就會知道,在許多實際的關系數據庫產品中,基本表並不是都能滿足,比如使用過程中為了方便還是要區分行列的順序的;某些表中是允許存在兩個或以上相同元組的,這也只是在沒有約束條件下,但此表存在的意義不是很大。

  在前面也有涉及型和值的問題,關系數據庫中,關系模式是型,關系是值。關系模式是對關系的描述,而關系要通過元組語義將實體表示出來。關系的描述成為關系模式,可表示為:R(U,D,DOM ,F),其中R是關系名,U表示屬性集合,D表示域,DOM表示屬性和域的映射集合,而F表示屬性的依賴關系集合。

  關系是關系模式在某一時刻的狀態和內容,關系模式是靜態的,穩定的,而關系是動態的、隨時間不斷變化的,因為關系操作在不斷地更新數據庫中的內容。比如同一個學生表,刪除某一條數據的前后就是不同的關系,但都是同一個關系模式。

  其實關系數據庫也有型和值之分。關系數據庫的型也稱關系數據庫模式,是對關系數據庫的表述,包括對域的定義以及對這些域基礎上的關系模式的定義。關系數據庫的值是這些關系模式在某一時刻對應關系的集合,就是常說的關系數據庫了。

         關系模型由關系數據結構、關系操作集合和關系完整性約束三個部分組成。關系操作對於熟悉數據庫的朋友們是最熟悉不過的了,包括查詢、插入、刪除和修改,但習慣上分為兩類,查詢操作和更新操作。

         查詢操作表現能力很強,是操作中最主要的部分。包括選擇、投影、並、差、笛卡爾積、交、連接、除,前五種為基本操作,剩余的可以用這五種操作定義或者導出。在關系模型的數據庫中操作的對象和集合都是集合,即一次一集合方式,在非關系數據庫模型的數據庫中為一次一記錄方式,這是兩者比較顯著地差別。

         關系的完整性規則是對關系的某種約束條件,關系的值隨時間變化但必須滿足約束條件,也就是必須滿足對現實世界抽象的條件。這里有三種完整性約束:實體完整性約束、參照完整性約束和用戶定義的完整性。前兩者是成為關系的不變性,由關系系統自動支持;用戶定義完整性是為了滿足應用領域的要求需要遵循的約束條件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM