歡迎來到資料庫的世界!

你好!今天,我們要深入探討 AS Level IT 學習旅程中最重要的一個章節:資料庫與檔案概念 (Database and File Concepts)。如果你曾經使用 Netflix 尋找電影,或者學校在電腦上記錄你的成績,那你已經與資料庫互動過了!

在這些筆記中,我們將拆解資料庫是如何建立的、它們如何保持條理,以及它們如何幫助企業做出重大決策。別擔心,如果起初看起來內容很多——我們會一步一步慢慢來!

10.1 建立資料庫:基本構建模組

在我們儲存資料之前,需要先決定它屬於哪種「類型」。這就像為食物選擇合適的容器——你總不會把湯裝在紙盒裡吧!

指定資料類型 (Data Types)

每個「欄位」(Field,例如「名字」這類單一類別的資訊) 都需要一個資料類型。你需要知道以下常見的類型:
文字 (Text): 用於文字和句子。
字母數字 (Alphanumeric): 字母和數字的組合 (例如車牌號碼)。
數值 (Numeric): 僅限數字。可以是整數 (Integer)小數 (Decimal)
日期與時間 (Date and Time): 用於特定的日曆日期或時鐘時間。
布林值 (Boolean): 用於只有兩個選項的情況,例如是/否或真/假。

資料庫的「鍵」(Keys)

為了保持資料條理分明,我們使用稱為的特殊欄位。這些就像是資料的識別證。

1. 主鍵 (Primary Key): 這是一個唯一欄位,用來識別每一筆記錄。沒有兩個人可以擁有相同的主鍵 (就像你的身份證號碼或學號)。
2. 外鍵 (Foreign Key): 這是從一個資料表中提取出來,並出現在另一個資料表中,用來連結兩者的主鍵。
3. 複合鍵 (Compound Key): 有時候,單一欄位不足以區分唯一性,我們就會合併兩個欄位來組成一個唯一 ID。
4. 組合鍵 (Composite Key): 與複合鍵類似,這是一個由多個屬性組成的主鍵,用來唯一識別一個實體 (Entity) 的出現。

記憶小撇步:主鍵想像成你的指紋——它是你獨一無二的標記!外鍵則像是一座橋樑,將你的資料表連接到另一個表。

平面檔案 (Flat Files) 與關聯式資料庫 (Relational Databases)

平面檔案就像一張巨大的試算表。它很簡單,但容易導致許多錯誤和資料重複。

關聯式資料庫則是將多個資料表連結在一起的集合。
為什麼要用關聯式? 它能減少資料冗餘 (Data Redundancy) (即兩次儲存相同的東西),並且讓你在一個地方更新資訊就能同步,非常方便。

關聯 (Relationships):資料表之間如何溝通

資料表之間的連結主要有三種方式:
一對一 (1:1): 一個人有一本護照。一本護照屬於一個人。
一對多 (1:M): 一位母親可以有多個孩子,但每個孩子只有一位親生母親。(這是最常見的類型!)
多對多 (M:M): 許多學生可以修讀許多科目,而每個科目也有許多學生。

參照完整性 (Referential Integrity)

這聽起來很深奧,但它其實只是指「保持連結的健康」。參照完整性確保你不能讓一個外鍵指向一個不存在的主鍵。就像確保如果「家長」記錄被刪除,資料庫中就不會殘留「孩子」的記錄一樣!

驗證 (Validation) 與核實 (Verification)

我們需要確保輸入的資料是正確的。
驗證 (Validation): 電腦檢查資料是否「合理」(例如:「範圍檢查」確保你的年齡不是 500 歲)。
核實 (Verification): 人類檢查資料是否「準確」(例如:「雙重資料輸入」,即要求你輸入兩次密碼)。

快速複習:驗證 = 這可能嗎?核實 = 這正確嗎?

重點總結:關聯式資料庫使用鍵和關聯來保持資料的條理、唯一性與連結性,且不會浪費空間。

10.2 正規化 (Normalisation):清理混亂

正規化是組織資料庫以減少資料重複並提高資料完整性的過程。這就像透過將所有東西放入正確的抽屜來整理凌亂的房間一樣。

正規化的三個階段

1. 第一正規化 (1NF): 沒有「重複群組」。每個儲存格應僅包含一個資訊片段,且每筆記錄必須有一個主鍵。

2. 第二正規化 (2NF): 必須先滿足 1NF。所有非鍵欄位必須依賴於「整個」主鍵。如果一個欄位只依賴於複合鍵的「一部分」,它就必須被移到新的資料表中!

3. 第三正規化 (3NF): 必須先滿足 2NF。不應有「傳遞相依性」(Transitive dependencies)。這是一個大術語,意思就是:非鍵欄位不應依賴於另一個非鍵欄位。所有項目都應直接指向主鍵。

記憶小撇步:要達到 3NF,資料必須依賴於「鍵 (1NF)、整個鍵 (2NF) 以及只有鍵 (3NF)」。

重點總結:正規化讓資料庫更小、更快,並且在更新時減少出錯的機率。

10.3 資料字典 (Data Dictionary)

資料字典基本上是你資料庫的「使用手冊」或「食譜」。它不包含實際的姓名或地址,但包含後設資料 (Metadata) (即關於資料的資料)。

資料字典裡面有什麼?
• 欄位名稱
• 資料類型 (文字、數值等)
• 欄位大小 (允許多少字元)
• 驗證規則 (例如:必須 > 0)
• 資料表之間的關聯

你知道嗎?如果沒有資料字典,一名剛加入公司的新程式設計師根本不會知道資料庫中「Field_XZ_99」到底代表什麼!

10.4 檔案與資料管理

電腦實際上是如何在硬碟中找到資料的呢?存取檔案主要有兩種方式:

存取方法

1. 索引循序存取 (Indexed Sequential Access): 電腦保留一個「索引」(就像教科書後面的索引表)。它先查看索引找到大概範圍,然後循序搜尋以找到特定的記錄。

2. 直接檔案存取 (Direct File Access): 電腦使用數學公式 (雜湊,Hashing) 直接前往儲存資料的確切位置。這對於 ATM 提款或線上預訂等操作速度快得多。

資料庫管理系統 (DBMS)

DBMS 是一種讓你建立及管理資料庫的軟體 (例如 Microsoft Access 或 MySQL)。它有不同的類型:
關聯式 (Relational): 使用資料表 (最常見)。
階層式 (Hierarchical): 看起來像家譜。
網路式 (Network): 像是一個網狀結構,所有東西都可以連接到其他東西。
物件導向 (Object-Oriented): 將資料儲存為「物件」而非僅僅是文字或數字。

管理資訊系統 (MIS)

MIS 將資料庫中的原始資料轉換為對經理有用的報告。
範例:超市資料庫有一份每賣出一個蘋果的清單。MIS 將其總結為一份報告,說明「本月蘋果銷量下降 20%」,這樣經理就知道該降價或投放廣告了。

重點總結:雖然資料庫用來「儲存」資料,但 DBMS 用來「管理」它,而 MIS 則利用它來協助人們做出聰明的商業決策。

最後的鼓勵

你已經完成了資料庫的核心概念!別擔心,如果 2NF 或 3NF 現在聽起來還有些困惑——試著練習畫出表格,很快就會豁然開朗了。資料庫的重點全在於邏輯與組織。你一定做得到的!