实验目标:

掌握数据完整性约束的创建和使用,包括实体完整性、参照完整性和用户自定义完整性。

实验步骤:

一、创建数据表

  1. 学生表(S)

| 字段名 | 中文语义 | 数据类型 | 约束 |

|---|---|---|---|

| SID | 学号 | INT | 主键 |

| SNAME | 姓名 | VARCHAR(50) | 非空 |

| AGE | 年龄 | INT | 检查约束:大于等于0 |

| SEX | 性别 | CHAR(1) | 默认值:'男' |

  1. 课程表(C)

| 字段名 | 中文语义 | 数据类型 | 约束 |

|---|---|---|---|

| CID | 课程号 | INT | 主键 |

| CNAME | 课程名 | VARCHAR(50) | 非空 |

| TEACHER | 任课教师 | VARCHAR(50) | |

  1. 学习表(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 |

四、创建员工表和任务表

  1. 员工表(emp)

| 字段名 | 数据类型 | 约束 |

|---|---|---|

| empno | NUMERIC(4) | 主键 |

| empname | VARCHAR(20) | |

  1. 任务表(assignments)

| 字段名 | 数据类型 | 约束 |

|---|---|---|

| projid | INT | 外键,参照 projects 表,不可为空 |

| empno | NUMERIC(4) | 外键,参照 emp 表,不可为空 |

| … | … | … |

五、实验要求

  • 使用 SQL 语句完成上述表的创建和视图的定义。
  • 在创建表时,根据需求添加主键、外键、检查约束和默认值等完整性约束。
  • 验证数据完整性约束的功能,例如插入不符合约束条件的数据,观察数据库的报错信息。