Иерархическая модель базы данных
Я разрабатываю сайт объявлений о домашних животных, который будет иметь 3 (основные) категории объявлений:
A- Sale
B- Breeding
C- Jobs
Проблема, с которой я сталкиваюсь, заключается в том, что все три категории объявлений имеют некоторые общие черты, но они также имеют некоторые различия.
Например, категории A, B и C имеют следующие общие черты:
category_id
ad_id
user_id
location
Однако, объявления категории B не могут быть классифицированы как «Поиск / Продажа», тогда как B & C может. Кроме того, у каждой категории будут свои подкатегории. Например, категория A будет иметь подкатегорию для принятия, а подкатегория продажи, а категория C - подкатегорию Jobs и подкатегорию Services.
У них также будут некоторые необычные атрибуты, такие как зарплата только в категории C.
Я начал работать над ней как с моделью сущности-атрибута-значения, но у меня есть несколько проблем:
Это повлияет на производительность? Потому что пользователи должны иметь возможность поиска на основе некоторых уникальных атрибутов. Так не повлияют ли запросы через одну огромную таблицу на производительность?
Один из моих атрибутов - «Животное» (уникальное для A & B), изначально я хотел иметь таблицу «Животное» и таблицу «Порода» (аналогично тому, как Location находится в своей собственной таблице для моделей БД объявлений). Но я не могу себе представить, как я могу сделать это с помощью сущности-атрибута-модели.
Вот дизайн базы данных, который я придумал:http: //i.imgur.com/jyV6Cjc.pn
[Обновить
После прочтения в наследовании таблиц классов это выглядело лучше, чем модель EAV, поэтому я изменил свой EER на следующее:http: //i.imgur.com/JWPjt23.pn
Job Ads and Sale Объявления могут быть классифицированы как «Поиск / Предложение», но не будет большого количества различий в атрибутах, вероятно, только в их именах (например, «Цена против предпочтительной цены»). Как вы думаете, было бы необходимо добавить еще один уровень наследования здесь, или это будет хлопо
A Sale Ad может быть домашним животным на продажу, домашним животным для усыновления, с просьбой об усыновлении, с просьбой купить домашнее животное. Как вы думаете, я должен разделить их на две таблицы. Принятие и продажа? Там не будет большой разницы в атрибутах, вероятно, только один другой атрибут.