在真正講解關聯式資料庫,先講一下怎麼將資料存到電腦的?
你可能在生活中使用過 excel 儲存資料,像是最近夏天很熱,大家很渴,你決定開一個試算表,讓大家參考菜單,再上去線上的 excel 填寫自己要喝什麼飲料,你一定有特定規格要大家遵守填寫,例如:飲料的糖、冰、數量、價錢。
我們再舉一個例子,假設你沒有使用過 excel 的經驗,從小到大你總該有看過醫生的經驗吧?去診所看醫生,櫃檯的護理師會要求你在一張表上填寫自己的個人資料,他/她收回去後再 key 到電腦。
綜合以上,你有沒有發現所謂的資料表其實就是將既定的格式的資料存到電腦保存起來。
那什麼是關聯式資料庫 (RDBMS)?
關聯式資料模型是由 IBM 公司的工程師埃德加·科德 (Edgar Frank Codd)所提出來的,背後有數學理論、代數集合支持。
數學?!蛤~聽起來好像很難?
沒有!其實概念很簡單,舉例來說,你有兩張 excel 試算表分頁,一張分頁存給飲料訂單,開放讓大家上去填寫要喝什麼飲料,第二張分頁存 50 嵐菜單,上面有品項跟價錢,如果你想要知道大家點的飲料多少錢,是不是可以藉由使用 vlookup(excel 垂直查詢函數),在第一張分頁用飲品名稱去查第二張分頁的飲品價錢。為什麼查得到?因為兩張分頁有共同欄位內容可以參考。
再回到關聯式資料庫,我們知道我們會將特定規格的資料輸入進入試算表,分頁間可以依據共同欄位關聯起來,想像一下,將這些試算表搬進去一套軟體,這套軟體就叫做「關聯式資料庫管理系統」,在這套管理系統內,你可以做到以下幾點:
- 結構化資料:你可以事先定義好資料表的各個欄位儲存長度、大小、資料型態,是要存數字還是文字等。
- 關聯多表:資料表跟資料表之間是可以相互關聯,依據一張表的欄位關聯到另一張的欄位,例如:我們前面範例所說的飲料訂單飲品項目可以關聯到菜單的飲品項目,找到飲品的對應價錢。
- 支援複雜的查詢:在資料庫中,你可以下指令進行複雜的查詢,也可以做聚合運算,例如:我們可以加總今天中午大家叫飲料的錢,方便待會付錢給外送人員。
- 更新資料:處理資料過程中,少不了我們需要對資料異動,像是有人不想要訂飲料,我們要從飲料訂單把它的訂購紀錄給刪除,或者是店家有調價部分飲品,我們就要調整菜單的價錢。
- 應用資料:我們可以自己寫手機 APP、網站創建一個使用介面,介面背後可以連接資料庫,如此一來,創造出更多應用場景。
要怎麼樣才能將資料轉換成關聯式資料表?
一樣是訂飲料的場景,一般來說,如果你是開團主,會怎麼設計欄位開放讓大家填寫,是不是像下圖一樣的表格,仔細看囉!你會發現同事很容易會點到同一種飲品,是不是就造成重複。
我們是不是可以把飲品抽成是另一張獨立的資料表,讓訂餐去參考到它,這是關聯式資料庫強大的地方,可以利用關聯資料表、正規化的方式,降低資料重複。