IT 9626 學習筆記:資料庫與檔案概念 (主題 10)

哈囉,未來的 IT 專家!這章節——資料庫與檔案概念,對於你的理論知識(Paper 1)和實作技能(Paper 2)都至關重要,特別是在資料管理任務方面。
別擔心「正規化(Normalisation)」這類術語聽起來很複雜,我們會用簡單的類比來拆解它們。看完這些筆記後,你將能夠設計並管理穩健且高效的資料庫,這可是任何機構的核心技能!

10.1 建立資料庫:建構基礎

資料庫本質上是一個結構化資料的有序集合,通常以電子方式儲存。在建立資料庫之前,你需要先了解資料欄位。

資料類型與欄位大小

選擇正確的資料類型與大小可以確保資料完整性(準確性)並節省儲存空間。

  • 文字/字母數字 (Text/Alphanumeric): 用於姓名、地址、產品代碼。字母數字格式允許輸入字母、數字和符號。
  • 數值 (Numeric): 僅儲存數字。
    • 整數 (Integer): 整數(例如:物品數量)。
    • 十進位 (Decimal 或 Float/Real): 帶有小數部分的數字(例如:價格 $19.99)。
  • 日期/時間 (Date/Time): 儲存日曆日期和時間(例如:出生日期、訂單時間)。
  • 布林值/邏輯值 (Boolean/Logical): 僅儲存兩個值(是/否、真/假、0/1)。例子:是否已付款 (IsPaid)。

欄位大小 (Field Size) 定義了允許輸入的最大字元數或位元組數。如果學生編號永遠是 6 個字元,將欄位大小設定為 6 可以防止意外輸入過長的資料,並節省儲存空間。

理解關聯 (Relationships)

資料庫通常由多個相互連結的資料表組成——這就是關聯式資料庫 (Relational Database)。這些連結稱為關聯:

  • 一對一 (1:1): 資料表 A 中的一筆紀錄對應到資料表 B 中的精確一筆紀錄。例子:每位員工分配一個專屬的停車位。
  • 一對多 (1:M): 資料表 A 中的一筆紀錄對應到資料表 B 中的多筆紀錄。這是最常見的類型。例子:一位客戶可以下多張訂單。

(註:對於多對多 M:M 關聯,我們需要第三張「連結資料表」,通常稱為交集資料表 (Intersection Table)連接資料表 (Junction Table),將其分解為兩個 1:M 關聯。例子:多位學生可以選修多門課程。

小貼士: 思考關聯的方向。客戶(一) -> 訂單(多)。

鍵值欄位的功能

鍵值是是用於唯一識別紀錄並連結資料表的欄位。

  1. 主鍵 (Primary Key, PK): 用於唯一識別資料表中每筆紀錄的欄位(或欄位組合)。它必須包含唯一且非空的數值。例子:員工編號 (EmployeeID)。
  2. 外鍵 (Foreign Key, FK): 資料表中參照另一個資料表主鍵的欄位。它形成了資料表之間的連結。例子:在訂單資料表中,客戶編號 (CustomerID) 是連結回客戶資料表的外鍵。
  3. 複合鍵 (Compound Key):兩個或多個欄位組成的主鍵,其中組合值必須是唯一的,但個別欄位的值則不一定唯一。(在許多上下文中與 Composite Key 通用。)例子:時間表可能會使用(日期 + 時間)作為課程時段的唯一識別碼。
  4. 組合鍵 (Composite Key): 通常與 Compound Key 同義,指由多個屬性組成的組建。
參照完整性 (Referential Integrity) 及其重要性

參照完整性是一組規則,確保資料表之間的關聯保持一致且有效。

  • 它防止你在外鍵欄位中輸入不存在於連結資料表主鍵中的數值。例子:你無法為一個在客戶資料表 (PK) 中不存在的客戶編號 (FK) 下訂單。
  • 它防止意外刪除其他紀錄所依賴的紀錄。例子:如果某位客戶 (PK) 已經下了 10 張訂單,參照完整性會阻止你刪除該客戶紀錄,除非先刪除或重新指派那些訂單。

重點總結: 參照完整性使你的連結可靠,並防止出現「孤兒紀錄」(沒有父參照的資料)。

平面檔案與關聯式資料庫的比較

資料的結構取決於複雜度和需求:

特性 平面檔案 (Flat File) 關聯式資料庫 (Relational Database)
結構 單一資料表或檔案。 多個互連的資料表(關聯)。
資料冗餘 高(資料在多筆紀錄中重複)。 低(資料只儲存一次,透過鍵值連結)。
複雜度 易於設定,適合小型資料集。 設計複雜,適合大型系統。
適用性 簡單郵寄清單、單一用途資料儲存。 交易系統、薪資管理、大型企業。

平面檔案對於非常小且非關鍵的資料集可能更合適,但關聯式資料庫在資料完整性、減少冗餘和處理複雜查詢方面具有明顯優勢。

實體關聯圖 (ERD)

ERD 是一張視覺化地圖,展示了資料庫的結構,包括實體(資料表)以及它們之間的關聯。

  • 概念性 ERD: 高層級、抽象的實體與關聯檢視,不依賴於任何特定的 DBMS 軟體。
  • 邏輯性 ERD: 定義實體、屬性(欄位)以及主鍵/外鍵,但尚未指定資料類型或欄位大小。
  • 實體性 ERD: 用於實作的詳細設計,指定了所有資料表、欄位、資料類型、索引和鍵值。

10.2 正規化至第三正規化 (3NF)

正規化是建構關聯式資料庫以最小化資料冗餘並提高資料完整性的過程。我們致力於達到第三正規化 (3NF)

正規化形式 (UNF, 1NF, 2NF, 3NF)

別擔心,正規化只是分步驟整理你的資料而已!

1. 非正規化形式 (UNF):

  • 特徵:包含重複群組或單一儲存格中有數個值。看起來就像雜亂的試算表。

2. 第一正規化 (1NF):

  • 要求:
    1. 消除重複群組(即每個儲存格必須只包含一個值——資料必須是原子性的)。
    2. 識別主鍵。
  • 達成方法:將重複資料拆分到新的資料表中,並使用主鍵連結回原表。

3. 第二正規化 (2NF):

  • 要求:
    1. 必須已符合 1NF。
    2. 沒有部分相依 (Partial Dependency):所有非鍵屬性必須相依於整個主鍵。(此規則僅在你有複合鍵時適用)。
  • 達成方法:如果非鍵欄位僅相依於複合鍵的「一部分」,將該部分相依移至新資料表。

4. 第三正規化 (3NF):

  • 要求:
    1. 必須已符合 2NF。
    2. 沒有遞移相依 (Transitive Dependency):沒有非鍵屬性可以相依於另一個非鍵屬性。
  • 達成方法:如果一個非鍵欄位決定了另一個非鍵欄位的值,將兩者移至新資料表。例子:如果郵遞區號決定了城市,你應該將郵遞區號和城市分離到獨立的資料表中。

正規化的優點 (至 3NF):

  • 減少資料冗餘(節省儲存空間)。
  • 提高資料完整性(資料只需輸入一次)。
  • 簡化查詢與排序。
  • 使維護(更新、插入、刪除)更簡單、更安全。

10.3 資料字典 (Data Dictionary)

資料字典(或資料定義)是關於資料的中央儲存庫,包含其含義、與其他資料的關聯、來源、用法和格式。它描述的是資料庫的結構,而非實際的資料內容。

資料字典的組成要素

當你為欄位建立資料字典時,必須包含:

  • 欄位名稱:(例如:StudentID, FirstName)
  • 資料類型:(例如:文字、整數、日期、貨幣、布林值)
  • 欄位大小:(例如:6 個字元, 8 位元組)
  • 描述/用途:(例如:學生的唯一識別碼)
  • 驗證規則:(例如:>0, 不得為空)
  • 格式:(例如:###-##, DD/MM/YYYY)
  • 索引狀態:(是/否,是否允許重複)

10.4 檔案與資料管理

檔案類型與存取方法

1. 檔案存取方法:

  • 循序存取 (Sequential Access): 資料按寫入順序存取(如同卡式錄音帶)。若要讀取第 100 筆紀錄,必須先讀完前 99 筆。用於批次處理,如計算每月水電費。
  • 直接存取 (Direct File Access): 無需讀取先前紀錄即可立即擷取資料。使用位址或鍵值。用於即時系統,如查詢客戶的銀行帳戶餘額。
  • 索引循序存取 (Indexed Sequential Access): 一種折衷方案。紀錄循序儲存,但維護一個索引(查詢表)以允許更快的直接存取。
資料庫管理系統 (DBMS)

DBMS 是用於處理資料庫建立、維護與使用的軟體。

  • 關聯式 DBMS (RDBMS): 標準模型。資料儲存在透過鍵值連結的資料表中。(當今最常見)。
  • 階層式 DBMS: 資料以樹狀結構儲存(父子關係)。
  • 網路型 DBMS: 與階層式相似,但允許一個紀錄有多個父紀錄(更靈活的連結)。
  • 物件導向 DBMS: 將資料儲存為物件,結合了資料與操作該資料的方法。
管理資訊系統 (MIS)

MIS 是組織用來整合各方資料並呈現報告,以輔助決策的系統。

  • MIS 的功能: 資料收集與整合、報表製作(儀表板、圖表)、決策支援工具。
  • MIS 的應用: 監控銷售表現、追蹤庫存與供應鏈效率、財務報告與預算編列。
資料輸入檢查
  • 驗證規則 (Validation Rules): 系統執行的自動化檢查,確保資料「合理」且「符合規則」。例子:存在性檢查、範圍檢查、格式檢查、查閱檢查。
  • 驗證 (Verification): 手動執行的檢查,確保資料「準確」(正確複製或轉錄)。例子:雙重資料輸入、人工視覺核對。