これは設計上の問題です。
小さなアプリ用のデータ モデルを考え出す必要があり、最適なアプローチを探しています。
私がモデル化しようとしているビジネスの簡略化されたバージョンには、次のエンティティがあります。
- 割り当て: これらはプロジェクトのようなもので、開始日、終了日、および関連する人々のチームがあります。
- Workers : これらは割り当てを実行する人々です。特定の作業者は、一度に 1 つの割り当てにのみ関連付けることができます。多くの作業者を同時に同じ割り当てに関連付けることができます (大規模なプロジェクトの場合)。
- マネージャー: この業界には、基本的に少数のマネージャーがいて、従業員を新しい割り当てに割り当てます。
次に、マネージャーが誰が何をするか (つまり、どのワーカーがどの割り当てに割り当てられるか) を管理するために使用するWeb アプリがあります。労働者は、このアプリを使用して、割り当てに関連する費用を登録します。
そのため、Web アプリのコンテキストにはUserエンティティもあり、ワーカーとマネージャーの両方にユーザーがアプリにアクセスする必要があります。
私の質問は、この (単純な) システムをサポートするのに最適なデータ モデルは何ですか?
私はこのモデルを描いています:
- USER (ID、ユーザー名、パスワード、...)
- PERSON (ユーザー + 名前、電子メールなどから継承...)
- MANAGER (person から継承 + manager のみの追加フィールド)
- WORKER (person から継承 + worker のみの追加フィールド)
このモデルについて私が気に入らないのは、すべての人にユーザーが必要だということです。今日は労働者と管理者にそれが起こるかもしれませんが、このシステムに「顧客」を追加します。これには、サイトにアクセスしない人も関連付けられるため、ユーザーは存在しません.
より良いアプローチはありますか?おそらく継承のない標準的なアプローチはありますか?
アップデート
上記で提案したモデルに基づいて、この特定のビジネスに関する追加情報を追加すると、(基本) モデルは次のようになります。
PERSON
id
email
passmd5
role_id
firstname
lastname
...
ROLE
id
description
PERMISSION
id
description
ROLE_PERMISSION
role_id
permission_id
COMPANY
id
name
contact_name
contact_email
ASSIGNMENT
id
customer_company_id
start_date
end_date
location_lat
location_lng
location_description
MACHINE
id
brand
model
description
PERSON_MACHINE_EXPERTISE
person_id
machine_id
図全体を理解するのに役立つ、ビジネスに関する追加情報を次に示します。
- このビジネスは、特定の顧客にサービスを提供するために、ある種の機械の専門家である人々を世界中のさまざまな場所に派遣することで構成されています。
- 「専門家」という人がいます。
- 「マネージャー」である人々がいます (おそらく 1 人だけですが、もっといる可能性があります)。
- 割り当てがあります(基本的に、専門家が仕事を完了する必要がある仕事、時には複数の専門家が必要です)。
- 人ではなく基本的に企業である顧客がいます。
- 機械があります。
- どの人がどのマシンの専門家であるかについての情報があります。
理にかなっていますか?これを改善できるアイデアはありますか?