1. 程式人生 > 其它 >SZU 資料庫系統與設計與分析 第二章

SZU 資料庫系統與設計與分析 第二章

@

目錄

第 2 章:關係資料模型

1.模式和狀態(Schema and State)


一個屬性對應一個列標題。
關係的模式是對錶結構的描述。
Head (Students) = (SID, Name, Age, GPA)
學生(SID、姓名、年齡、GPA)

  • 關係的兩個關係
    模式 - 表R的屬性集合
    狀態 - 當前表R的元組集合

  • 一旦確定了關係的模式,更改將非常昂貴


    一些可能的變化是:
    刪除一個屬性
    插入一個屬性
    重新命名屬性
    刪除表(整個關係)

  • 而在大多數關係中,關係的狀態經常變化。
    一些可能的變化是:
    更新一些屬性值
    插入一個新元組
    刪除現有元組
    一個給定的模式在不同的時間可能有不同的狀態。

  • 關係資料庫由一組關係組成。
    關係資料庫模式由一組關係模式組成。
    資料庫狀態是當前存在於資料庫中的資料。


1.改變屬性或元組的順序不影響關係的含義(列和行可以是任意順序)
2. 一個關係中不應該有任何兩行相同的行——沒有重複的行
3. 關係的任何單元格(行/列交叉點)中不應有任何多值項

2.空值(Null Value)

  • 對於給定的元組 t 和關係 R 的給定屬性 A,將 t 插入 R 時可能會發生以下情況。
    t[A] 未知。
    t[A] 尚未分配。
    t[A] 不適用。


    當出現上述情況之一時,將空值賦給 t[A]:t[A] = null。

  • 注意:空值不同於 0 或空格!
    在 SQL 中,任何涉及 null 的算術表示式都將被評估為 null。

3.超碼(SuperKey)

  • 定義:關係的超碼是一組屬性,其值可以唯一標識關係的每個潛在元組。
    例子:
    屬性 ID 是關係 Students 的超碼。
    在某些情況下,屬性集 {Name、Birthday、Home_Address} 可能是 Students 的超碼。
  • 一些注意點
    1.每個關係至少有一個超級碼。
    2.超碼的任何超集都是超碼。
    3.從關係的給定狀態,我們可以確定關係的一組屬性是否不形成超碼,但我們不能確定一組屬性是否形成超碼。

4.候選碼(Key)

  • 定義:一組屬性是關係的碼
    如果(1)它是關係的超碼,
    並且(2)它的真子集不是關係的超碼。
    關係的碼可以唯一標識關係的每個(潛在)元組。
    如果從鍵中刪除任何屬性,則剩餘的屬性不再形成鍵的最小屬性

  • 每個關係至少有一個碼。
    一個關係可能有多個碼。
    從關係的給定狀態,我們可以確定關係的一組屬性是否不構成碼,但不能確定一組屬性是否構成碼。
    關係的碼也稱為關係的候選碼。

5.主碼(Primary Key)

  • 定義:關係的主鍵是資料庫設計者為特定應用程式選擇的候選鍵。
    每個關係的主鍵是在定義關係時選擇和宣告的。 一經選擇,不可更改。
    通常選擇主鍵作為屬性數最少的候選鍵,以提高儲存效率和查詢處理效率。

  • 定義了主鍵後,插入新元組時只需要檢查主鍵中屬性下的值,以識別重複(經常使用索引)。
    關係的主鍵通常用於來自其他關係的引用。

6.外來鍵/碼(Foreign Key)

  • 定義:關係R1的一組屬性FK如果滿足以下兩個條件,則是R1中的外來鍵:
    存在與主鍵 PK 的關係 R2,使得 FK 和 PK 具有相同數量的具有相容域的屬性
    對於 R1 中的任何元組 t1,R2 中存在一個元組 t2,使得 t1[FK] = t2[PK] 或 t1[FK] 為空。