第 2 章 · 第二节 · 课件第 15 页
关系的性质
列是同质的,行序和列序可以交换,元组不能重复。

练一练
下面哪一种情况不符合关系的性质?
- A两列的属性名相同
- B两行的顺序交换
- C两列来自同一个域
答案 A
同一个关系中属性名必须不同。行序和列序都可以交换,不同的属性可以来自同一个域。
列是同质的,行序和列序可以交换,元组不能重复。

同一个关系中属性名必须不同。行序和列序都可以交换,不同的属性可以来自同一个域。
每一个分量都必须是不可分的数据项,不能表中有表。

籍贯分成省和市/县两列以后,每个分量都不可再分,成为规范化关系。
说出它的度和每个属性的域,再写出几个元组。
| 项目 | 内容 |
|---|---|
| 度 | 3,有三个属性 |
| studentId 的域 | 全体学号的集合 |
| courseId 的域 | 全体课程号的集合,例如 DB201、AI101 |
| term 的域 | 学期的集合 {2025春,2025秋} |
| studentId | courseId | term |
|---|---|---|
| 10001 | DB201 | 2025春 |
| 10002 | DB201 | 2025春 |
| 10001 | AI101 | 2025秋 |
CREATE TABLE CourseSelect (
studentId VARCHAR(10) NOT NULL,
courseId VARCHAR(16) NOT NULL,
term ENUM('2025春', '2025秋') NOT NULL,
PRIMARY KEY (studentId, courseId, term)
);term 用 ENUM 限定只能取域中的值。如果写成 VARCHAR,2025 春、2025春季 这样的写法都能存进去,统计和查询时就会出错。
把属性的取值范围写进数据类型和约束,存进去的数据才不会乱。