0

Я проектирование объявления сайта о домашних животных, которые будут иметь 3 (основные) категорий объявлений:Иерархическая модель базы данных

A- Sale 
B- Breeding 
C- Jobs 

Проблемы я столкнулся в том, что все 3 категорий объявлений имеют некоторые общие вещи , но они также имеют некоторые отличия.

Например, категории A, B и C все имеют следующие общие черты:

category_id 
ad_id 
user_id 
location 

Однако, категория B объявления не могут быть классифицированы как "Looking For/Продажа", в то время как B & C может. Кроме того, каждая категория будет иметь свои собственные подкатегории. Например, категория А будет иметь подкатегорию принятия, а в категории подкатегории & для продажи будет включена подкатегория «Задания» и подкатегория «Службы».

У них также будут некоторые необычные атрибуты, такие как заработная плата только в категории C.

Я начал работать над ней в качестве модели сущность-атрибут-значение, но у меня есть несколько проблем:

  1. ли это будет влиять на производительность? Потому что пользователи должны иметь возможность поиска на основе некоторых уникальных атрибутов. Таким образом, не будет ли запрос через одну огромную таблицу влиять на производительность?

  2. Один из моих атрибутов - «Animal» (уникальный для A & B), изначально я хотел иметь таблицу Animal и таблицу Breed (аналогично тому, как Location находится в собственной таблице для объявлений моделей DB) , Но я не могу представить, как я могу это сделать с помощью модели-сущности-атрибута.

Вот дизайн базы данных я придумал: http://i.imgur.com/jyV6Cjc.png

[Update]

После прочтения в наследство таблицы класса, это казалось более подходящим, чем модель EAV , поэтому я изменил свой EER к этому: http://i.imgur.com/JWPjt23.png

  1. Работа объявление и объявление о продаже может быть классифицирован s «Looking For/Offering», но не было бы много различий в атрибутах, возможно, только их имена (например, цена против предпочтительной цены). Как вы думаете, нужно было бы добавить еще один уровень наследования здесь, или это будет хлопот?

  2. Продажа Объявление может быть домашним животным на продажу, домашнее животное для принятия, с просьбой усыновления, с просьбой о покупке домашнего животного. Как вы думаете, я должен разделить их на два стола. Усыновление и продажа? Не было бы большой разницы в атрибутах, возможно, только в одном атрибуте.

+0

Вы не указываете достаточно информации для аналитика данных, чтобы принять дизайнерское решение. У вас могут быть поля с нулевым значением в вашей таблице объявлений, если в течение этого времени поле не будет иметь значение null. Вы можете также иметь [сущность - атрибут - значение модели] (http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) для уникальных полей. –

+0

Спасибо, Гилберт, я добавил больше деталей, чтобы уточнить и задать свои вопросы. Можете ли вы взглянуть на редактирование и помочь мне? – Youmna

ответ

1

Ваш вопрос звучит как случай класса/подкласса. При моделировании объектов в проекте используется основной механизм наследования и шаблон проектирования подклассов, которые расширяют и пересматривают суперклассы.

Реляционное моделирование отличается от моделирования объектов, а дизайн стола отличается от дизайна объекта. Есть несколько методов, которые помогают преодолеть разрыв.В этой области есть две метки: и . Я собираюсь позволить себе добавить эти два тега к вашему вопросу. Выполните их, если вам не нравятся.

+0

Спасибо Вальтеру! Ваш ответ указал мне в правильном направлении. Я прочитал наследование таблицы классов и внес поправки в свою диаграмму. Не могли бы вы взглянуть на него и рассказать мне, что вы думаете? благодаря – Youmna