歡迎來到資料庫的世界!

在本章中,我們將探索電腦如何管理海量的資訊。試想一下 NetflixInstagram 或你學校的成績系統,它們都需要管理數以百萬計的資料。它們是如何保持井然有序,以便在眨眼間準確地找到所需的內容呢?答案就是關聯式資料庫 (Relational Databases)
如果起初覺得有點深奧也不用擔心——我們將透過日常生活中的例子,把它拆解得清清楚楚!

5.1 資料與資訊

在建立資料庫之前,我們需要先了解資料 (Data)資訊 (Information) 之間的區別。這兩個詞雖然經常被混用,但在資訊科技 (IT) 領域中,它們的含義截然不同。

資料 vs. 資訊

  • 資料 (Data): 這是指沒有經過處理、缺乏上下文的原始事實和數字。例如:「12052008」。單看這串數字,它只是一堆沒有意義的數值。
  • 資訊 (Information): 這是指經過處理或整理,從而具有意義的資料。如果我們為上述數字加上背景資訊,它就變成了:「該學生的出生日期為 12/05/2008。」

比喻: 想像桌上有一堆麵粉、雞蛋和糖。這就是資料。當你將它們混合並烤成蛋糕後,你就得到了資訊。蛋糕就是那個有用的成果!

結構化資料 vs. 非結構化資料

並非所有資料看起來都一樣。結構化資料 (Structured data) 非常有組織(就像一個擁有清晰行與列的試算表)。非結構化資料 (Unstructured data) 則包含其他所有東西——電子郵件、相片、影片和社交媒體貼文。對於電腦來說,快速「讀取」非結構化資料要困難得多。

重點總結: 企業之所以重視資料庫,是因為資料庫能將混亂的資料轉化為有意義的資訊,進而協助他們做出更好的決策。


5.2 結構化資料:關聯式資料庫

關聯式資料庫是一種將資料儲存在多個相互連結(關聯)的資料表 (Tables) 中的方式。這可以防止錯誤並保持一切井井有條。

資料表的構造

要了解資料庫,必須先掌握資料表的組成部分:

  • 資料表 (Table): 關於特定「事物」的資料集合(例如「學生」表或「書籍」表)。
  • 欄位 (Field/Column): 資料的單一屬性。例如,名字電話號碼
  • 紀錄 (Record/Row): 關於某個特定項目的所有資料。例如,「學生」表中的一行,就包含了一位特定學生的學號、姓名和地址。

成功的「關鍵」:鍵值 (Keys)

在資料庫中,我們需要透過一些方式來識別並連結資料。我們會使用稱為鍵值 (Keys) 的特殊欄位:

1. 主鍵 (Primary Key): 這是一個對每條紀錄而言皆為唯一 (Unique) 的欄位。任何兩條紀錄都不可以擁有相同的主鍵。
範例:你的學生編號或護照號碼。

2. 外鍵 (Foreign Key): 這是位於某個資料表中,但卻是另一個資料表之主鍵的欄位。這就是我們連結兩個資料表的方式!

3. 複合鍵 (Composite Key): 有時候,單一欄位不足以成為唯一識別碼。複合鍵會結合兩個或以上的欄位來建立唯一的識別碼。
範例:在「教室預約」表中,「課室編號」不足以識別(因為同一個課室會被多次使用)。但「課室編號」+「時間」+「日期」結合起來,就能構成一條唯一的紀錄。

快速複習盒:
- 欄位 (Field) = 直行 (類別)
- 紀錄 (Record) = 橫列 (個別項目)
- 主鍵 (Primary Key) = 唯一識別號。


5.2.3 實體與關聯

在資料庫設計中,實體 (Entity) 就是我們正在儲存資料的「事物」(例如客戶產品汽車)。而關聯 (Relationship) 則是這些實體之間如何互動。

三種關聯類型

1. 一對一 (One-to-One, 1:1): 表 A 中的每條紀錄只與表 B 中的一條紀錄相關聯。
範例:每個人只有一本護照,而每本護照也只屬於一個人。

2. 一對多 (One-to-Many, 1:M): 表 A 中的一條紀錄可以與表 B 中的多條紀錄相關聯。
範例:一位母親可以有多個孩子,但每個孩子只有一位親生母親。

3. 多對多 (Many-to-Many, M:M): 表 A 中的多條紀錄與表 B 中的多條紀錄相關聯。
範例:學生與科目。一位學生選修多個科目,而一個科目也有多位學生選修。

實體關聯圖 (ERD)

ERD 是一張展示資料表如何連結的圖表。它使用方框表示實體,並用線條表示它們之間的連結方式。
你知道嗎? 在 ERD 中,我們經常使用一個稱為「烏鴉腳 (Crow's Foot)」(看起來像個叉子)的符號來表示關聯中「多」的一方!

避免常見錯誤: 不要混淆主鍵外鍵。請記住:主鍵是其所屬資料表的「主要身份證」。當它去拜訪另一個資料表以建立連結時,它就成了外鍵


5.3 結構化查詢語言 (SQL)

當我們將資料整理成資料表後,該如何與資料庫溝通呢?我們使用一種稱為 SQL(讀作「Sequel」)的語言。

為什麼要使用 SQL?

SQL 讓我們能夠操作 (manipulate) 資料。這意味著我們可以:

  • 選取 (Select): 尋找特定資料(例如:「顯示所有拿到 A 的學生」)。
  • 插入 (Insert): 新增資料(例如:「將新學生加入系統」)。
  • 更新/修正 (Update/Amend): 修改現有資料(例如:「更改學生的地址」)。
  • 刪除 (Delete): 移除資料。

使用 SQL 連結資料表

SQL 最強大的功能之一是 JOIN 指令。這讓電腦能夠查看兩個不同的資料表,並根據它們的連結鍵值將其合併為一個視圖。
範例:連結「訂單」表與「客戶」表,讓商店可以查看是誰購買了哪件商品。

記憶小幫手 (SQL 關鍵字):
記住 S.F.W. 就能掌握查詢的基本順序:
Select (你想要看什麼?)
From (它在哪個資料表中?)
Where (具體的搜尋條件是什麼?)


總結檢查清單

在繼續學習之前,確保你能回答以下問題:

  • 我能解釋資料資訊的區別嗎?
  • 我是否知道主鍵必須是唯一的?
  • 我能識別資料表中的欄位紀錄嗎?
  • 我能舉例說明一對多的關聯嗎?
  • 我是否了解 SQL 是用於搜尋及更改資料庫的語言?

做得好!你剛剛已經掌握了關聯式資料庫的核心概念。請繼續練習在你每天使用的應用程式中識別這些組成部分!