數據庫筆記:(二)、關係數據庫

一、關係和關係模式

1.1 關係的數學定義

  • 域(Domain)
    • 具有相同類型的值的集合 , 例如:全體整數 。
    • 基數:域中值的個數。
  • 笛卡爾積 (Cartesian Product)
    • 定義:給定一組域D1,D2,D3,則D1×D2×D3稱爲笛卡爾積。
    • 笛卡爾積D1×D2×D3對應一個二維表,所含元組的個數等於各個域的基數之積。

設 D1={張三,李四}, D2={數學,語文}, D3={優,良}

則D1×D2×D3可用二維表表示爲:

- - -
張三 數學
張三 數學
張三 語文
張三 語文
李四 數學
李四 數學
李四 語文
李四 語文

1.2 關係(Relation)

  • 定義
    • 笛卡兒積的一部分元組 ,記作 R(D1,D2,…,Dn)。
    • 關係是一個二維表
    • 每行對應一個元組
    • 每列可起一個名字,稱爲屬性。屬性的取值範圍爲一個域,元組中的一個屬性值是一個分量。
  • 關係的目(或度)
    • 一個關係所含屬性的個數
  • 關係的性質
    • 列是同質的,即每列中的數據必須來自同一個域
    • 每一列必須是不可再分的數據項(不允許表中套表,即 滿足第一範式)
    • 不能有相同的行
    • 行、列次序無關

1.3 完整性約束

  • 實體完整性:關係的所有主屬性都不能取空值
  • 參照完整性
    • 屬性F關係R外碼,與關係S主碼對應,則:
      • F要麼取空值
      • F要麼等於S中某個元素的主碼值。

二、關係代數

2.1 集合運算

  • RR, tRt\in R , t[Ai]t[A_i]AAt[A]t[A]A\overline{A}trts\overbrace{t_rt_s}
    • 設關係模式爲R(A1,A2,...,An)R(A_1,A_2,...,A_n),它的一個關係設爲R。
    • ==tRt \in R==表示 ttRR 的一個元組;
    • t[Ai]t[A_i] 表示元組 tt 中相對應與屬性 AiA_i 的一個分量;
    • A=A= 屬性組 {Ai1,Ai2,...,Aik}\{ A_{i1}, A_{i2},...,A_{ik} \}
    • t[A]=(t[Ai1],t[Ai2],...,t[Aik])t[A] = (t[A_{i1}], t[A_{i2}],...,t[A_{ik}]) 表示元組 ttAA 上諸分量的集合;
    • A\overline{A} 表示 {A1,A2,...,An}\{A_1,A_2,...,A_n\} 中去掉{Ai1,Ai2,...,Aik}\{ A_{i1}, A_{i2},...,A_{ik} \} 後剩餘的屬性組;
    • trts\overbrace{t_rt_s} 表示元組的連接(拼接)。
  • 並(Union): $R \cup S = { t | t \in R∨t \in S} $
    • R和S的屬性個數相同
    • R和S相對應的屬性屬於同一個域
    • 所有在R中的也在S中的元組
  • 交(Intersection): $R ∩ S = { t | t∈R∧t∈S} $
  • 差(Difference): $R - S = { t | t∈R∧t∈S} $
    • 所有在R中,但是不在S中的元組
  • 笛卡爾積:R×S={tstrtrRtsS}R \times S = \{ \overbrace{t_st_r} | t_r \in R ∧ t_s \in S\}

2.2 關係運算

  • 選擇(Selection),又稱限制(Restriction)

σF(R)\sigma_F(R) : 在關係R中選出滿足條件F的諸元組形成一個新關係。 (從關係中選擇符合條件的行)

  • 投影(Projecttion)

πA(R)\pi_A(R) : 在關係R中選出若干屬性列組成一個新關係 。(刪除一些不想要的列)

注:投影后若有重複行,則自動保留一個

  • 連接(Join)

連接運算從R和S的笛卡爾積R×S中選取(R關係)在A屬性組上的值與(S關係)在B屬性組上值滿足比較關係θ的元組。

  1. 等值連接: θ爲“=”的連接運算稱爲等值連接。它是從關係R與S的笛卡爾積中選取A、B屬性值相等的那些元組。
  2. 自然連接: 是一種特殊的等值連接,即對兩張表的所有公共屬性上都做等值連接。
  3. 外連接:自然連接之外,不符合等值連接的元組賦空值。
  • 除(Division)

    • 設兩個關係爲:R(X, Y), S(Y, Z);
    • R/S 表示找出在R中,跟S中所有的Y值都有聯繫的X值。

R/S=πx(R)πx((πx(R)×S)R)R/S = \pi_x(R) - \pi_x((\pi_x(R) \times S) - R)

三、關係演算

3.1 域關係演算

3.1.1 基本格式:

{<X1,X2,...,Xn>P(X1,X2,...,Xn,Xn+1,...,Xn+m)} \{<X_1, X_2,...,X_n> | P(X_1, X_2,...,X_n,X_{n+1},...,X_{n+m})\}

  • X1,X2,...,Xn,Xn+1,...,Xn+mX_1, X_2,...,X_n,X_{n+1},...,X_{n+m} 是域變量

  • X1,X2,...,XnX_1, X_2,...,X_n 是結果中要顯示的變量

  • P是表達式

3.1.2 表達式

  • 原子公式(Atomic formula)

    • <X1,X2,...,Xn>R<X_1, X_2,...,X_n> \in RXopYX op YXopConstantXopConstant
    • opop<,>,=,,,<,>,=,\leq,\geq,\neq 其中之一;
  • 原子公式是一個表達式

  • ¬p(否定),p∧q(與),p∨q(或)是一個表達式

3.2 元組關係演算

3.2.1 基本格式:

{t[A]P(t)} \{t[A] | P(t)\}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章