要想保证 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**。