2011-06-15 10 views
0

テーブル:
学生
教授
エントリ(エントリのデータベースには、物理​​テーブルintryはまだありません、この表は、フロントエンドであり、もしそうなら、それはおそらく、複数のヘルパーのテーブルから構成されており。我々は彼らを必要とするだけ)データベースモデリングの質問

Preambulaを有効ERDを作成する必要があります。 一人の学生は、多くの教授への関連付けを持つことができます ある教授は、多くの学生に関連を持つことができ 1つのエントリが0,1以上の学生や教授を持つことができますその中に。

enter image description here

どれ教授: 教授は 学生がどんな教授 との関連付け、それがよりこの(フロントエンド・エントリ・テーブル)のようにする必要がありますが必要とされていない1人の以上の生徒に関連付けする必要があります(この例では、WandyはAlexに関連付けられています) このテーブルでは、学生(ただし可能な場合)に関連する教授がいる必要はありません 1行(例:Linda Kelly(教授)、Victor(教授) 相互に関連付けることはできません。 しかし、リンダがデイビッドと関係していれば、それは絶対にうまくいきます。

問題は、1つの列がどのように異なるテーブルのIDを持つことができるのかよく分かりません(そして、それらは複数です!)そして、有効なerdを構築する方法をあまり理解していません。 私は必要なその他の質問にお答えします。どうもありがとう!私の迅速な理解あたりとして

答えて

1

単に学生と教授の間の関連付けを望むなら、ERDで多対多の関係を作るだけです。論理(リレーショナル)スキーマでは、外部キーを持つ中間テーブルを学生テーブルと教授テーブルに作成します。 しかし、あなたの例では、あなたの "PeopleEntries"のためのDBを設計する必要があるように見えますが、これは簡単ではありません。

  • 学生(ID、名前)
  • 教授(ID、 名)
  • PeopleEntries(ID、LoveCats、 LoveDogs、LoveAnts)

:ERDには、次のエンティティを持っているようです関係(人々が複数回エントリーに出演することはできないと考えている):

  • 学生多く - 1 PeopleEntries
  • 教授多く - 1 PeopleEntries
  • 学生多くの - 多くの教授

リレーショナルスキーマが(ERDとの関係に応じて外部キー)のテーブルが含まれます

  • 学生(ID、名前、PeopleEntryID FK
  • 人の
  • 教授(ID、名前、PeopleEntryID FK
  • PeopleEntries(ID、LoveCats、LoveDogs、 LoveAnts)
  • StudentProfessor(StudentID FK、 ProfessorID FK

私は制約を実装する方法、概念レベル(ERダイアグラム)で同じエントリからの人々の間の関連付けを禁止する方法を知らない。物理レベルでは、ロジックをトリガーに実装するか、またはプロシージャーを更新してこれをチェックすることができます。

0

次の列で PersonNameの 指定 .....

をテーブルを作成します。もう一つのテーブルを作成します

PersonNameの LinksTo

で第2のテーブルは、各人物エントリが関係

に基づいて複数のレコードを有する
0

あなたはジャンクションテーブルをしたい:上記の表で

ID StudentID ProfessorID 
0 23   34 
1 22   34 
2 12   33 
3 12   34 

、1人の教授は一人の学生が2人の教授があり、3人の学生を持っています。

StudentIDとProfessorIDは、重複する関係を避けるために、一意のインデックスである必要があります。

+0

学生が教授を持つ必要はありません。このケースでは教授が必要になります。だから私たちが必要としているものはOne ORですが、他の人(教授)は学生 – user194076