タイムシート、請求可能な時間、プロジェクト、ユーザーをモデル化しようとしています
これらをデータベースで表現する最良の方法は何ですか
質問についてさらに詳しく説明します。私の最大の苦境は、日付、時間、プロジェクトを一緒に保つ方法です
考えられる解決策の 1 つ
ユーザー (PK ID、名前)
プロジェクト (PK ID、名前、FK user_id)
BillableHour (PK id、FK project_id、時間、日付)
ありがとう
必要なレポートから始めて、逆方向に作業します。
最小入力単位はアクティビティ、期間ですが、その最小値を使用すると、sri.attends.scrum.for.parisian.branch.of.client50.via.scype.from.home.to.discuss などのアクティビティが発生します。 .installation.routine.of.zoom22、レポート コードには多くの switch ステートメントが含まれます。
おそらく、名前、アクティビティの説明、および特定の期間の合計時間を含むレポートが少なくとも 1 つあります。それが唯一のレポートである場合は、ワーカー (文字列)、タスク (文字列)、開始 (時間)、期間 (整数) の 4 つのフィールド リストとして実装できます。特定のプロジェクトにこれまでに割り当てられたすべての活動を求めるレポート、または活動タイプ X に費やされたすべての時間に関するレポート、または特定のクライアントに活動を割り当てるレポートがある場合、設計にはより多くのフィールドが役立ちます。
おそらく、ホーム オフィスでの installation.server.updates と、warzone でのアクティブな敵の銃撃下での installation.server.updates を区別するレポートをお持ちでしょう。時間記録画面に「while.a.target」チェックボックスがあれば、ユーザーの時間を大幅に節約できます。
非常に単純な時間管理アプリでどのようにそれを行ったかを非常に高いレベルから伝えることができます。ただし、これは必ずしも最善の方法ではありません。
現時点で共有できる便利な ER ダイアグラムはありませんが、とにかく、これは一連のテーブルの非常に基本的な出発点にすぎません。
ユーザー ID PK
UserRole UserID FK RoleID FK
ロール ID PK 名
UserProject ID PK UserID FK ProjectID FK HoursAvailable
顧客 ID PK 名
プロジェクト ID PK 顧客 ID FK
EntryType ID PK 名 (つまり、課金可能、課金不可など)
Entry ID PK UserID FK ProjectID FK EntryTypeID FK Hours Date TaskName (特に、タスクのバケットが必要な場合は、さらに正規化できます) 説明
私は続けることができますが、あなたはその考えを理解します。
以下は、私の古い会計システムで使用されていたいくつかのテーブルの簡単な (そして不完全な) 要約です。
正規形に慣れていない場合は、正規形について学ぶ価値があります。データベースに冗長なデータを保存する必要がなくなります (他の利点の中でも特に)。
http://databases.about.com/od/specificproducts/a/firstnormalform.htm