🎉 歡迎來到資料庫:建立架構!

你好!在本章中,我們將學習如何為任何優質的資料庫奠定基礎。這就像擔任建築師一樣:在建造摩天大樓之前,你需要一份紮實的藍圖!
從一開始就正確設計資料庫結構,對於整齊且高效地儲存資訊至關重要。別擔心,如果這看起來有點技術性——我們會運用簡單的步驟和實際案例來拆解每個部分。讓我們開始動工吧!

1. 理解資料庫類型:平面檔案(Flat File)與關聯式資料庫(Relational Database)

在開始設計之前,你需要了解資料庫組織的兩種主要方式:

平面檔案資料庫 (Flat File Databases)

平面檔案資料庫是最簡單的類型。它將所有資料儲存在單一表格中。

比喻:想像一個簡單的試算表,包含了你所有朋友的詳細資料(姓名、電話、地址、最喜歡的顏色)。所有資訊都在同一個地方。

平面檔案的優點與缺點

優點:

• 設定和使用簡單。
• 適合少量資料。

缺點:

• 出現大量資料冗餘 (data redundancy)(相同的資料重複出現多次)。例如,如果有兩個學生住在同一個地址,你必須輸入該地址兩次。
• 資料不一致:如果你不小心打錯了重複的地址,你的資料現在就不準確了。
• 難以更新(你必須在該資料出現的所有地方進行修改)。

關聯式資料庫 (Relational Databases)

關聯式資料庫將資料儲存在多個獨立的表格中,這些表格透過共同的欄位(鍵值,keys)連結在一起。這正是你接下來要學習建立的重點。

比喻:與其使用一個巨大的朋友清單,不如建立一個「朋友」表格(姓名、ID)和一個獨立的「地址」表格(ID、街道、城市)。你可以使用 ID 編號將它們連結起來。

重點總結(資料庫類型)

關聯式資料庫的設定較複雜,但對於大型資料集來說更好,因為它們能減少資料重複(冗餘),並使資料保持一致且易於管理。

2. 建立表格結構:欄位與資料類型

建立資料庫結構(表格)的第一步是定義你需要儲存哪些資訊。這些資訊項目稱為欄位 (fields)

2.1 匯入資料 (當無法從頭開始時)

有時,你需要的資料已經以其他格式存在,例如純文字檔 (.txt) 或逗號分隔值檔 (.csv)。

你必須能夠使用指定的欄位名稱從現有檔案匯入資料(包括 .csv、.txt)來建立你的表格。匯入時,資料庫軟體通常會嘗試猜測資料類型,但你必須手動檢查並進行調整!

2.2 設定欄位名稱

欄位名稱應該具備描述性且清晰,例如 FirstName(名字)、DateOfBirth(出生日期)或 IsActiveMember(是否為活躍會員)。

2.3 選擇合適的資料類型

資料類型 (data type) 告訴資料庫該欄位將儲存哪種類型的資訊(例如:文字、數字或日期)。選擇錯誤的類型可能會導致錯誤並阻礙計算。

你必須掌握的四種主要資料類型:

1. 文字/字串 (Text/String):

• 用於文字、姓名、地址或不需要進行計算的數字(如電話號碼、郵遞區號或學生證號碼)。
• 在課程大綱中稱為文字 (Text)

2. 數值 (Numeric):

• 用於你可能需要進行計算的數字(例如:數量、價格、年齡)。
• 你需要設定的數值資料子類型包括:
    • 整數 (Integer):僅限整數(例如:購買的物品數量:5)。
    • 十進位 (Decimal):包含小數部分的數字。
    • 貨幣 (Currency):需要貨幣符號($)的數字。
    • 百分比 (Percentage):格式化為顯示百分比的數字(例如:25%)。
    • 你還必須能夠設定所需的特定小數位數

3. 日期/時間 (Date/Time):

• 用於日期和時間(例如:出生日期、交易時間)。
• 你必須設定顯示格式(例如:DD/MM/YYYY 或 YYYY-MM-DD)。

4. 布林值/邏輯值 (Boolean/Logical):

• 用於只能有兩種值之一的欄位:True(真)或 False(假)。
• 在課程大綱中稱為布林值/邏輯值 (Boolean/Logical)
範例:訂單是否已出貨?(是/否)。該學生是否為男性?(True/False)。
• 你必須設定顯示格式(例如:yes/no、true/false 或勾選框)。

💡 快速複習:為什麼資料類型很重要?

如果你將價格欄位設定為文字,你就無法使用 SUM 函數將所有價格相加!請務必選擇與你所需處理類型相匹配的資料類型。

3. 定義關係:主鍵 (Primary Key) 與外鍵 (Foreign Key)

這是建立關聯式資料庫最重要的一部分。鍵值(Keys)是我們連結表格的方式。

3.1 主鍵 (Primary Key, PK)

主鍵是一個欄位(或欄位組合),用於唯一識別表格中的每一筆記錄。它是每一筆資料的專屬 ID 識別證。

主鍵的特徵:

唯一性:沒有兩筆記錄可以擁有相同的主鍵值。
必要性:它不能為空(null)。
範例:學生證號碼、客戶 ID 或產品代碼。

你知道嗎?有時你可以使用兩個欄位組合來形成唯一鍵,這被稱為複合鍵 (composite key)

3.2 外鍵 (Foreign Key, FK)

外鍵是一個位於某個表格中,且指向另一個表格主鍵的欄位。它是連結兩者的「橋樑」。

外鍵的特徵:

• 它連結兩個表格。
• 它在自己的表格中不一定要具備唯一性(例如:許多學生可以共用同一個 TeacherID)。
• 它建立了必要的關係 (relationship)

範例:在「學生」表格中,TeacherID 欄位是一個外鍵。它連結回「教師」表格中的 TeacherID(主鍵)。

3.3 在表格之間建立關係

在你的資料庫軟體中,你將使用這些鍵值來建立關係。IGCSE 資料庫中大多數的關係都是一對多 (One-to-Many)

範例:一位老師(主鍵)教導許多學生(引用教師的外鍵)。

設定這些關係可以確保參照完整性 (referential integrity)——這意味著你不會不小心將學生指派給一位不存在的老師!

重點總結(鍵值與關係)

主鍵確保每筆記錄都是唯一的。外鍵將表格連結在一起,形成關聯式資料庫並防止資料冗餘。

4. 設計資料輸入表單

一旦設定好表格和關係,你需要一種讓使用者能夠輕鬆且準確地輸入資料的方法。這可以透過資料輸入表單 (data entry form) 來完成。

4.1 良好表單設計的特徵

良好表單的目標是讓資料輸入對使用者而言快速、準確且容易

良好的表單設計包括:

清晰的佈局:邏輯順序,將相關欄位分組。
適當的間距:足夠的留白,讓表單看起來不會雜亂無章。
適當的字體與大小:易於閱讀的文字。
標題與標籤:每個輸入欄位都有清晰的標籤。
使用適當的控制項:針對資料類型選擇正確的視覺元素。(見 4.2 節)

4.2 選擇正確的表單控制項

與其對每個欄位都使用標準文字方塊,你應該使用特殊的控制項來加速輸入並減少錯誤:

• 選項按鈕 (Radio Buttons / Option Buttons):用於使用者必須從一個小清單中僅選擇一個選項時。
    範例:選擇性別(男或女)。

• 勾選框 (Check Boxes):用於布林值/邏輯資料類型,使用者在是或否,或者 True 或 False 之間進行選擇。它們可以被勾選(True)或不勾選(False)。
    範例:該物品是否有庫存?(如果是,則勾選該方塊)。

• 下拉式選單 (Drop-down Menus / Combo/List Boxes):當欄位有大量可接受的輸入項,或者為了確保使用者透過從清單中選擇來一致地輸入資料時使用。
    範例:選擇國家或預先定義的部門名稱。

重點總結(表單設計)

設計良好的表單會利用留白和適當的控制項(如選項按鈕或下拉式選單)來引導使用者,使資料輸入既高效又準確。

你現在已經掌握了建立穩固資料庫結構的藝術!你知道如何定義欄位、分配類型、使用鍵值連結表格,並建立使用者友善的輸入表單。做得好!