@Rintiks

Как сделать разные характеристики для разных категорий?

Помогите пожалуйста, я новичок в этой сфере, можно сказать самоучка. Есть таблица базы данных:

--
-- Структура таблицы `category`
--

CREATE TABLE IF NOT EXISTS `category` (
  `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `cat_parent_id` int(10) unsigned NOT NULL DEFAULT '0',
  `cat_title` varchar(255) CHARACTER SET utf8 NOT NULL,
  `cat_meta_title` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT 'Meta-title',
  `cat_meta_keywords` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Мета-ключевые слова',
  `cat_meta_description` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Мета-описание',
  `cat_desctiption` text CHARACTER SET utf8 COMMENT 'Описание категории',
  `cat_ads_top` text CHARACTER SET utf8 COMMENT 'Реклама отображаемая вверху списка объявлений',
  `cat_ads_middle` text CHARACTER SET utf8 COMMENT 'Реклама отображаемая в центре списка объявлений',
  `cat_ads_bottom` text CHARACTER SET utf8 COMMENT 'Реклама отображаемая внизу списка объявлений',
  `cat_order` int(11) unsigned NOT NULL COMMENT 'Порядок вывода категорий',
  `cat_group` varchar(20) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`cat_id`),
  KEY `cat_parent_id` (`cat_parent_id`),
  KEY `cat_group` (`cat_group`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 COMMENT='Таблица Категорий чего либо' AUTO_INCREMENT=814 ;

--
-- Дамп данных таблицы `category`
--

INSERT INTO `category` (`cat_id`, `cat_parent_id`, `cat_title`, `cat_meta_title`, `cat_meta_keywords`, `cat_meta_description`, `cat_desctiption`, `cat_ads_top`, `cat_ads_middle`, `cat_ads_bottom`, `cat_order`, `cat_group`) VALUES
(789, 0, 'Автомобили', 'Автомобили', 'Автомобили', 'Автомобили', 'Автомобили', '', '', '', 0, 'board'),
(790, 0, 'Недвижимость', 'Недвижимость', 'Недвижимость', 'Недвижимость', 'Недвижимость', '', '', '', 0, 'board'),
(795, 789, 'Тойота', 'Тойота', 'Тойота', 'Тойота', 'Тойота', '', '', '', 0, 'board'),
(796, 790, 'Аренда квартир', 'Аренда квартир', 'Аренда квартир', 'Аренда квартир', 'Аренда квартир', '', '', '', 0, 'board');


Как сделать так, чтобы при размещении объявления в категории "Автомобили" были цвет, год, тип двигателя и т.д., а в категории "Недвижимость" этого не было. И наоборот, в категории "Недвижимость" были сколько комнат, этаж и т.д., а в категории " Автомобили" этого не было.
  • Вопрос задан
  • 344 просмотра
Решения вопроса 2
AlexNest
@AlexNest
Работаю с Python/Django
Навскидку, варианта 2:
  1. Использовать EAV;
  2. Если есть возможность переехать на Postgresql - jsonb;
Ответ написан
delphinpro
@delphinpro
frontend developer
если ударится в нормализацию то

таблица attrs (список характеристик)
id | name

таблица sets (список наборов характеристик)
id | name

таблица attr_sets (связи между характеристикой и набором)
attr_id | set_id

в таблице категорий ссылка на набор
.... | set_id

таблица values (значения характеристик)
id | attr_id | value

таблица product_attrs_values (связи значений с товарами)
product_id | attr_id | value_id

Как из всего этого делать выборку - хз =))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы