プロジェクトの割り当てを管理するためのデータベースの構築に取り組んでいますが、特に苦労しているのは、担当するプロジェクトごとに従業員に役職を割り当てることです。
要件
- 従業員は一度に複数のプロジェクトに参加できます
- プロジェクトには複数の従業員がいます
- プロジェクトには複数の役職があります
- 従業員は、プロジェクトの役職の 1 つだけでプロジェクトに取り組んでいます
- 複数の従業員がプロジェクトで同じ役職の下で働くことができます
テーブルを使用してこれを表す方法がわかりません。私が考え出すすべてのレイアウトは、従業員が別のプロジェクトの役職の下でプロジェクトに取り組むことを可能にするか、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 で複合キーを実行する方法がわかりません)。