SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.01.2013 14:53:51

Midnight
Участник
Зарегистрирован: 13.01.2013
Сообщений: 1

Хранение и обработка каталога товаров

Доброго времени суток. Я newbie, потому по нехватке знаний и практики довольно трудновато принимать правильные решения. Сейчас бьюсь с интересной задачей - реализовать базу данных каталога товаров с категориями и подкатегориями (иерархия), да и так чтобы один и тот же товар мог входить в несколько категорий. База тестовая - ТЗ от потенциального работодателя. На пальцах как бы все понятно, 3 таблицы - дерево_каталогов, список_товаров, отношения_между_товаром_и_каталогом. Для хранения иерархии каталога решил использовать алгоритм вложенных множеств (nested sets), который уже давно известен и довольно отточен.  Таблицы выглядят примерно так:


-- дерево каталога
CREATE TABLE categories(
cat_id INT(11) NOT NULL AUTO_INCREMENT,
cat_name VARCHAR(255) NOT NULL,
cat_parent INT(11) NOT NULL,
left_child INT(11) NOT NULL,
right_child INT(11) NOT NULL,
cat_level TINYINT(1) NOT NULL,
PRIMARY KEY(cat_id),
INDEX left_child(left_child, right_child, cat_level)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- список товаров
CREATE TABLE articles(
art_id INT(11) NOT NULL AUTO_INCREMENT,
art_name VARCHAR(255) NOT NULL,
art_price DECIMAL(7,2) NOT NULL DEFAULT 0.00,
PRIMARY KEY(art_id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- отношения между товаром и категориями каталога
CREATE TABLE links(
art_id INT(11) NOT NULL,
cat_id INT(11) NOT NULL,
INDEX art_id (art_id),
INDEX cat_id (cat_id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
 

Именно таблица "links" и отвечает за "наполнение" категорий товаром, в ней все связи.
Так вот вопрос, насколько оптимален такой подход в данном случае, если производить нужно только выборку? И как можно организовать хранение отношений товара к категориям другим способом?

Отредактированно Midnight (13.01.2013 15:06:04)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson