0

这是我遇到的一个面试问题

给定三个表

  • GRADUATE - 毕业卷
  • 荣誉 - 荣誉科目
  • GRADHONS - 将毕业生与特定荣誉学科联系起来的桥梁表

问题 - 应该如何在数据模型中定义 GRADHONS,以便数据模型强制执行毕业生可能只有一个荣誉学科的约束?

面试官对我的建议并不十分着迷

  • 在 GRADHONS 表中仅使用研究生密钥作为 PK
  • 更改数据模型并引用 Honors 作为毕业生表的一部分。

我的问题与最初的面试问题相同 - 您如何在桥接表中定义唯一 1-1 关系,以便由数据模型强制执行?

4

2 回答 2

0

你的两个建议听起来都很合理。如果您希望在 GRADHONS 中有一个单独的列来引用 GRADUATE,则使 GRADHONS 具有对 GRADUATE 的外键引用,并使该列唯一。因此,对于任何 GRADUATE,GRADHONS 中只能有一行。

于 2011-03-18T19:48:21.067 回答
0

最简单的方法是在包含研究生和荣誉 FK 的连接表中的 GRADHONS(由研究生 ID 和荣誉 ID 字段组成的主键)上创建复合主键。

如果您要使用 LINQ to SQL 或其他 ORM 解决方案,如 RoR 中的 ActiveRecord,请注意他们往往不喜欢这些类型的 PKey。在这种情况下,您最好在连接表 GRADHONS 上创建一个 PK 自动增量,然后在两个 FKey 字段上创建一个唯一索引。

于 2011-03-18T20:25:06.213 回答