3

プロジェクトの割り当てを管理するためのデータベースの構築に取り組んでいますが、特に苦労しているのは、担当するプロジェクトごとに従業員に役職を割り当てることです。

要件

  1. 従業員は一度に複数のプロジェクトに参加できます
  2. プロジェクトには複数の従業員がいます
  3. プロジェクトには複数の役職があります
  4. 従業員は、プロジェクトの役職の 1 つだけでプロジェクトに取り組んでいます
  5. 複数の従業員がプロジェクトで同じ役職の下で働くことができます

テーブルを使用してこれを表す方法がわかりません。私が考え出すすべてのレイアウトは、従業員が別のプロジェクトの役職の下でプロジェクトに取り組むことを可能にするか、2 つの異なる役職の下で同じプロジェクトに取り組むことができるようにします。

例図

質問の最後の画像リンク

基本的に、私は3つのテーブルを持っています:

テーブル

  • プロジェクト
    • プロジェクト名 (一意)
    • プロジェクト ID
  • 従業員
    • 従業員名 (固有)
    • 従業員ID
  • 役職
    • 題名
    • プロジェクト ID (Title-ProjectID 固有)
    • タイトルID

そして、割り当てと呼ばれる相互参照テーブル。これまでにアサインメントについて思いついた 2 つの方法は次のとおりです。

例 1

  • 課題
    • 従業員ID
    • プロジェクト ID (EmployeeID-ProjectID 固有)
    • タイトルID(固有)
    • 割り当てID

この方法では、従業員はプロジェクトごとに 1 つの役職に制限されますが、割り当てのプロジェクトに属さない役職を使用することができます。

例 2

  • 課題
    • 従業員ID
    • 役職 ID (EmployeeID-TitleID 固有)
    • 割り当てID

この方法では、役職を通じて従業員をプロジェクトに割り当てるため、無効な役職で誰かをプロジェクトに割り当てることはできません。ただし、これにより、従業員を複数の役職で同じプロジェクトに割り当てることができます。

繰り返しますが、図はここから入手できます: http://i.imgur.com/IbR0P.png

これをきれいに行う方法があるに違いないことは知っていますが、データベース設計について実際に正式なトレーニングを受けていないため、多対多の関係を作成する方法以外は検索しても何も見つかりません。まさに私が助けを必要としているものです。

ありがとう!

  • 編集1
    • 太字の主キー フィールド (ダイアグラム イメージでは下線が引かれていますが、最後のフィールドであるため見分けがつきません)
    • 質問の割り当てテーブルに割り当て ID (主キー) を追加しました (設計に存在し、質問と図を作成するときに含めるのを忘れていました)
  • 編集2
    • 欠落している要件を追加 (5)
    • 例と要件のヘッダーを追加
  • 編集3
    • 私は今10人の担当者を持っているので、図を立てることができます!
  • 編集4
    • 一意のキーの識別子を追加しました (個々の一意のキーは図で識別されますが、DIA で複合キーを実行する方法がわかりません)。
4

2 に答える 2

2

ID フィールドをテーブルに追加しJob Titlesます - それを呼び出しましょうJobTitleID

Assignmentsこれで、テーブルにはEmployee IDとがありますJobTitleID

これはもちろん、従業員のプロジェクトを見つけるには、AssignmentsテーブルJob Titlesテーブルを介して結合する必要があることを意味します

編集

コメントで議論した後、上記を無視してください。履歴としてのみ残しました。

今ここに新しいバージョンがあります: あなたのAssignmentsテーブルが必要です (あなたがすでに考えたように)

  • 従業員ID
  • プロジェクト ID
  • タイトルID
  • 割り当てID

ただし、これには、1 人の従業員が異なる役職で同じプロジェクトに参加UNIQUE INDEX(EmployeeID, ProjectID)することが不可能になるということも必要です。

同じ役職で複数の従業員を使用することは引き続き許可されます。また、1 人の従業員が異なるプロジェクトで複数の役職を使用することもできます。

于 2012-06-27T14:35:00.640 に答える
0

あなたが言及した最初の方法でそれを行います。個人を 1 つの役職に限定するものではありません。同じ従業員 ID とプロジェクト ID で別のレコードを作成できますが、役職 ID は異なります。新しい割り当て ID を主キーとして使用するだけです。

役職テーブルからプロジェクト ID を削除することもできます。

于 2012-06-27T14:35:29.603 に答える