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 键