單元 1:數據與數據庫 – 綜合學習筆記
歡迎!本章節是現代資訊科技的基石。你日常網上使用的每一項服務——從學校註冊系統到 Netflix 等串流平台——全都依賴數據庫。如果「鍵值(keys)」和「關聯(relationships)」這些概念聽起來很複雜,別擔心,我們會將其拆解為簡單易懂的步驟。讀完這份筆記後,你將完全理解海量的原始數據是如何轉化為有用且結構化的資訊!
第 1 節:基礎知識 – 數據、資訊與結構
1.1 數據與資訊的區別
在資訊科技中,這兩個術語常被混淆,但它們的區別至關重要。
- 數據(Data): 未經處理的原始事實和數字。數據本身沒有意義。 例子:數字「175」、名字「Sarah」、或日期「2023-01-15」。
- 資訊(Information): 經過處理、組織、結構化或在特定背景下呈現的數據,使其具有意義且實用。 例子:「學生編號 175 的學生是 Sarah,她在 2023-01-15 的考試中獲得 A 等級。」
類比: 將數據想像成「原材料」(麵粉、糖、雞蛋)。資訊則是做好的「蛋糕」(實用的產品)。而「處理過程」就是烘焙。
1.2 數據庫結構:平面檔案 vs. 關聯式
數據庫(Database) 是一個組織化的結構化數據集合,通常以電子方式儲存。數據的結構方式決定了所使用的數據庫系統類型。
1. 平面檔案數據庫(Flat File Database):
- 所有數據儲存在單一表格或檔案中。
- 結構簡單,適合少量數據。
- 限制: 會導致嚴重的數據冗餘(data redundancy)(數據重複),並使更新資訊變得困難且容易出錯。
- 例子:Excel 試算表中的簡單通訊錄,你需要為每一位員工重複輸入公司地址。
2. 關聯式數據庫(Relational Database):
- 數據被分割到多個獨立的表格中,再透過共享欄位(鍵值)連結起來。
- 這是目前幾乎所有現代大型系統的標準。
- 優勢: 最小化數據冗餘,提升數據完整性(準確性),並容許執行複雜的查詢和報告。
- 例子:學校系統中,學生詳情放在一張表,課程詳情放在另一張,註冊連結則放在第三張表。
從平面檔案轉向關聯式數據庫的主要目的,是減少數據冗餘(避免重複輸入相同資訊)並提高數據完整性(確保數據準確無誤)。
第 2 節:表格的剖析
要建立數據庫,我們需要使用特定術語來描述表格內部的數據組成。
2.1 欄位、記錄與表格
想像一個用來儲存學生詳情的表格:
- 表格(Table / Entity): 相關數據的完整集合。這是核心結構。 例子:「學生」表。
- 欄位(Field / Attribute): 表格中的直行(Column)。它描述實體的一個特徵。每一筆記錄都必須為此欄位填入數值。 例子:「FirstName(名字)」、「DateOfBirth(出生日期)」、「StudentID(學生編號)」。
- 記錄(Record / Tuple): 表格中的橫列(Row)。它代表關於單一項目、人員或事件的完整數據集合。 例子:關於 Jane Doe 這位學生所有的資訊(名字、生日、ID)。
記憶口訣: Field(欄位)是上下垂直的(像直行);Record(記錄)是左右水平的(像橫列)。
2.2 數據類型
每個欄位都必須分配一種數據類型。這告訴數據庫該欄位預期放入哪種資訊,有助於驗證數據並提高儲存效率。
- 文字 / 字串(Text / String): 用於名字、地址或不需進行計算的代碼(即使包含數字,如產品編號)。
- 數值 / 整數 / 實數(Numeric / Integer / Real): 用於需要計算的數字(如數量、價格、年齡)。
- 布林 / 邏輯(Boolean / Logical): 只儲存兩個值之一:真/假、是/否、1/0。 例子:是否為管理員?(是/否)。
- 日期/時間(Date/Time): 以標準格式儲存日期和時間,容許排序和計算(例如計算年齡)。
你知道嗎? 使用正確的數據類型對於節省磁碟空間和加快數據庫操作至關重要。將 ID 號碼當作文字儲存而本應使用數值,是初學者常犯的錯誤!
第 3 節:關聯的力量 – 鍵值(Keys)
這是關聯式數據庫的核心概念。鍵值是特殊的欄位,用於唯一標識記錄並連結不同表格。
3.1 主鍵(Primary Key, PK)
主鍵是終極標識符。
- 一個(或一組)欄位,用於唯一標識表格中的每一筆記錄。
- 必須具有唯一性(不能有兩筆記錄的主鍵值相同)。
- 不能包含空值(Null,即不可為空)。
- 例子:在「學生」表中,「StudentID」是完美的主鍵。
如果起初覺得難懂也別擔心: 主鍵就像你的身份證號碼——它是唯一能將你與國內其他所有人區分開來的標記。
3.2 外鍵(Foreign Key, FK)
外鍵是用於表格之間的連結。
- 外鍵是表格中的一個欄位,它參照另一個表格中的主鍵。
- 它建立了兩個表格之間的關係。
- 外鍵欄位的值必須與相關聯表格中現有的主鍵值匹配。
- 例子:如果「課程」表的 PK 是「CourseID」,我們會在「學生」表中加入「CourseID」以顯示學生選修的課程。此時,學生表中的「CourseID」就是外鍵。
3.3 理解關係
關係定義了數據如何透過主鍵和外鍵在表格之間流動。最重要的關係有:
- 一對一(1:1): 表格 A 中的一筆記錄對應表格 B 中的唯一一筆記錄,反之亦然。(在實際核心數據中較少使用)。 例子:個人資料表連結護照詳情表(一個人擁有一本護照)。
- 一對多(1:M): 表格 A 中的一筆記錄可對應表格 B 中的零、一或多筆記錄。這是最常見且最基礎的關係。 例子:一位老師(A 表)教導多位學生(B 表)。老師表的主鍵會被用作學生表的外鍵。
- 多對多(M:M): 表格 A 中的多筆記錄可對應表格 B 中的多筆記錄。(這需要第三個「連結」表或「聯結」表才能正常運作)。 例子:多位學生選修多門課程。
PK (主鍵) = 本表的唯一 ID。
FK (外鍵) = 連結點,是另一個表格 PK 的複製品。
第 4 節:確保數據質量(完整性、驗證、核實)
數據要變得有用(轉化為資訊),必須具備可信度。這需要透過嚴格的質量控制來達成。
4.1 數據完整性與冗餘
- 數據完整性(Data Integrity): 數據的整體準確性、完整性和一致性。如果數據正確且可靠,則具有高完整性。
- 數據冗餘(Data Redundancy): 將同一數據多次儲存(例如為 100 個學生重複輸入 100 次學院地址)。冗餘會嚴重降低完整性,因為若你需要更新地址,一旦忘記更新其中一個位置,數據就會變得不一致。關聯式數據庫的設計初衷就是為了消除這種情況。
4.2 驗證(確保數據合理)
數據驗證(Validation) 是檢查輸入的數據是否合理、合乎邏輯並符合特定規則。它不會檢查數據在事實上是否正確。
常見的驗證檢查(步驟說明):
- 範圍檢查(Range Check): 確保數字或日期落在可接受的範圍內。 例子:「年齡」欄位必須介於 18 至 65 之間。
- 格式檢查(Format/Picture Check): 確保數據符合特定模式。 例子:英國郵遞區號必須符合 LLNN NLL 格式(L=字母,N=數字)。
- 存在檢查(Presence Check): 確保欄位沒有留空(必須輸入數據)。 例子:「姓氏」欄位為必填項。
- 長度檢查(Length Check): 確保輸入內容的字元長度正確(最短或最長限制)。 例子:「密碼」必須至少 8 個字元長。
- 查閱檢查(Look-up Check): 將輸入內容與預先設定的清單進行比對。 例子:「部門」欄位必須是「IT」、「市場部」或「人力資源部」之一。
4.3 核實(確保數據正確)
數據核實(Verification) 是檢查輸入系統的數據是否與原始來源數據完全一致。
- 視覺檢查(Visual Check): 人工核對螢幕上輸入的數據與原始文件。
- 雙重輸入(Double Entry): 由同一人或不同人將數據輸入兩次。電腦會比較兩次輸入的結果,如果不匹配,則會提示使用者重新檢查。
常見誤區: 範圍檢查(驗證)確認年齡是否在 1 到 100 之間;雙重輸入(核實)則確認如果使用者輸入「42」,電腦接收到的確實是「42」。驗證檢查規則,而核實檢查打字的準確性。
第 5 節:數據庫管理系統(DBMS)
數據庫管理系統(DBMS) 是一種允許使用者和其他應用程式與數據庫進行互動的軟體。常見例子包括 Microsoft Access、MySQL 和 Oracle。
5.1 DBMS 的角色
DBMS 在幕後處理了許多繁重的工作。其主要功能包括:
- 數據定義: 定義數據庫結構(建立表格、定義欄位和數據類型、設定關聯)。
- 數據操作: 允許使用者插入新數據、修改現有數據、刪除數據以及檢索數據(使用 SQL 查詢語句)。
- 數據安全: 管理使用者帳戶、權限和存取權限(例如確保學生只能查看自己的成績,而非他人的成績)。
- 數據完整性管理: 強制執行你設定的規則與約束(如主鍵唯一性和參照完整性——確保外鍵指向有效的主鍵)。
DBMS 就像一位強大的保全人員和圖書館管理員,確保只有對的人能接觸對的書,並且書本都有正確歸位。
章節總結與最終檢查
你已成功掌握數據庫的基礎概念!如果你理解了主鍵(PK)與外鍵(FK)的區別,以及我們連結表格的原因(減少冗餘),那你已為下一階段做好了準備。
- 記住目標: 將原始數據轉化為有用的資訊。
- 重要區別: 驗證(數據合理嗎?)vs. 核實(數據輸入準確嗎?)。
保持練習這些定義,很快你就能建立起屬於自己的高效關聯系統!