0

これは私が遭遇したインタビューの質問です

与えられた 3 つのテーブル

  • GRADUATE - 大学院ロール
  • HONORS - 名誉科目
  • GRADHONS - 大学院を特定の優等科目にリンクするためのブリッジ テーブル

質問 - データモデルで GRADHONS をどのように定義して、卒業生が優等科目を 1 つしか持てないという制約をデータモデルに適用する必要がありますか?

インタビュアーは私の提案にそれほど夢中になっていませんでした

  • テーブルGRADHONSのPKとしてGraduate Keyのみを使用します
  • データモデルを変更し、名誉を卒業テーブルの一部として参照します。

私の質問は元のインタビューの質問と同じです - データモデルによって強制されるように、ブリッジ テーブルで一意の 1-1 関係をどのように定義しますか?

4

2 に答える 2

0

最も簡単な方法は、GraduateFKとHonorsFKで構成される結合テーブルのGRADHONS(GraduateIDフィールドとHonoursIDフィールドの両方で構成される主キー)に複合主キーを作成することです。

LINQ to SQLまたはRoRのActiveRecordのような他のORMソリューションを使用する場合は、これらのタイプのPKeyを嫌う傾向があることに注意してください。その場合は、代わりに、結合テーブルGRADHONSでPK自動インクリメントを作成してから、2つのFKeyフィールドで一意のインデックスを作成するのが最適です。

于 2011-03-18T20:25:06.213 に答える
0

どちらの提案も合理的に聞こえます。GRADHONS に GRADUATE を参照する別の列が必要な場合は、GRADHONS に GRADUATE への外部キー参照を持たせ、その列を一意にします。したがって、どの GRADUATE に対しても、GRADHONS には 1 つの行しか存在できません。

于 2011-03-18T19:48:21.067 に答える