有下面两个关系模式: 职工(职工号,姓名,年龄,性别,职务,工资,部门号) 部门(部门号,名称,经理名,电话) 1. 用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: (1).定义
时间: 2023-08-25 20:04:30 浏览: 162
职工表(primary key: 职工号):
```
CREATE TABLE 职工 (
职工号 INT PRIMARY KEY,
姓名 VARCHAR(20) NOT NULL,
年龄 INT NOT NULL,
性别 CHAR(2) NOT NULL,
职务 VARCHAR(20) NOT NULL,
工资 FLOAT NOT NULL,
部门号 INT NOT NULL,
FOREIGN KEY (部门号) REFERENCES 部门(部门号)
);
```
部门表(primary key: 部门号):
```
CREATE TABLE 部门 (
部门号 INT PRIMARY KEY,
名称 VARCHAR(20) NOT NULL,
经理名 VARCHAR(20) NOT NULL,
电话 VARCHAR(20) NOT NULL,
CHECK (部门号 > 0)
);
```
完整性约束条件:
(1). 主键约束:职工表中职工号是主键,部门表中部门号是主键。
(2). 外键约束:职工表中部门号是外键,参照部门表的部门号。
(3). 非空约束:职工表中姓名、年龄、性别、职务、工资、部门号都是非空字段,部门表中名称、经理名、电话都是非空字段。
(4). 默认约束:无。
(5). 检查约束:部门表中部门号必须大于0。
相关问题
设有两个关系模式:职工(职工号,姓名,性别,年龄,职务,工资,部门号) 部门(部门号,部门名称,经理名,地址,电话) 用关系代数表达式写出下列查询: 检索“采购部”女职工的职工号和姓名。
可以使用关系代数的选择、投影、连接操作实现查询。
查询表达式为:
$$
\pi_{\text{职工号, 姓名}}(\sigma_{\text{部门名称='采购部' and 性别='女'}}(\text{职工} \bowtie \text{部门}))
$$
其中,$\sigma$ 符号表示选择操作,$\pi$ 符号表示投影操作,$\bowtie$ 符号表示连接操作。
解释一下每个操作的含义:
1. 连接操作 $\text{职工} \bowtie \text{部门}$ 表示将职工表和部门表连接起来,连接条件是两个表中的部门号相等。
2. 选择操作 $\sigma_{\text{部门名称='采购部' and 性别='女'}}$ 表示从连接结果中选择符合条件的记录,即部门名称为“采购部”且性别为“女”的记录。
3. 投影操作 $\pi_{\text{职工号, 姓名}}$ 表示从选择结果中只选择职工号和姓名两个属性,去掉其他属性。
最终得到的结果就是“采购部”女职工的职工号和姓名。
假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码。 用 SQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: 定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60 岁。
创建职工表的 SQL 语句:
```
CREATE TABLE 职工 (
职工号 INT PRIMARY KEY,
姓名 VARCHAR(20),
年龄 INT CHECK (年龄 <= 60),
职务 VARCHAR(20),
工资 DECIMAL(10,2),
部门号 INT,
FOREIGN KEY (部门号) REFERENCES 部门(部门号)
);
```
创建部门表的 SQL 语句:
```
CREATE TABLE 部门 (
部门号 INT PRIMARY KEY,
名称 VARCHAR(20),
经理名 VARCHAR(20),
电话 VARCHAR(20)
);
```
其中,职工表的主码为职工号,部门表的主码为部门号。
参照完整性约束条件通过 FOREIGN KEY 和 REFERENCES 关键字进行定义,表示职工表的部门号列参考了部门表的部门号列,即职工表的部门号必须在部门表中存在。
职工年龄不得超过 60 岁通过 CHECK 约束条件进行定义,表示年龄列必须小于等于 60。
阅读全文