本作业包含数据库课程第五章和第八章的所有课后习题,旨在通过实践加深学生对关系型数据库设计、查询优化及事务管理的理解。提交截止日期为2020年4月1日。
假设存在以下两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。
用SQL语言定义这两个关系模式,并在模式中完成如下完整性约束条件的定义:
1. 定义每个模式的主键;
2. 定义参照完整性;
3. 确保职工年龄不得超过60岁。
具体地,
```
CREATE TABLE Staff (
Sno CHAR(9) PRIMARY KEY,
Sname VARCHAR(50),
Sage INT CHECK (Sage <= 60),
Post VARCHAR(50),
Pay DECIMAL(18,2),
Dno CHAR(9)
);
CREATE TABLE Dept (
Dno CHAR(9) PRIMARY KEY,
Dname VARCHAR(50),
Mname VARCHAR(50),
Tel CHAR(14),
FOREIGN KEY (Dno) REFERENCES Staff(Dno)
);
```
注意:在上述SQL定义中,`Dept`表的外键约束应修正为指向正确的参照关系模式中的主码。即应该将 `FOREIGN KEY (Dno)` 的引用目标从 `Staff(Dno)` 改正为关联到 `Department(Dno)`, 但根据题目描述和给定信息, 部门号是部门表的主键,职工表中包含的是指向该部门的外键。因此,在实际数据库设计时应确保参照完整性约束正确地定义了这两个模式之间的关系:`Staff.Dno REFERENCES Dept(Dno)`。
请确认上述SQL语句中的语法细节以适应具体的数据库系统要求(例如某些数据库可能需要在创建表之后单独添加FOREIGN KEY约束)。