2.1 關係資料結構及形式化定義

  • 關係資料庫系統是支援關係模型的資料庫系統。(關係模型由關係資料結構、關係操作集合和關係完整性約束三部分組成)

2.1.1 關係

1-域

  • 域是一組具有相同資料型別的值的集合。

eg.{0, 1}; {man, woman}

2-笛卡爾積

  • 笛卡爾積是域上的一種集合運算

eg.給定一組域D1,D2,D3,,,,則其笛卡爾積為:D1*D2*D3...={(d1,d2,d3,....) | di∈Di}

  1. 沒一個元素(d1,d2,d3...,dn)叫做一個n元組(簡稱元組),元組的每一個值di叫做一個分量。
  2. 一個域允許的不同取值個數稱為這個域的基數

3-關係

  • D1*D2*D3...*Dn的子集叫做域在D1,D2,...,Dn上的關係,表示為:R(D1,D2,...,Dn)

  • R表示關係的名字,n表示關係的目或度

  • 若關係中的某一屬性組能唯一標識一個元組,而其子集不可以,則稱該屬性組為候選碼

  • 候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性或非碼屬性。

  • 若一個關係有多個候選碼,則選定其中一個為主碼(primary key)

  • 關係可以有三種類型:基本關係(基本表或基表),查詢表和試圖表。

    1. 基本表:實際存在的表,實際儲存資料的邏輯表示
    2. 查詢表:查詢結果對應的表
    3. 試圖表:由基本表或其他試圖表匯出的表,虛表,不對應實際儲存資料。
基本關係的六條性質:
  1. 列是同質的:每個列中的分量是同一型別的資料,來自同一個域。
  2. 不同的列可出自同一個域,此時每一個列為一個屬性
  3. 列的順序無所謂:列的次序可以任意調換
  4. 任意兩個元組的候選碼不能取相同的值
  5. 行的順序無所謂
  6. 分量必須取原子值,每一個分量都必須是不可分的資料項。

2.1.2 關係模式

關係模式是型,關係是值。關係模式是對關係的描述。

  • 關係的描述稱為關係模式,表示為:R(U,D,DOM,F)

    1. R:關係名
    2. U:組成該關係的屬性名集合
    3. D:U中屬性所來自的域
    4. DOM: 屬性向域的影響集合
    5. F:屬性間資料的依賴關係集合
  • 關係是關係模式在某一時刻的狀態和內容。關係模式是靜態穩定的,關係是動態隨時間變化的(關係操作不斷更新著資料庫中資料)。

2.1.3 關係資料庫

  1. 關係資料庫的型也成為關係資料庫模式,是對關係資料庫的描述
  2. 關係資料庫的值是這些關係模式在某一時刻對應的關係的集合 - 關係資料庫。

2.2 關係操作

2.2.1 基本關係操作

  1. 查詢:集合操作方式,即操作的物件和結果都是集合

    • 查詢的五種基本操作:選擇、投影、並、差、笛卡爾積
  2. 插入
  3. 刪除

2.2.2 關係資料語言的分類

  1. 關係代數語言(ISBL)
  2. 關係演算語言
    1. 元組關係演算語言(ALPHA,QUEL)
    2. 域關係鹽酸語言(QBE)
  3. 關係代數和關係演算雙重特性:SQL
    • SQL是一種結構查詢語言,集查詢、資料定義、資料操縱和資料控制於譯題的關係資料語言。(高度非過成化)
  4. 修改

2.3 關係完整性

  • 關係模型由三類完整性約束:實體完整性、參照完整性(關係的兩個不變性)和使用者定義的完整性。

2.3.1 實體完整性

  • 實體完整性規則:若屬性A是基本關係R的主屬性,則A不能取空置(null)

2.3.2 參照完整性

若F為基本關係R的一個或一組屬性但不是R的碼,Ks是基本關係S的主碼。若F與Ks相對應,則F是R的外碼,R為參照關係,S是被參照關係或目標關係。(RS可為同一關係)

  • 參照完整性規則:若屬性F是基本關係R的外碼,它與基本關係S的主碼Ks相對應,則對於R中每個元組在F上的值必須:

    1. 取空值(F中每個屬性值均為空值):尚未給F分配Ks
    2. 等於S中某個元組的主碼值:被參照關係中的一個具體值

2.3.3 使用者定義完整性

使用者定義完整性即為針對某一具體關係資料庫的約束條件,其反映某一具體應用所涉及的資料必須滿足的語義要求。

2.4 關係代數

關係代數是一種抽象的查詢語言,用對關係的運算來表達查詢

  • 關係代數表示式:關係代數中運算經有限次複合後形成的表示式。

2.4.1 傳統集合運算(二目運算)

  1. 並:R∪S={t|t∈R V t∈S}
  2. 差:R-S={t|t∈R ⋀ t ∉ S}
  3. 交:R∩S={t|t∈R ⋀ t∈S}
  4. 笛卡爾積:R*S={tr⌒ts|tr∈R⋀ts∈S}

2.4.2 專門的關係運算

1-符號引入

  1. 設關係模式為R(A1,A2...An),其一關係設為R,t∈R標識t是R的一個元組。t[Ai]表示元組t中相應於屬性Ai的一個分量
  2. 若R為n目關係,S為m目關係。tr∈R,ts∈S,tr⌒ts稱為元組的連結或元組的串接,其是一個n+m列的元組
  3. 若A={Ai1,Ai2,Ai3,...,Aik},Ain為Ai中的一部分,則A稱為屬性列或屬性組。t[A]=(t[Ai1],t[Ai2],t[Ai3]...)表示元組t在屬性列A上諸分量的集合,A平均表示{A1,A2,...}去除{Ai1,Ai2,...}後剩餘的屬性組。
  4. 給定關係R(X,Z),XZ為屬性組。當t[X]=x時,x在R中的象集定義為:Zx={t[Z]|t∈R,t[X]=x},表示R中屬性組X上值x的諸元組在Z上分量的集合。

2-關係運算定義

  1. 選擇(限制)
  2. 投影:關係R上的投影是從R中選擇若干屬性列組成新得關係
  3. 連線(join):兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組
  4. 除運算:設關係R除關係S結果為關係T,則T包含所有在R但不在S中的屬性和值,且T的元組與S的元組的所有組合都在R中

3-符號整理