我应该在该表的哪一列上创建FK约束

时间:2018-10-24 04:54:08

标签: sql sql-server tsql

我一直在为SQL Server认证70-461做准备。我不明白为什么以下问题的正确答案是C。 题: enter image description here

  

除非有上述说明,否则Employee表中没有列引用其他   表。有关员工的机密信息存储在   名为EmployeeData的单独表。内有一条记录   Employee表中每个记录的EmployeeData。您需要分配   适当的约束和表属性以确保数据   完整性和可见性。您应该在Employee表的哪一列上创建一个外键约束,以引用数据库中的其他表?

  • A。 DateHired
  • B。 DepartmentID
  • C。员工编号
  • D。 EmployeeNum
  • E。名

3 个答案:

答案 0 :(得分:0)

在关系数据库的上下文中,外键是一个表中的一个字段(或字段的集合),用于唯一标识另一张表(有时甚至是同一张表)的一行。

用简单的话来说,外键是在第二个表中定义的,但它引用第一个表中的主键或唯一键。

例如,此名为“雇员”的表具有一个名为“ employee_id”的主键。另一个名为Employee Details的表具有一个外键,该外键引用employee_id以便唯一标识两个表之间的关系。

只有一个表的主键可以是另一个表中的外键。

答案 1 :(得分:0)

应该为C,因为:

  • EmployeeID对于表中的每个员工记录都是唯一的。

  • 数据库中的其他表使用
  • 将数据与员工相关联。这意味着EmpoyeeID值可用于创建引用Employee表的外键。

  • EmployeeNum也是唯一的,但是它是一个字母数字字段,它可能比EmployeeID占用更多的空间。
  • EmployeeNum仅存在于Employee表中,这就是为什么它不是PK的理想选择。

答案 2 :(得分:0)

唯一可能的答案是C 因为

  1. EmployeeID,它本身是表的主键。正如上面提到的两件事:i)唯一地定义每条记录; ii)在整个数据库的所有其他表中,该列都是引用。因此,这是自我表的PK。
  2. EmployeeNum是同一表的信息列。指的是EmployeeId列(自身表)。
  3. ReportsToId是仅引用EmployeeId(自连接键的种类)的列
  4. DepartmentId,是“唯一”列,其中包含其他一些表的信息。还提到了它引用其他表

因此,唯一可能的答案是“ C ”。

表定义必须是这样的:

enter image description here