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] 為空。