2016-09-30 35 views
2

私は以下のテーブルを持っています:Department,Section,Employee,ManagerおよびPositionです。次のようにテーブル間の関係は以下のとおりです。2つの結合テーブル間の関係

  • 各部門は、多くのセクション
  • が含まれてい
  • 各部門には、多くのポジションが含まれており、それぞれの位置が異なる部門
  • 各部門のセクションには、マネージャを持っていると共有することがあります
  • 各例えば、泌尿器科の議長のは、マネージャーとしての役職であり、従業員は泌尿器科のコンサルタントです。従業員として、彼は2つのポジションを持っています。

enter image description here

あなたは

  • DepartmentSections上の画像から見ることができるように部門とセクション間の結合表である
  • DepartmentPositionsは、部門や体位
間の結合テーブルです

私の問題は今、どのように設定する必要がありますか再マネージャー?マネージャーとの間、マネージャーとDepartmentPositionsの間に2つの関係を作成することを考えていますが、ここでの問題はテーブルManagerに2つのDepartmentIdフィールドを取得することです。

私の分析に間違いはありますか?どのようにテーブルマネージャーで2つのDepartmentIdを避けるためにこのモデルを構築するのですか?

+0

'DepartmentPositions'と' DepartmentSections'にプライマリキーを追加し、それらを 'Managers';で使用するだけです)。 –

+0

複数の代わりにエンティティに単一の名前を使用することに注意してください( 'マネージャーではなく'マネージャー) - 'SectionS'の' DepartmentId'を使用する理由は何もありません - HTH;) –

+0

@shA。私は次の命名規則を使用しています。テーブルマネージャは異なる詳細に属するレコードのセットです。 – Set

答えて

2

あなたの投稿にいくつかの考えがあります。それは答え(コメントするには時間がかかります)ではありませんが、ちょっと助けるかもしれません。

は、各部門は多くのセクション私はこの文は、1対多および多対多のない関係を説明するので、あなたがルックアップテーブルDepartmentSectionsを必要としないことを推測する。このことから

が含まれています。 SectionsテーブルにDepartmentIdを追加することができます。

あなたはManagerIdSectionsにテーブルを追加することができますように、各部門のセクションには、マネージャ

を持っています。

ポジションとマネージャーの場合、正しく理解していれば、ManagerIdDepartmentPositionsに追加します。

+0

異なる部門とセクションを共有する意味はないので、SectionIDテーブル内にDepartmentIDを置くことに関して同意しますが、セクション内のDepartmentIDがDepartmentPosition内のDepartmentIDと同じであることをデータベース構造から確認しますか?部署と位置とセクションの3つの関係を作ることは、インストラクターのための夜明けです(そのような関係を使用することはできません)。 – Set

+0

何もする必要はありません。 'Section'テーブルの' DepartmentId'は 'Department'テーブルの外部キーです。また、 'DepartmentPosition'の' DepartmentId'は 'Department'テーブルの外部キーです。 – shadow

関連する問題