0

私は、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 つの巨大なテーブルに対してクエリを実行しても、パフォーマンスに影響はありませんか?

  2. 私の属性の 1 つは "Animal" (A & B に固有) です。最初は、Animal テーブルと Breed テーブルが必要でした (分類 DB モデルの独自のテーブルに Location があるのと同様です)。しかし、エンティティ属性モデルでこれを行う方法を想像できません。

これが私が思いついたデータベース設計です: http://i.imgur.com/jyV6Cjc.png

[アップデート]

クラス テーブルの継承を調べたところ、EAV モデルよりも適しているように思えたので、EER を次のように変更しました: http://i.imgur.com/JWPjt23.png

  1. 求人広告とセール広告は「探している/提供している」として分類できますが、おそらくそれらの名前だけで、属性に大きな違いはありません (たとえば、価格と希望価格)。ここに別のレベルの継承を追加する必要があると思いますか、それとも面倒でしょうか?

  2. 販売広告には、販売用のペット、養子縁組用のペット、養子縁組のリクエスト、ペットの購入のリクエストがあります。これらを 2 つの表に分けるべきだと思いますか。採用と販売?属性に大きな違いはなく、おそらく属性が 1 つ異なるだけです。

4

1 に答える 1

1

あなたの質問は、クラス/サブクラスの場合のように聞こえます。オブジェクト モデリングでは、継承の基本的なメカニズムと、スーパークラスを拡張および修正するサブクラスの設計パターンを設計に使用します。

リレーショナル モデリングはオブジェクト モデリングとは異なり、テーブル設計はオブジェクト設計とは異なります。ギャップを埋めるのに役立つテクニックがいくつかあります。この領域には、という関連する 2 つのタグがあります。この 2 つのタグを質問に自由に追加しようとしています。それらが気に入らない場合は、それらを取り消してください。

于 2014-11-17T12:29:06.733 に答える