1.1 · 表、行、屬性
目標: 掌握關係模型核心術語。
一張圖説關係模型
┌─── Table (relation) ─── Student ───────────────────────┐
│ id name class dob score │
│ 1001 Alice Chan F.4A 2007-05-12 86 │ ← 行 (tuple / record)
│ 1002 Bob Wong F.4A 2008-03-22 72 │
│ 1003 Carol Yip F.4B 2007-11-08 91 │
└─────────────────────────────────────────────────────────┘
▲ ▲
│ │
屬性 (column / field) 屬性1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
核心術語
| 術語 | 含義 |
|---|---|
| Entity 實體 | 我們建模的事物(Student、Book、Order) |
| Relation / Table 關係 / 表 | 共享屬性的行集合 |
| Tuple / Row / Record 元組 / 行 / 記錄 | 實體的一個具體實例 |
| Attribute / Column / Field 屬性 / 列 / 欄位 | 實體的一個性質 |
| Domain 域 | 屬性的合法值集合(如 age 0..150) |
| Schema 模式 | 資料庫的藍圖(哪些表、列、類型) |
| Instance 實例 | 某一時刻資料庫的實際資料 |
為何叫「關係」?
實體之間的關係用共享值表示 —— 通常一個表的主鍵作為另一個表的外來鍵出現。
Student Class
┌──────┬──────┐ ┌──────┬───────────┐
│ id │ class│ │ id │ teacher │
├──────┼──────┤ ├──────┼───────────┤
│ 1001 │ F.4A │ ───▶ │ F.4A │ Mr. Lee │
│ 1002 │ F.4A │ ───▶ │ F.4A │ Mr. Lee │
│ 1003 │ F.4B │ ───▶ │ F.4B │ Ms. Wong │
└──────┴──────┘ └──────┴───────────┘1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
關係的性質
一個合格的關係:
- 有唯一名稱。
- 有不同的屬性名。
- 存原子值(單元格內不放列表 —— 那是 1NF)。
- 無重複行(理論上)。
- 行順序無關。
- 列順序在理論上無關(雖然 SQL 保留它)。
實例 · 圖書館
| 實體 | 屬性 |
|---|---|
| Book | isbn (PK)、title、author、copies |
| Member | member_id (PK)、name、class、joined_on |
| Loan | loan_id (PK)、member_id (FK)、isbn (FK)、loan_date、due_date、return_date |
Loan 的每一行代表一次借書事件,連接一個會員與一本書。
學生常見錯誤
- 在一個單元格存逗號分隔列表(「Alice, Bob, Carol」) —— 違反 1NF。
- 一列裏混不同資料類型。
- 在很多行裏複製本應放在關聯表裏的資料。
考試式題目
題(4 分): 學校要追蹤多個社團的成員。每位學生可加入多個社團,每個社團有多位學生。識別實體、關鍵屬性與它們之間的關係。
參考答案:
- 實體:
Student、Club、Membership(關聯)。 - 主鍵:
Student.student_id、Club.club_id、Membership.(student_id, club_id)複合。 - 關係:Student 與 Club 多對多,由
Membership關聯表化解,含兩個外來鍵與可選欄位如joined_on。
關鍵要點
- 關係是元組的表;屬性是列。
- 原子值、無重複行。
- 實體間關係用共享鍵。
➡️ 下一節:1.2 鍵