考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

建立如下数据库表: CREATE TABLE department( departid int not null primary key, deptname varchar(20) not null ); CREATE TABLE employee( employeeid int not null, deptid int not null, ename varchar(20) not null, job varchar(10),sal decimal(10,2) ); (1)要想保证employee表中每一个雇员是唯一的,且只能属于在department表中已经存在的部门,最有效的做法是
A. 把employeeid和deptid设为联合主键
B. 把employeeid设为主键,同时在deptid列上创建一个外键约束
C. 把employeeid设为主键,同时在deptid列上创建一个唯一约束
D. 在deptid列上创建一个唯一约束,同时在deptid列上创建一个外键约束
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

要想保证employee表中每一个雇员是唯一的,把employeeid设为主键或唯一约束。每个雇员只能属于在department表中已经存在的部门,在deptid列上创建一个外键约束。

正确答案是:B: 把employeeid设为主键,同时在deptid列上创建一个外键约束。

### 分析:

1. **唯一性要求**:
- 每个雇员在 `employee` 表中必须是唯一的,这意味着需要一个唯一标识符。这通常通过设置 `employeeid` 为主键来实现,因为主键约束自动保证了唯一性和非空性。

2. **部门存在性要求**:
- 每个雇员必须属于一个已经存在的部门,这意味着 `employee` 表中的 `deptid` 必须引用 `department` 表中的 `departid`。这可以通过在 `deptid` 列上创建一个外键约束来实现,确保 `employee` 表中的 `deptid` 必须存在于 `department` 表的 `departid` 列中。

### 选项分析:

- **A: 把employeeid和deptid设为联合主键**:
- 联合主键可以保证 `(employeeid, deptid)` 组合的唯一性,但这并不能单独保证 `employeeid` 的唯一性。此外,这种设计不能直接保证 `deptid` 必须存在于 `department` 表中。

- **B: 把employeeid设为主键,同时在deptid列上创建一个外键约束**:
- 这种设计既能保证 `employeeid` 的唯一性,又能通过外键约束确保 `deptid` 必须存在于 `department` 表中,完全满足题目要求。

- **C: 把employeeid设为主键,同时在deptid列上创建一个唯一约束**:
- 这种设计可以保证 `employeeid` 的唯一性,但 `deptid` 的唯一约束会导致每个部门只能有一个雇员,这显然不符合实际需求。此外,这种设计也不能保证 `deptid` 必须存在于 `department` 表中。

- **D: 在deptid列上创建一个唯一约束,同时在deptid列上创建一个外键约束**:
- 这种设计会导致每个部门只能有一个雇员,因为 `deptid` 的唯一约束会限制 `deptid` 的重复使用,这显然不符合实际需求。

因此,选项 B 是最符合题目要求的。