1. 程式人生 > >資料庫第二章

資料庫第二章

關係資料庫

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

  1. 關係
    1. 單一的資料結構—關係:現實世界的實體以及實體間的各種聯絡均用關係來表示
    2. 邏輯結構—二維表:從使用者角度,關係模型中資料的邏輯結構是一張二維表
    3. 建立在集合代數上
      1. 是一組具有相同資料型別的值得集合
    4. 笛卡爾積
      1. 給定一組域 d1,d2,。。。,dn,允許其中某些域是相同的。其笛卡爾積為每個域的乘積。
        1. 所有域的所有取值的一個組合
        2. 不能重複
      2. 基數:若di(i=1,2,3….n)為有限集,其基數為mi(i=1.2.3…n)則D1*D2*……Dn的基數M為:M=所有m的乘積
      3. 表示方法:
        1. 笛卡爾積可以表示為一張二維表
        2. 表中的每行對應一個元組,表中的每列對應一個域
        3. 例如,給出3個域:
        4. D1=導師集合SUPERVISOR={張清玫,劉逸}
        5. D2=專業集合SPECIALITY={計算機專業,資訊專業}
        6. D3=研究生集合POSTGRADUATE={李勇,劉晨,王敏}
        7. D1,D2,D3的笛卡爾積為
        8. D1×D2×D3={
        9.         (張清玫,計算機專業,李勇),(張清玫,計算機專業,劉晨),
        10.         (張清玫,計算機專業,王敏),(張清玫,資訊專業,李勇),
        11.         (張清玫,資訊專業,劉晨),(張清玫,資訊專業,王敏),
        12.         (劉逸,計算機專業,李勇),(劉逸,計算機專業,劉晨),
        13.         (劉逸,計算機專業,王敏),(劉逸,資訊專業,李勇),
        14.         (劉逸,資訊專業,劉晨),(劉逸,資訊專業,王敏) }
        15. 基數為2×2×3=12
    1. 關係
      1. 關係

D1*D2*D3*……Dn的子集叫做在域D1,D2……Dn上的關係,表示

RD1,D2,…,Dn

      1. R關係名
      2. n關係的目或度(Degree)
      1. 元組:關係中的每個元素是關係中的元組,通常用t表示。
      2. 單元關係與二元關係

當n=1時,該關係為單元關係或一元關係

當n=2時,該關係為二元關

      1. 關係的表示:
        1. 關係也是一個二維表,表的每一行對應一個元組,表的每一列對應一個域
      2. 屬性
        1. 關係中不同列也可以對應相同的額域
        2. 為了加以區分,必須對每一列起一個名字,稱為屬性
        3. N目關係必有n個屬性
        1. 候選碼:若關係中的某一組屬性組的值能唯一的標識一個元組,則成該屬性為候選碼
        2. 簡單的情況:候選碼只包含一個屬性
        3. 全碼:最極端的情況:關係模式的所有屬性組是這個關係模式的候選碼,則稱為全碼
        4. 主碼:若一個關係有多個候選碼,則定期中一個為主碼
        5. 主屬性:候選碼的諸屬性為主屬性,不包含在任何候選碼中屬性稱為非主屬性或非碼屬性
          1. 主碼:如果一個關係有多個候選碼,則選取其中一個為主碼
          2. 主屬性:候選碼的諸屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性或者非碼屬性
        6. 三類關係
          1. 基本關秀:基本存在表,是實際儲存資料的邏輯結構
          2. 查詢表:查詢結構對應表
          3. 視圖表:由基本表或其他檢視匯出的表,是虛標,不對應實際儲存的資料
        7. 基本關係的性質
          1. 列本是同質的
          2. 不同的列可以出同一個域
            1. 其中的每一列稱為一個屬性
            2. 不同的屬性要給予不同屬性名
          3. 列的順序無所謂,,列的次序可以任意改變
          4. 任意的順序無所謂,列的次序可以 任意交換
          5. 任意兩個元組的候選碼不能相容
          6. 行的順序無所謂,行的次序可以任意交換
  1. 關係模式
    1. 什麼是關係模式
      1. 關係模式是型
      2. 關係是值
      3. 關係模式是 對關係的描述
        1. 元組集合的結構
          1. 屬性構成
          2. 屬性來自的域
          3. 屬性與域之間的映像關係
        2. 完整性約束條件
    2. 定義關係模式:可表示為R(U,D,DOM,F)R:關係名,U:組成改關係的屬性名集合。D:U中屬性屬性所來自的域,DOM:屬性向域的映像集合,F屬性間資料的依賴關係的集合
    3. 關係模式與關係
      1. 關係模式
        1. 對關係的描述
        2. 靜態的,穩定的
      2. 關係
        1. 關係模式在某一時刻的狀態或內容
        2. 動態的,隨時間不斷變化的
      3. 關係模式和關係往往統稱為關係:通過上下文區別
  2. 關係資料庫
    1. 關係資料庫
      1. 在一個給定的應用領域中,所有關係的集合構成一個關係資料庫
    2. 關係資料庫 的型與值
      1. 型:關係資料庫模式,是對關係資料庫的描述
      2. 值:關係模式在某一時刻對應的關係的集合,通常稱為關係資料庫
  3. 關係模式的儲存結構
    1. 關係資料庫的物理組織
      1. 有的關係資料庫管理系統中的一個表對應一個作業系統檔案,將物理資料組織交給作業系統完成
      2. 有的關係資料庫管理系統從作業系統哪裡申請若干個大的檔案,自己花分檔案空間,組織表,索引等儲存結構,並進行儲存管理

關係操作

        1. 常見的關係操作
          1. 查詢操作:選擇,投影,連結,除,並,差,交,笛卡爾積
            1. 選擇,投影,並,差,笛卡爾積
          2. 資料更新:插入,刪除,修改
        2. 關係模式的特點
          1. 集合操作方式:操作的物件和結果都是集合,一次一集合的方式
        3. 關係代數語言
          1. 用對關係的運算來達到表達查詢要求
          2. 代表:ISBL
        4. 關係演算語言:用謂詞來表達查詢要求
          1. 元組關係演算語言
            1. 謂詞變元的基本物件是元組變數
            2. 代表:APLHA,QUEL
          2. 域關係演算語言
            1. 謂詞變元的基本操作是域變數
            2. 代表:QBE
        5. 具有關係代數和關係演算雙重特點的語言
          1. 代表:SQL

關係的完整性

  1. 實體完整性和參照完整性
    1. 關係模型必須滿足的完整性約束條件稱為關係的兩個不變性,應該由關係系統自動支援
  2. 使用者定義的完整性
    1. 應用領域需要的約束條件,體現了具體領域中的語義約束

實體完整性:

  1. 若資料A是基本關係R的主屬性,則A不能取空值
  2. 空值就是 不存在 或 無意義的值
  3. 例:
  4. 選修(學號,課程號,成績)
  5. 學號、課程號”為主碼
  6. 學號”和“課程號”兩個屬性都不能取空值
  7. 實體完整性的說明
    1. 實體完整性規則是針對基本關係而言的,一個基本表通常對應現實世界的一個實體集。
    2. 現實世界中的實體是可以區分的,即他們具有某種唯一標識。
    3. 關係模型中的實體是可以區分的,即他們具有某種唯一性標識。
    4. 主碼中的屬性即主屬性不能取空值,主屬性取空值,說明存在不可區分的實體,與第二點衝突,因此這個規則稱為實體完整性。

參照完整性

  1. 關係間的引用
    1. 在關係模型中實體及實體間 的聯絡都是用關係來描述的,自然存在著關係與關係的引用
  2. 外碼
    1. 設F是基本關係R的一個或一組屬性,但不是關係R的碼。如果F與基本關係S的主碼Ks相對應,則稱F是R的外碼。
    2. 基本關係R稱為參照關係
    3. 基本關係S稱為被參照關係或目標關係
    4. 關係R和S不一定是不同的關係
    5. 目標關係S的主碼Ks和參照關係的外碼F必須定義在同一個域上
    6. 外碼並不一定要與相應的主碼同名
  3. 參照完整性規則
    1. 若屬性F是基本關係R的外碼它與基本關係S的主碼相對應,則對於每個元組F上的值必須為:
      1. 或者取空值
      2. 或者等於S\中的額某個元祖的主碼值

使用者定義的完整性

  1. 針對某一具體關係資料庫的約束條件,反映某一具體應用所涉及的資料必須滿足的語義要求
  2. 關係模型應提供定義和檢驗者類完整性的機制,以便用同一的系統的方式處理他們,而不需由應用程式承擔著一功能。

關係代數

  1. 關係代數式一種抽象的查詢語言,它用對關係的運算來表達查詢
  2. 關係代數
    1. 運算物件是關係
    2. 運算關係亦為關係
    3. 關係代數的運算子有兩種:集合運算子和專門的關係運算符
  3. 傳統的集合運算是從運算的“水平”方向即行的角度進行
  4. 專門的關係運算不僅涉及行而且涉及列
  1. 運 算 符
  1. 含 義
  1. 集合
  2. 運算子
  1. -
  1. ×
  1. 笛卡爾積
  1. 專門的
  2. 關係
  3. 運算子
  1. σ
  1. 選擇
  1. π
  1. 投影
  1. 連線
  1. ÷

傳統的集合運算

    1. R和S
      1. 具有相同的目n
      2. 相應的屬性取自同一個域
    2. RuS
      1. 仍未n目關係,由屬於R或S的元組組成:RS = { t|t Î Rt ÎS }
    1. R和S
      1. 具有相同的目n
      2. 相應的屬性取自同一域
    2. R-S
      1. 仍為n目關係,由屬於R而不屬於S的所有元組組成R -S = { t|tÎRtÏS }
    1. R和S
      1. 具有相同的目
      2. 相應 的屬性取自同一個域
    2. RS
      1. 仍為n目關係,由即屬於R由屬於S的元組組成RS = { t|t Î Rt ÎS }
      2.                RS = R –(R-S
  1. 笛卡兒積
    1. 嚴格地講應該是廣義的笛卡兒積
    2. R:n目關係,K1個元組
    3. S:m目關係,K2個元組
    4. R*S
      1. n+m)列元組的集合
        1. 元組的前n列是關係的R的一個元組
        2. 後m列是關係的S的一個元組
      2. 行:K1*K2個元組
        1. R×S = {tr ts |tr ÎRtsÎS }

專門的關係運算

  • 1) R,tÎR,t[Ai]

設關係模式為R(A1,A2,…,An)

它的一個關係設為R

  1. ÎR表示tR的一個元組

          t[Ai]則表示元組t中相應於屬性Ai的一個分量

(2) A,t[A], A

A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,AikA1,A2,…,An中的一部分,則A稱為屬性列或屬性組。

   t[A]=(t[Ai1]t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合。

   A則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}後剩餘的屬性組。

(3) tr ts

    Rn目關係,Sm目關係。

  1. r ÎRtsÎStr ts稱為元組的連線。

    tr ts是一個n + m列的元組,前n個分量為R中的一個n元組,後m個分量為S中的一個m元組。

(4)象集Zx

給定一個關係RXZ),XZ為屬性組。

t[X]=x時,xR中的象集(Images Set)為:

  1. x={t[Z]|t ÎRt[X]=x}

它表示R中屬性組X上值為x的諸元組在Z上分量的集合

專門的關係運算

      1. 選擇
          1. 選擇又稱為限制
          2. 選擇運算的含義
            1. 在關係R中選擇滿足給定條件的諸元組σF(R) = {t|tÎRF(t)= '真'}
            2. F:選擇條件,是一個邏輯表示式,取值為真或假
              1. 基本形式為:XY1
              2. θ表示比較運算子,它可以是>,≥,<,≤,=或<>
          3. 選擇運算是從關係R中選取使邏輯表示式F為真的元組,是從行的角度進行的運算。
      2. 投影
        1. 從R中選擇出若干屬性列組成新的關係
        2. 投影造作主要是從列的角度進行運算
        3. 投影之後不僅取消了原關係中的某些列,而且還可能取消某些元組(避免重複行)
      1. 連結
        1. 連結也稱θ連結
        2. 連結運算的含義
          1. 從兩個關係中的笛卡爾積中選取屬性間滿足一定條件的元組
          2. A和B:分別為R和S上度數相等且可比的屬性組
          3. Θ:比較運算子
          4. 連結運算從R和S的廣義笛卡爾積R*S中選取R關係在A屬性組上的值與S關係在B上上的值滿足比較關係0的元組
          5. 兩類常用的連線運算
            1. 等值連線
              1. Θ為“=”的連線運算稱為等值連線
              2. 從關係R與S的廣義笛卡爾積中選取AB屬性值相等的那些元組,即等值連線為:R    S = {       | trÎRts ÎStr[A] = ts[B] } 
            2. 自然連線
              1. 自然連線是一種特殊的等值連線
                1. 兩個關係中進行比較的分量必須是相同的屬性組
                2. 在結果中吧相同那個的屬性列去掉
              2. 自然連線的含義:R和S具有相同的屬性組B:        R   S = {       [U-B] | tr ÎRts ÎStr[B] = ts[B] } 
              3. 懸浮元組
                1. 兩個關係R和S在做自然連線時,關係R中某些元組有可能在R中這些元組時被捨棄了這些被捨棄的被元組成為懸浮元組
              4. 外連線
                1. 如果把懸浮元組也儲存在關係中,而在其他屬性上填空值,就叫外連線
                2. 左外連線
                  1. 之保留左邊關係R中的懸浮元組
                3. 右外連線
                  1. 只保留右邊關係S中的懸浮元組
      2. 除運算
        1. 給定關係R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y和S中的Y可以有不同的屬性名,但必須出自相同的域集。
        2. R和S的除運算得到一個新的關係P(X)
        3. P是R中滿足下列條件的元組在X屬性列上的投影:
          1. 元組 在X上分量值X的像極Yx包含S在Y上投影的集合,記做:R÷S={tr[X]|trÎR∧πY(S)ÍYx}
          2.        YxxR中的象集,x = tr[X]
      3. 小結
        1. 關係代數運算
          1. 並交叉笛卡兒積,投影,選擇,連線,除
        2. 基本運算
          1. 並交叉笛卡兒積 投影 選擇
        3. 交 連線 除
          1. 可以用5中基本運算來表達
          2. 引進他們並不增加語言比表達能力,但可以簡化表達
        4. 5種基本運算:
          1. 並交差 笛卡兒積 投影 選擇,不能用其他運算來表達
        5. 3中簡化運算
          1. 交 連線 和 除
  1.    1.交:R∩S=R-(R-S)
  2.    2.連線:R     S=sXqY(R×S)
  3.         3.除法:R÷S=PX(R)PX(PX(R)×S-R)

可見,引進他們並沒有增加語言的表大能力,但可以大大簡化表示式

集合運算實現的資料庫操作

  1. 資料記錄的新增和插入
  2. 資料記錄的刪除:關係差運算
  3. 資料記錄的修改操作:先刪除後插入——關係差運算+關係並運算
  4. 關係的連線:關係的笛卡兒積