ユーザーは、フリーランサーと会社など、2 つのプロファイル タイプのいずれかを作成できます。このプロファイル タイプには、いくつかの一般的なフィールドといくつかの固有のフィールドがあります。会社には、従業員として多くのユーザーがいる場合があります。
より明確にするために: ユーザー HAS_ONE プロファイル (フリーランサーまたは会社); 会社 HAS_MANY ユーザー;
この状況に最適なデータベース設計について何か提案はありますか?
ユーザーは、フリーランサーと会社など、2 つのプロファイル タイプのいずれかを作成できます。このプロファイル タイプには、いくつかの一般的なフィールドといくつかの固有のフィールドがあります。会社には、従業員として多くのユーザーがいる場合があります。
より明確にするために: ユーザー HAS_ONE プロファイル (フリーランサーまたは会社); 会社 HAS_MANY ユーザー;
この状況に最適なデータベース設計について何か提案はありますか?
ProfileTypeID
プロファイル タイプ値への外部キーを持つ 1 つのデータベース テーブル。
この 1 つのフィールドは、どの追加属性がユーザーに関連付けられているかを判断するのに役立ちます。あとはシンプルなUIです。
それは継承です。このケースに直面した場合、3つの選択肢があります。
最初のオプションは、会社とフリーランサーtypeid
のどちらであるかを知るためのテーブルを備えた会社とフリーランサーのための1つの大きなテーブルですが、あなたの場合、多くのnulls
。
2番目のオプションは、会社とフリーランサー用の2つの別々のテーブルと、ユーザーテーブルの共通属性です。次に、ユーザーテーブルを追加typeId
して、会社かフリーランサーかを確認する必要があります。
3番目のオプションは、ユーザー、フリーランサー、および会社用に1つの大きなテーブルを作成することですが、これはnullが最も多いオプションです。
いくつかの共通フィールドといくつかの一意のフィールドがあるため、あなたの場合の最良のオプションは2番目のオプションです。