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

备考刷题,请到

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 列上创建一个外键约束。

(1)要想保证 `employee` 表中每一个雇员是唯一的,且只能属于在 `department` 表中已经存在的部门,最有效的做法是:

**B: 把 employeeid 设为主键,同时在 deptid 列上创建一个外键约束**

### 专业分析:
1. **唯一性保证**:
- 要保证 `employee` 表中每一个雇员是唯一的,最直接的方法是为 `employeeid` 列设置主键约束。主键约束不仅保证了唯一性,还自动创建了一个唯一索引,确保每个雇员的 `employeeid` 是唯一且不为空。

2. **部门存在性保证**:
- 为了确保每个雇员只能属于在 `department` 表中已经存在的部门,需要在 `employee` 表的 `deptid` 列上创建一个外键约束。外键约束会引用 `department` 表中的 `departid` 列,确保 `employee` 表中的 `deptid` 值只能是 `department` 表中已经存在的 `departid` 值。

### 选项分析:
- **A: 把 employeeid 和 deptid 设为联合主键**
- 这种方法可以保证 `employee` 表中的每一行是唯一的组合,但不能单独保证 `employeeid` 的唯一性。
- 这也不能确保 `deptid` 必须存在于 `department` 表中。

- **B: 把 employeeid 设为主键,同时在 deptid 列上创建一个外键约束**
- 这种方法既能保证 `employeeid` 的唯一性,又能确保 `deptid` 必须存在于 `department` 表中,是最有效的做法。

- **C: 把 employeeid 设为主键,同时在 deptid 列上创建一个唯一约束**
- 这种方法可以保证 `employeeid` 的唯一性,但 `deptid` 的唯一约束会导致每个部门只能有一个雇员,这是不合理的。
- 不能确保 `deptid` 必须存在于 `department` 表中。

- **D: 在 deptid 列上创建一个唯一约束,同时在 deptid 列上创建一个外键约束**
- 这种方法会导致每个部门只能有一个雇员,这是不合理的。
- 不能保证 `employeeid` 的唯一性。

因此,正确答案是 **B**。