0

Asp.Net MVCにタイムシートアプリケーションがありますが、問題は一般的なデータベース設計です。

顧客、プロジェクト、タスク、従業員、TimeSegmentなどの関連するテーブルがいくつかあります。ここで、タスクを「リソース」として従業員に関連付けることができるようにしたいと思います。また、リソースごとに、特定のタスクのために従業員に割り当てられた作業の割合に関する情報を取得できるようにしたいと思います。でも頭を包むことはできません。私が見る限り、それは単にタスクと従業員の間の多対多の関係ではありえません。それでは、パーセンテージフィールドをどこに置くのでしょうか?従業員に貼った場合、特定のタスクとどのように関連しますか?

単純な問題のように思えますが、理解できません。データベースのスキルはかなり初歩的なものです。だからどんな助けでも大歓迎です!

編集:わかりました。あなたの何人かは、Employee_IdとTask_IdとWorkPercentageを使用して「リソース」用の個別のテーブルを作成する際のいくつかのバリエーションに答えました。しかし、タスクを追加するたびに、Employee_IdとTask_Idを手動で更新する必要がありますか?これらの回答は、従業員とタスクの間に多対多の関係を追加してから、ジャンクションテーブル(EmployeeTask)にWorkPercentageのフィールドを追加する必要があるというヒントとして最初に理解したためです。私はそれを試しましたが、従業員を追加しようとするとすぐに問題が発生し、EmployeeTasksのリストが要求され、null不可能なフィールドにnull値がないという不満がありました。しかし、それは私がそれを行うべき方法ではありませんでしたか?むしろ、各フィールド値で手動で更新された個別のテーブル...?

可能であれば、提案したソリューションの処理方法を正確に説明してください(つまり、関係の観点から)。ありがとう!

4

3 に答える 3

0

たぶん、id_employee、id_task、work_percentageの列を持つ「Resources」という新しいテーブルですか?

モデル化しようとしているものごとに複数のテーブルを使用できます。

于 2011-02-08T11:08:43.563 に答える
0

「このタスクのどれだけが従業員Aに割り当てられているかを追跡する」という意味ですか?

その場合は、task_id、employee_id、および作業の割合を保持する新しいテーブルを作成できます。

これを処理する最もクリーンな方法は次のとおりです。新しいタスクが作成されるたびに、100%が誰にも割り当てられていないレコードを追加します(たとえば、従業員IDが0)。次に、誰かが割り当てられるたびに、その従業員とその従業員に与えられたばかりの%の新しいレコードを作成し、元のレコードを更新してその金額を削除します。

そうすれば、リソース不足のタスクを簡単に追跡することもできます。

于 2011-02-08T11:15:43.300 に答える
0

各プロジェクトのリソースである従業員を記録するために、ProjectResourcesなどのテーブルが必要になる場合があります。次に、ProjectTasksのテーブルで、プロジェクトキー、タスクキー、リソースキー、およびその他の必要な詳細を記録します。

個人的には、パーセンテージではなく時間でタスクを見積もり、追跡する方が便利だと思います。最後に、「タスク'n'が終了した」だけでなく、「タスク'n'が終了して3時間かかった」ことを知りたいです。

于 2011-02-08T11:37:23.897 に答える