Структура базы данных для сайта объявлений

Я разрабатываю сайт объявлений, похожий на Quickr.com.

Основная проблема заключается в том, что для каждой категории требуется свой набор свойств. Например, для мобильного телефона атрибутами могут быть производитель, операционная система, сенсорный экран, включен ли 3G и т. Д. В то время как для квартиры атрибутами являются количество спален, меблирована, какой этаж, общая площадь и т.д. Атрибуты и количество атрибутов различаются для каждой категории, я храню атрибуты и их значения в отдельных таблицах.

Моя текущая структура базы данных -

Таблица classes_ads

В этой таблице хранятся все объявления. Одна запись на объявление.

ad_id
ad_title
ad_desc
ad_created_on
cat_id

Пример данных

-----------------------------------------------------------------------------------------------
|ad_id | ad_title    | ad_desc                                       | ad_created_on | cat_id |
-----------------------------------------------------------------------------------------------
|1     | Nokia Phone | Nokia n97 phone for sale. Excellent condition | <timestamp>   | 2      |
-----------------------------------------------------------------------------------------------

Таблица closeds_cat

В этой таблице хранятся все доступные категории.cat_id в таблице closeds_ads относится к cat_id в этой таблице.

cat_id
категория
parent_cid

Пример данных

-------------------------------------------
|cat_id| category            | parent_cid |
-------------------------------------------
|1     | Electronics         | NULL       |
|2     | Mobile Phone        | 1          |
|3     | Apartments          | NULL       |
|4     | Apartments - Sale   | 3          |
-------------------------------------------

Таблица classes_attribute

Эта таблица содержит все доступные атрибуты для конкретной категории. Относится к таблице closeds_cat.

attr_id
cat_id
input_type
attr_label
attr_name

Пример данных

-----------------------------------------------------------
|attr_id | cat_id | attr_label       | attr_name          |
-----------------------------------------------------------
|1       | 2      | Operating System | Operating_System   |
|2       | 2      | Is Touch Screen  | Touch_Screen       |
|3       | 2      | Manufacturer     | Manufacturer       |
|4       | 3      | Bedrooms         | Bedrooms           |
|5       | 3      | Total Area       | Area               |
|6       | 3      | Posted By        | Posted_By          |
-----------------------------------------------------------

Таблица classs_attr_value

В этой таблице хранится значение атрибута для каждого объявления в таблице closeds_ads.

attr_val_id attr_id ad_id attr_val

Пример данных

---------------------------------------------
|attr_val_id | attr_id | ad_id | attr_val   |
---------------------------------------------
|1           | 1       | 1     | Symbian OS |
|2           | 2       | 1     | 1          |
|3           | 3       | 1     | Nokia      |
---------------------------------------------

========

  • Подходит ли этот дизайн?
  • Можно ли проиндексировать эти данные с помощью solr?
  • Как я могу выполнить фасетный поиск по этому data?
  • Поддерживает ли MySQL сворачивание полей как solr?
5
задан Joyce Babu 29 August 2011 в 11:00
поделиться