要想保证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 是最符合题目要求的。