數據庫系統概論(2)——Chap. 2 關係數據庫基礎

數據庫系統概論(2)——Chap.2 關係數據庫基礎

1、關係數據結構及形式化定義

一、關係

關係模型的數據結構只包含單一的數據結構——關係。在關係模型中,現實世界的實體及實體間的各類聯繫均用單一的結構類型,即關係來表示。git

(1)笛卡爾積

關係是創建在集合基礎上的,先介紹笛卡爾積的概念:
【笛卡爾積(cartesian product)】給定一組域D1,D2,……,Dn,容許其中某些域是相同的,D1,D2,……,Dn的笛卡爾積爲:github

D1 x D2 x…… x Dn = {(d1, d2, ……, dn)|di屬於Di,i=1,2,……,n}

其中,每個元素(d1, d2, ……, dn)叫作一個n元組(n-tuple),或簡稱元組(tuple)。元素中的每個值di叫作一個份量(component)數據庫

一個域容許的不一樣取值個數稱爲這個域的基數(cardinal number)。
若Di(i=1,2,……,n)爲有限集,其基數爲mi(i=1,2,……,n),則D1 x D2 x…… x Dn的基數M爲:數據結構

M = m1 x m2 x …… x mn
(2)關係

下面給出關係的定義:
【關係】:D1 x D2 x…… x Dn的子集叫作在域D1,D2,……,Dn上的關係,表示爲:ide

R(D1,D2,……,Dn)

R爲關係的名字,n是關係的目或度(degree)。n=1時,稱爲單元關係(unary relation)或一元關係;n=2時,稱爲二元關係(binary relation)。n目關係必有n個屬性。
通常來講,D1,D2,……,Dn的笛卡爾積是沒有實際語義的,只有它的某個真子集纔有實際含義。關係是笛卡爾積的有限子集。ui

【候選碼(candidate key)】:若關係中的某一屬性組能惟一地標識一個元組,而其子集不能,則稱該屬性組爲候選碼。
若一個關係有多個候選碼,則選定其中一個爲主碼(primary key)(最小屬性集)。
極端狀況下,關係模式的全部屬性是這個關係的候選碼,稱爲全碼(all-key)code

【主屬性(prime attribute)和非主屬性(non-prime attribute)】:候選碼的諸屬性稱爲主屬性。不包含在任何候選碼中的屬性稱爲非主屬性或非碼屬性(non-key attribute)。component

關係能夠由三種類型:基本關係(或稱基本表或基表)、查詢表和視圖表。orm

  • 基本表是實際存在的表,它是實際存儲數據的邏輯表示;
  • 查詢表是查詢結果對應的表;
  • 視圖表是由基本表導出的表,是虛表,不對應實際存儲的數據。

基本關係具備如下6條性質:對象

  1. 列是同質的(homogeneous),即每一列中的份量是同一類型的數據,來自同一個域。
  2. 不一樣的列可出自同一個域,稱其中的每一列爲一個屬性,不一樣的屬性要給予不一樣的屬性名。
  3. 列的順序無所謂。
  4. 任意兩個元組的候選碼不能取相同的值。
  5. 行的順序無所謂。
  6. 份量必須取原子值,即每個份量都是不可分的數據項。

關係模型要求關係必須是規範化的,規範化的關係簡稱爲範式(Normal Form,NF)

二、關係模式

關係數據庫中,關係模式是型,關係是值。
【關係模式】是對關係的描述,關係模式必須指出這個元組集合的結構、元組語義及完整性約束條件、屬性的域以及屬性與域之間的映像關係。關係模式能夠表示爲:

R(U,D,DOM,F)
其中R爲關係名,U爲組成該關係的屬性名集合,D爲U中屬性所來自的域,DOM爲屬性向域的映像集合,F爲屬性間數據的依賴關係集合。

關係模式是靜態的、穩定的;
關係是動態的、隨時間不斷變化的,關係是關係模式在某一時刻的狀態或內容。

對於關係模型中的聯繫,一對一的聯繫能夠表示在任意一方,一對多的聯繫常表示在多的一方。

2、關係操做

一、關係操做包括兩部分:

  1. 查詢(QUERY)操做:選擇(select)、投影(project)、鏈接(join)、除(divide)、並(union)、交(intersection)、差(except)、笛卡爾積等。其中選擇、投影、並、差、笛卡爾積是5種基本操做。
  2. 更新(UPDATE):插入(insert)、刪除(delete)、修改(update)。

關係操做是集合操做。(一次一集合(set-at-a-time))。非關係數據模型的數據操做方式是一次一記錄(record-at-a-time)。

二、關係數據語言的分類

【關係代數(relational algebra)】:用對關係的運算來表達查詢要求。
【關係演算(relational calculus)】:用謂詞來表達查詢要求。
一個關係數據語言可以表示關係代數能夠表示的查詢,稱爲具備完備的表達能力,簡稱關係的完備性

【結構化查詢語言SQL】:介於關係代數和關係演算之間。是集查詢、數據定義語言、數據操縱語言和數據控制語言(DCL)於一體的關係數據語言。SQL語言是一種高度非過程化的語言。

3、關係的完整性

一、實體完整性

基本關係R的主屬性A不能取空值。所謂空值就是「不知道」或「不存在」或「無心義」的值。
說明:

  1. 實體完整性規則是正對基本關係而言的。
  2. 現實世界中的實體是可區分的,即他們具備某種惟一性的標識。
  3. 相應的,關係模型中以主碼做爲惟一標識。
  4. 主碼中的屬性即主屬性不能取空值。

二、參照完整性

先給出外碼的定義:
定義:設F是基本關係R的一個或一組屬性,但不是關係R的碼,Ks是基本關係S的主碼。若是F與Ks相對應,則稱F是R的外碼(foreign key),並稱基本關係R是參照關係(referencing relation),基本關係S是被參照關係(referenced relation)目標關係(target relation)
關係R和S不必定是不一樣的關係。目標關係S的主碼Ks和參照關係的外碼F必須定義在同一個(或同一組)域上。

下面是參照完整性的定義:
若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應,則R中每一個元組在F上的取值:

  • 或者取空值(F的每一個屬性值均爲空值);
  • 或者等於S中某個元組的主碼值。

三、用戶定義完整性

用戶定義完整性就是針對某一具體關係數據庫的約束條件,它反映某一具體應用所涉及的數據必須知足的語義要求。關係模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不須要由應用程序來承擔這一功能。


實體完整性和參照完整性是關係模型必須知足的完整性約束條件,被稱做是關係的兩個不變性,應該由關係系統自動支持。用戶定義的完整性是應用領域須要遵循的條件,體現了具體應用領域中的語義約束。

4、關係代數

運算的三大要素:運算對象、運算符、運算結果。
關係代數的運算符包括兩類:集合運算符和專門的關係運算符。
關係代數的運算按運算符的不一樣可分爲傳統的集合運算和專門的關係運算兩類。

關於關係代數運算這裏放上一個連接,如下內容爲轉載,若有侵犯,請在下方評論聯繫。
請尊重原做者版權,轉載註明出處。

【轉載】關係代數的基本運算

相關文章
相關標籤/搜索