---
# System prepended metadata

title: Day 6 - 資料庫幼幼班：認識資料表
tags: [2026 後端工程師體驗營]

---

# Day 6 - 資料庫幼幼班：認識資料表

## 劇情背景

海克絲突然問你：「對了，你對資料庫的部分熟悉了嗎？」

你有點心虛：「呃...還沒有很熟...」

海克絲驚訝地看著你：「什麼？你應該知道我們是用 PostgreSQL 吧？那你對資料庫的概念熟嗎？」

看到你一臉茫然，海克絲笑了笑：「其實沒那麼難啦！你有用過 Excel 嗎？」

「當然有啊！」

「那你就已經知道一半的資料庫概念了！」海克絲打開電腦，「資料庫就像一堆有組織的 Excel 表格。今天我們先來認識什麼是『資料表』，以及 LiveFit 用了哪些表。」

![biglaugh](https://hackmd.io/_uploads/BJrhdvsHbe.png)

---

## 學習目標

- 理解什麼是資料庫與資料表
- 認識「主鍵」與「外來鍵」的概念
- 了解 LiveFit 的 4 張核心資料表
- 學會閱讀資料表結構

---

## 核心概念

### 資料庫是什麼？

資料庫就是「有組織的資料儲存庫」，像是一本超大的 Excel。

**LiveFit 使用 PostgreSQL：** 關聯式資料庫，資料以「表格」形式儲存，表格之間可以建立「關聯」。

### 資料表 vs Excel

| Excel | 資料表 |
|-------|--------|
| 一個 Excel 檔案 | 一個資料庫 |
| 一個工作表 | 一張資料表 |
| 一列資料 | 一筆記錄 |
| 一個欄位 | 一個欄位（Column） |

### 主鍵（Primary Key）是什麼？

主鍵就是每筆資料的「身分證號碼」，絕對不能重複，也不能是空的。

**特性：**
- 每張表都要有一個主鍵
- 通常是 `id` 欄位
- 用來唯一識別每一筆資料

### 外來鍵（Foreign Key）是什麼？

外來鍵是「連到別張表的暗號」，用來建立表格之間的關聯。

**範例：**
- 購買紀錄表的 `user_id` → 連到使用者表的 `id`
- 可以知道「這筆購買是誰買的」

### LiveFit 的 4 張核心資料表

| 資料表 | 中文名稱 | 說明 |
|--------|----------|------|
| CREDIT_PACKAGE | 堂數方案表 | 存放堂數方案（7堂、14堂、21堂） |
| SKILL | 技能表 | 存放技能清單（重訓、瑜伽、有氧） |
| USER | 使用者表 | 存放會員資料，role 欄位分辨學員/教練 |
| CREDIT_PURCHASE | 購買紀錄表 | 存放購買紀錄，有外來鍵連到其他表 |

### 正規化：為什麼要分這麼多表？

如果把所有資料都塞在一張表，會有兩個問題：

1. **重複輸入**：同一個客戶下 100 筆訂單，名字就要寫 100 次
2. **改資料災難**：客戶換電話，要改 100 個地方

**解決方法：把表格拆開！**
- 客戶資料存一張表
- 訂單資料存一張表
- 用「客戶編號」連結起來

這就是「正規化」的概念。

---

## 測驗題目預覽 (共 13 題)

### 資料庫觀念篇 (4 題)

1. 主鍵（Primary Key）的特性是什麼？
2. 如果把「金額」欄位設定為數字，可以輸入「五十萬」嗎？
3. 為什麼要把資料「正規化」（拆成多張表）？
4. 外來鍵（Foreign Key）的作用是什麼？

### LiveFit 資料表篇 (9 題)

5. CREDIT_PACKAGE 表是用來存什麼資料？
6. CREDIT_PACKAGE 表的 credit_amount 欄位代表什麼？
7. SKILL 表的 name 欄位為什麼不能重複？
8. USER 表的 role 欄位有什麼作用？
9. 王小明、李燕容、小美剛註冊時，他們的 role 是什麼？
10. 如果李燕容想從學員變成教練，要怎麼做？
11. USER 表的 email 欄位為什麼不能重複？
12. CREDIT_PURCHASE 表的 user_id 是什麼意思？
13. 為什麼購買紀錄要記錄「當時的價格」？

---

## 遊戲連結

請進入遊戲完成本日關卡：

👉 **[點此進入遊戲](https://hexschool.github.io/backend-camp-game/)**




## 回報格式(確認打卡細節)

1. 完成遊戲中的測驗並截圖完成畫面
2. 到體驗營 Discord 的[每日活動頻道](https://discord.com/channels/801807326054055996/1446368763581562880)，找到當天任務的討論串
3. 在討論串留言貼上截圖，打卡儀表板會自動記錄你的成績
4. 分享一下此關卡有哪些知識點讓你印象深刻，甚至有透過 AI 服務延伸學習


![截圖 2026-01-02 下午5.16.29](https://hackmd.io/_uploads/BJig6WSEZg.png)
---



## 海克絲的叮嚀

> 「資料庫是系統的心臟，資料出錯比畫面出錯嚴重多了。今天先把『表格怎麼看』學起來，明天我們再來學怎麼用 SQL 操作資料。記住，資料表之間是有關聯的——看懂這些關聯，你就能理解整個系統是怎麼運作的！」

---

## 重點整理

### 今天學到的概念

1. **資料庫** = 有組織的資料儲存庫，像超大的 Excel
2. **主鍵** = 每筆資料的身分證號碼，不能重複
3. **外來鍵** = 連到別張表的暗號，建立表格關聯
4. **正規化** = 把表格拆開，避免重複輸入和修改災難

### LiveFit 四張核心資料表

- **CREDIT_PACKAGE**：堂數方案（7堂、14堂、21堂）
- **SKILL**：技能清單（重訓、瑜伽、有氧）
- **USER**：會員資料，role 分辨學員/教練
- **CREDIT_PURCHASE**：購買紀錄，外來鍵連到 USER 和 CREDIT_PACKAGE
