实验目标:
掌握数据完整性约束的创建和使用,包括实体完整性、参照完整性和用户自定义完整性。
实验步骤:
一、创建数据表
- 学生表(S)
| 字段名 | 中文语义 | 数据类型 | 约束 |
|---|---|---|---|
| SID | 学号 | INT | 主键 |
| SNAME | 姓名 | VARCHAR(50) | 非空 |
| AGE | 年龄 | INT | 检查约束:大于等于0 |
| SEX | 性别 | CHAR(1) | 默认值:'男' |
- 课程表(C)
| 字段名 | 中文语义 | 数据类型 | 约束 |
|---|---|---|---|
| CID | 课程号 | INT | 主键 |
| CNAME | 课程名 | VARCHAR(50) | 非空 |
| TEACHER | 任课教师 | VARCHAR(50) | |
- 学习表(SC)
| 字段名 | 中文语义 | 数据类型 | 约束 |
|---|---|---|---|
| SID | 学号 | INT | 外键,参照学生表(S) |
| CID | 课程号 | INT | 外键,参照课程表(C) |
| GRADE | 成绩 | INT | 检查约束:0-100之间 |
二、创建视图
创建视图 S_C_SC
,包含学号、姓名、课程名和成绩信息,视图数据来源为学生表(S)、课程表(C)和学习表(SC)。
三、创建项目表
创建数据表 projects
,字段定义如下:
| 字段名 | 数据类型 | 约束 |
|---|---|---|
| projid | INT | 主键 |
| pname | VARCHAR(20) | |
| p_start_date | DATE | |
| p_end_date | DATE | 检查约束:不能早于 p_start_date |
四、创建员工表和任务表
- 员工表(emp)
| 字段名 | 数据类型 | 约束 |
|---|---|---|
| empno | NUMERIC(4) | 主键 |
| empname | VARCHAR(20) | |
- 任务表(assignments)
| 字段名 | 数据类型 | 约束 |
|---|---|---|
| projid | INT | 外键,参照 projects 表,不可为空 |
| empno | NUMERIC(4) | 外键,参照 emp 表,不可为空 |
| … | … | … |
五、实验要求
- 使用 SQL 语句完成上述表的创建和视图的定义。
- 在创建表时,根据需求添加主键、外键、检查约束和默认值等完整性约束。
- 验证数据完整性约束的功能,例如插入不符合约束条件的数据,观察数据库的报错信息。