歡迎來到數據庫的世界!
你有沒有想過,Netflix 是如何準確記住你上次觀看心愛劇集的集數?又或者學校如何在不混亂的情況下,管理數以千計學生的資料、成績和出席紀錄?答案就是數據庫 (Databases)。在本章中,我們將探討數據是如何被組織、連結和傳輸的。如果一開始覺得有點生硬也不用擔心,我們將會透過日常生活中的例子來為大家拆解!
1. 平面檔案 (Flat Files) 與關聯式數據庫 (Relational Databases)
在進入進階概念之前,我們需要先了解數據儲存的兩種主要方式。
平面檔案數據庫 (Flat File Database)
想像一個巨大且單一的電子表格,將所有資訊都擠進同一個表中,這就是平面檔案 (Flat File) 數據庫。雖然它設置起來很簡單,但卻有很大的問題:
1. 數據冗餘 (Data Redundancy): 你會發現自己不斷重複輸入相同的資訊(例如客戶每次購物都要重新輸入地址)。
2. 數據完整性 (Data Integrity): 如果客戶搬家了,你必須找出他們所有的紀錄並逐一修改地址。只要漏掉一行,你的數據就會出現錯誤!
關聯式數據庫 (Relational Database)
關聯式數據庫則聰明得多。我們不再使用一個巨大的表,而是將數據拆分成多個較小的表(例如「客戶」表和「訂單」表),並將它們連結 (link) 起來。
例子:與其為了 50 個訂單而寫 50 次客戶名字,你只需在「客戶」表中寫一次,然後使用「客戶 ID」將其連結到他們的訂單即可。
小複習: 平面檔案對於簡單的購物清單還行,但對於任何複雜的系統,我們都會使用關聯式數據庫來節省空間並防止錯誤。
2. 成功的「關鍵」(Keys)
在關聯式數據庫中,我們使用鍵 (Keys) 來保持所有資料的組織性和連結性。
主鍵 (Primary Key): 這是表中每條紀錄的唯一識別碼。它必須是唯一的——沒有兩條紀錄可以使用相同的編號。
例子:你的學生編號或護照號碼。
外鍵 (Foreign Key): 這是一個表中的欄位,它是另一個表的主鍵。它就像是兩個表之間的「橋樑」或連結。
例子:在「訂單」表中,「客戶ID」就是一個指向「客戶」表的外鍵。
次鍵 (Secondary Key): 這是一個用於快速搜尋或索引數據的欄位。它不必是唯一的。
例子:當你打電話給商店時,他們可能會詢問你的「姓氏」來查找帳戶。「姓氏」就是次鍵,因為它比隨機的 ID 號碼更容易記住。
記憶小撇步:
Primary = Personal(個人的專屬 ID)。
Foreign = Friend(通往另一個表的連結,像朋友一樣互通)。
Secondary = Search(用於快速搜尋資料)。
3. 實體關係 (ER) 建模
實體 (Entity) 就是我們想要儲存數據的「物件」(例如學生、書本或汽車)。ER 建模 (ER Modelling) 就是畫出一張圖表,用來展示這些實體之間是如何關聯的。
關係主要有三種:
1. 一對一 (1:1): 一個人只有一本護照。
2. 一對多 (1:M): 一位母親可以有多個孩子,但每個孩子只有一位親生母親。
3. 多對多 (M:M): 許多學生修讀許多科目。(注意:關聯式數據庫不喜歡直接處理 M:M 關係;通常需要一個「連結表」在中間進行拆解!)
你知道嗎? 在繪製這些圖表時,我們通常會使用「烏鴉腳 (Crow's Foot)」標記法。單線代表「一」,而看起來像鳥爪的符號則代表「多」。
4. 數據的擷取、選取與管理
既然我們有了結構,那該如何使用這些數據呢?數據生命週期中有四個主要步驟:
數據擷取 (Capturing)
這是將數據存入數據庫的過程。
- 手動: 將資料輸入到線上表格。
- 自動: 使用 OCR(光學字元辨識)讀取印刷文字,或是在超級市場掃描條碼。
數據選取 (Selecting)
這是選擇你具體想要查看的資料。你通常不會想看整個數據庫,而只想看「所有 12 年級的學生」。我們使用查詢 (Queries)(通常使用名為 SQL 的語言編寫)來「過濾」數據,只顯示我們需要的內容。
數據管理 (Managing)
這涉及到保持數據庫的健康狀態。包括更新 (Updating)(更改電話號碼)、刪除 (Deleting)(移除舊帳戶)以及將數據排序 (Sorting) 成有用的順序。
數據交換 (Exchanging)
有時我們需要將數據從我們的數據庫發送到另一個電腦系統。為此,我們使用大家都能理解的標準格式:
- CSV (逗號分隔值): 一種簡單的文字檔,數據之間以逗號分隔。
- XML 或 JSON: 更現代化的格式,用於應用程式之間透過互聯網傳輸數據。
常見錯誤: 同學們常會誤以為「擷取」和「交換」是一樣的。記住:擷取是將數據存入,而交換則是數據在不同系統間的流動。
5. 重點總結
1. 關聯式數據庫使用多個連結表來減少重複的數據(冗餘)。
2. 主鍵是唯一的識別碼;外鍵是表與表之間的連結。
3. ER 圖表協助我們視覺化實體(如「客戶」和「產品」)之間如何關聯。
4. 數據交換依賴 CSV 或 JSON 等通用格式,確保不同系統可以互相「對話」。
繼續練習吧!數據庫的核心就是邏輯。一旦你看懂了表與表之間的「連結」,整個系統就變得淺顯易懂了。你一定做得到的!