Appreciate, respect and accept it, don't take it for granted

關聯式資料庫筆記

2016-07-20

真實世界中存在各種實體(Entity),實體與實體間存在某些關係(Relation)。
歌手和專輯、歌曲和歌詞、皮卡丘和訓練師小智…實體無所不在。
歌手出版了多張專輯,一張專輯內有多首歌曲,一首歌擁有一組歌詞,皮卡丘的訓練師是小智…實體之間總是有某種關係。

如何以資料的概念呈現實體與儲存實體?

利用屬性來描述與呈現實體的某些特性,如:專輯的名稱、簡介、出版日期和封面圖片…等。歌曲的曲名、長度、性質…等

其中某些屬性存在一些特別的性質,稱為鍵值(Key)。鍵值可分為幾種:超鍵候選鍵主鍵複合鍵外來鍵

此外,關係的呈現方式也分為三種:一對一一對多多對多

為了保持資料的一致性和完整性,避免異動資料時發生異常現象,訂下了三種完整性規則(Integrity Rules):實體完整性、參考完整性和值域完整性。

稍微整理一下,主要的概念有:

鍵值屬性可分為

關係種類可分為

完整性規則可分為

鍵值屬性

在計算機的世界裡,要如何判斷實體之間的差異呢?這輛車和那輛車指的是同一台車還是不同的車呢?

這時必須使用一種屬性來明確地告訴計算機:「阿!這輛車和那輛車真的不是同一輛!」。

使用車輛廠牌如何? Toyata, Ford, Mitsubishi…這看起來不太可行,因為一家車廠生產超過一輛車,假設A車和B車廠牌都是Toyato,計算機會準備掐死你…

使用車輛廠牌加上車輛型號再加上車牌號碼可行嗎? 看起來似乎可行,A車是Toyato的yaris,車牌號碼是ABC-1234;B車是Mazda的CX-5,車牌號碼是EFG-5678。「阿!A車和B車真的不是同一輛!」

等等…屬性太多太難記憶,直接使用車牌號碼OK嗎? A車車牌號碼是ABC-1234,B車是EFG-5678,「阿!A車和B車真的不是同一輛!」,計算機覺得開心。

符合唯一性的屬性組合,這概念即為超鍵。(車輛廠牌, 車輛型號,車牌號碼)是超鍵集合中的一個元素。

幫忙超鍵瘦身,移除屬性組合中的某些屬性後還是有唯一性,這概念即為候選鍵。(車牌號碼)是候選鍵。

「就決定是你了!皮卡丘」,被選到的候選鍵有了另一個名字:主鍵。負責代表這個實體,有著遠大的抱負和責任,絕對不可以重複不可以為空(Null),壓力山大啊!

關係種類

同一款引擎可以安裝在多台車上,一台車同時間只能安裝一款引擎。引擎實體和車實體為一對多關係。

(未完)

參考資料


Blog comments powered by Disqus