私は、3 つの (主な) カテゴリの広告を掲載する、ペットに関する広告 Web サイトを設計しています。
A- Sale
B- Breeding
C- Jobs
私が直面している問題は、3 つの広告カテゴリすべてにいくつかの共通点がありますが、いくつかの相違点もあります。
たとえば、カテゴリ A、B、C には次のような共通点があります。
category_id
ad_id
user_id
location
ただし、カテゴリ B の広告は「探している/販売中」に分類できませんが、B & C は分類できます。さらに、各カテゴリには独自のサブカテゴリがあります。たとえば、カテゴリ A には採用サブカテゴリがあり、販売サブカテゴリとカテゴリ C にはジョブ サブカテゴリとサービス サブカテゴリがあります。
また、カテゴリ C のみの給与などの珍しい属性もいくつかあります。
エンティティ属性値モデルとして取り組み始めましたが、いくつかの懸念があります。
これはパフォーマンスに影響しますか? ユーザーは、いくつかの固有の属性に基づいて検索できる必要があるためです。では、1 つの巨大なテーブルに対してクエリを実行しても、パフォーマンスに影響はありませんか?
私の属性の 1 つは "Animal" (A & B に固有) です。最初は、Animal テーブルと Breed テーブルが必要でした (分類 DB モデルの独自のテーブルに Location があるのと同様です)。しかし、エンティティ属性モデルでこれを行う方法を想像できません。
これが私が思いついたデータベース設計です: http://i.imgur.com/jyV6Cjc.png
[アップデート]
クラス テーブルの継承を調べたところ、EAV モデルよりも適しているように思えたので、EER を次のように変更しました: http://i.imgur.com/JWPjt23.png
求人広告とセール広告は「探している/提供している」として分類できますが、おそらくそれらの名前だけで、属性に大きな違いはありません (たとえば、価格と希望価格)。ここに別のレベルの継承を追加する必要があると思いますか、それとも面倒でしょうか?
販売広告には、販売用のペット、養子縁組用のペット、養子縁組のリクエスト、ペットの購入のリクエストがあります。これらを 2 つの表に分けるべきだと思いますか。採用と販売?属性に大きな違いはなく、おそらく属性が 1 つ異なるだけです。