Я разрабатываю сайт объявлений, похожий на Quickr.com.
Основная проблема заключается в том, что для каждой категории требуется свой набор свойств. Например, для мобильного телефона атрибутами могут быть производитель, операционная система, сенсорный экран, включен ли 3G и т. Д. В то время как для квартиры атрибутами являются количество спален, меблирована, какой этаж, общая площадь и т.д. Атрибуты и количество атрибутов различаются для каждой категории, я храню атрибуты и их значения в отдельных таблицах.
Моя текущая структура базы данных -
В этой таблице хранятся все объявления. Одна запись на объявление.
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 |
-----------------------------------------------------------------------------------------------
В этой таблице хранятся все доступные категории.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 |
-------------------------------------------
Эта таблица содержит все доступные атрибуты для конкретной категории. Относится к таблице 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 |
-----------------------------------------------------------
В этой таблице хранится значение атрибута для каждого объявления в таблице 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 |
---------------------------------------------
========