科普資料庫系列文章:(3/4) 關聯式資料庫的專有名詞

在資料庫系統的理論與研究領域裡,有些常見的專有名詞,對於沒有學習過資料庫的大多數使用者肯定會很陌生,在此列出幾個重要的名詞與大家分享,在爾後與大家分享的資料整理議題,也會有這些專有名詞的蹤影喔!

「基元值」(Atomic Value)

在行列交錯的儲存方格裡可以儲存不可再分割的值,吾人稱之為基元值(Atomic Value)或稱為Scalars標量。在此,針對「基元值」(Atomic Value)的概念,筆者在另一篇文章中,即以「基元值」(Atomic Value)為例,列舉了Excel範例供大家學習與實作。

「定義域」(Domain)

在資料庫的研究領域裡,對於任何給定的值組(tuple),其屬性值必須從屬性的定義域(Domain)中提取。而定義域實際上是一種資料類型,定義了所有允許的值的集合。

「階度」(Degree)

是關聯的屬性個數,也就是資料表的欄位數目。例如包含「訂單編號」、「訂單日期」、「客戶編號」、「客戶名稱」、「經手人」與「付款方式」等六個資料欄位的[訂單資料表]其階度(Degree)為6。

「屬性」(Attributes)

描述實體的性質(Property),例如:工號、姓名、性別都是用來描述員工這個實體的性質。一個屬性一定要定義在一個定義域(Domain)上,例如:「性別」屬性的值必須是「男」或「女」,不能超出定義域(Domain)的合法值群。另一個角度來說,屬性(Attributes)也就是資料表的資料欄位(Fields)且須符合規範的資料類型。而根據屬性的用途與性質,可以細分為:

  • 簡單屬性(Simple Attribute)
    即無法再切割成其他單位的屬性值,意即此屬性值為基元值(Atomic Value)
  • 複合屬性(Composite Attribute)
    即由兩個其它屬性值所組合而成的屬性。例如:「地址」為複合屬性,因為此值可由「縣市」、「鄉鎮區」、「路」、「街」、「巷」、「弄」、「號」等各個屬性值所組成。
  • 衍生屬性(Derived Attribute)
    經由推算而取得的屬性。例如:「年齡」屬性以及「星座」屬性都算是衍生屬性,因為其屬性值都可以由「生日」屬性值推算而來。
  • 虛值屬性(Null Value)
    可適用的虛值:確實存在但尚不知其值為何的屬性值。
    不可適用的虛值:根本不存在的屬性值。
    完全不知道的虛值:不知道是否存在的屬性值。

「鍵值」(Key Value)

關聯式資料表是透過鍵值(Key Value)來識別資料,而資料表與資料表之間也是藉由鍵值來建立彼此的關聯。所以,在學習與使用關聯式資料庫時,對於鍵值的認識是很重要的基礎!鍵值(Key Value)根據其不同的特性與用途,可區分為「超鍵」(Super Key)、「主鍵」(Primary Key)、「候選鍵」(Candidate Key)、「替代鍵」(Alternate Key)、「索引鍵」(Index Key)、「外來鍵」(Foreign Key)。

「超鍵」(Super Key)

「超鍵」(Super Key)是屬性的集合(也就是資料欄位的集合),具有唯一性。在一個關聯資料表中至少會有一個Super Key,那就是所有屬性的集合。下列的範例資料表中「員工編號」資料欄位具有唯一性,所是「員工編號」是超鍵;「身分證字號」資料欄位也具有唯一性,所以「身分證字號」也是超鍵;「員工編號」與「姓名」兩欄位的組合也有唯一性,所以也是超鍵。而所有欄位的組合也具有唯一性,因此也是超鍵。「英文名」資料欄位沒有唯一性,因為,關聯資料表中極有可能有同英文名的記錄,所以,「英文名」不是超鍵;「部門」有重複的內容,也不會是超鍵;「部門」+「稱呼」的組合亦不具唯一性,也不會是超鍵。

知識補充- 超鍵的特性

  • 最大的超鍵(Super Key)是一筆記錄中所有資料欄位(屬性)的集合。
  • 最小的超鍵(Super Key)是主鍵(Primary Key)。
  • 在關聯(資料表)中的一個或多個屬性(欄位)所構成,且具有唯一識別性的屬性集合即為超鍵(Super Key)

「主鍵」(Primary Key)

一個關聯(也就是一張資料表),是由許多資料欄位(屬性集)所組成的,而能夠識別一筆資料記錄是否是在資料表中是唯一的,即為主鍵,主鍵可以是一個資料欄位,也可以是一些資料欄位的組合(屬性集的子集)。每一個主鍵值在關聯表中都是唯一的。例如:下列的資料表中,「學號」可以是主鍵;「身份證字號」也可以是主鍵;「學號」與「英文名」組合亦可以是主鍵。

相較於超鍵,一個關聯資料表裡面會有多的超鍵,也至少會有一個超鍵(即所有屬性集合,意即所有欄位的集合),但有可能沒有任何主鍵,並且,就算有主鍵,一個關聯資料表裡也只能有一個主鍵!

主鍵的特性如下:

  • 關聯表中用來區別資料記錄的識別值。
  • 每一個資料記錄的主鍵值在關聯表中都是唯一的。
  • 主鍵值不可為虛值(Null Value)。
  • 主鍵是由屬性的子集所構成,所以可能是一個屬性,也可能是整個屬性集。
  • 一個關聯表的主鍵只能有一個。
  • 主鍵名稱會以實底線表示
  • 建立資料表時一般都是以「P.K.」來代表主鍵。

知識補充 - 如何挑選主鍵

  • 選擇永不會變更其值的屬性。
  • 確保不會是虛值的屬性。
  • 不要用會造成困惑的編號鍵值。
  • 盡量以單一的屬性來代表整筆值組(資料記錄)。
  • 由數個候選鍵中明確地選擇其中一個來當主鍵。

「候選鍵」(Candidate Key)

在一個關聯資料表中符合可以做為主鍵的欄位(屬性)或欄位集合(屬性子集)可能會有好幾個,而一個關聯資料表中僅能有一個主鍵,因此,可以被選定為主鍵的鍵值,即為「候選鍵」(Candidate Key)。換句話說,主鍵便是候選鍵中所選擇出來的。而根據前面針對超鍵的定義可得知,候選鍵也是屬於超鍵,可以定義爲"最小超鍵",也就是不含有多餘屬性的超鍵。例如:若員工資料表中,「員工編號」是超鍵,也是候選鍵;「身份證字號」是超鍵,也是候選鍵;而「員工編號」+「身份證字號」這個屬性組合也會是超鍵,而且,若移除任何一個屬性,也是具有唯一性,因此,這個屬性組合也是候選鍵。此外,「員工編號」+「姓名」這個屬性組合也是超鍵,但是,若移除「員工編號」這個屬性,不具有唯一性了,所以,這個屬性組合並不是候選鍵。

基本上,要成為候選鍵也就是主鍵的候選人,必須符合以下兩個條件:

  • 具有唯一性(Unique)
    必須可以做為唯一識別資料表中各種不同值組(記錄)的最少屬性集合。也就是說,在關聯資料表中不會有兩個資料記錄的欄位子集具有相同的值。
  • 不可縮減性(Irreducibility)
    若候選鍵是某些屬性的集合,則該屬性集合若除去任何一個屬性,即不符合唯一性。也就是說,若是某些屬性的集合是超鍵,具有唯一性,但屬性集合若除去任何一個屬性,即不符合唯一性,則這個屬性集合就不是候選鍵。

「替代鍵」 (Alternate Keys)

一個關聯資料表裡僅能有一個主鍵,可能會有一個以上的候選鍵,通常會在候選鍵中選擇一個做為唯一識別資料記錄的鍵值,即稱之為主鍵(Primary Key),在一個關聯資料表的敘述中,只能有一個主鍵,其餘未被選定為主鍵的候選鍵即稱之為「替代鍵」(Alternate Key)。如果一個資料表擁有多個候選鍵,我們可以選擇最方便、長度較短、作業較常用到的候選鍵來當作主鍵。

「複合鍵」(Composite Key)

指的是關聯資料表中的主鍵,而且是由兩個或兩個屬性(欄位)以上所組成的子集合,這種主鍵即稱之為複合鍵(Composite Key)。

「外來鍵」(Foreign Keys)

在關聯式資料庫中,任兩個資料表要進行關聯時,必須要透過「外來鍵」參照「主鍵」才能建立,其中「主鍵」值的所在資料表稱為「父關聯」,而「外來鍵」值的所在資料表稱為「子關聯」。以下列圖示為例,員工資料表中的主鍵為「員工編號」(Primary Key, PK)。而訂單資料表中每一張訂單都有獨一無二的訂單編號,因此,針對訂單資料表而言,其主鍵為「訂單編號」(Primary Key, PK),然而每一筆訂單交易記錄會記載是哪一位員工經手的,儲存在訂單資料表的「經手人」欄位裡,一位員工或許負責了多筆交易記錄,因此,此「經手人」資料欄位即為這兩張資料表建立關聯時的外來鍵((Foreign Keys, FK)。

對於關聯中的外來鍵而言,應具備以下特性:

  • 「子關聯(資料表)」的外來鍵必須對應「父關聯(資料表)」的主鍵。
  • 外來鍵是用來建立「子關聯(資料表)」與「父關聯(資料表)」的連結關係。
  • 外來鍵和「父關聯(資料表)」的主鍵欄位必須要具有相同定義域(屬性之值域也都要一樣),亦即相同的資料型態和欄位長度,但屬性(欄位)名稱則可以不同。
  • 外來鍵的欄位值可以是重覆值或空值(NULL)。

專由名詞的對照

關聯式資料庫模型SQL ServerMicrosoft Access的名詞
關聯(Relation)資料表(Table)資料表(Table)
值組(Tuple)列(Row)記錄(Record)
屬性(Attribute)欄(Column)欄位(Field)
主鍵(Primary Key)唯一識別碼(unique identifier)唯一識別碼(unique identifier)

<(1)首篇:通識資料庫>   <(2) 科普關聯式資料庫>   <(3) 關聯式資料庫的專有名詞>   <(4) 關聯式資料庫特性>