Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> База каталога товаров, Проектирование базы каталога товаров 
:(
    Опции темы
skaizer
  Дата 14.4.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 18.4.2007

Репутация: нет
Всего: нет



Здравствуйте! Возникла проблема с проектированием базы данных под каталог товаров.
Проблема в том, что в каталоге может содержаться множество товаров различного типо, то есть у каждого из них будут свои какие-то индивидуальные характеристики, которых у другого товара не будет.
Поэтому невозможно подогнать одну универсальную таблицу для хранения всех товаров в ней, либо возможно но пока я не придумал как.

Добавление нового товара пока что я представляю следующим образом: админ заходит в раздел каталог товаров,  нажимает на ссылку создать шаблон товара, где заранее определяет все поля, окторые будут содержаться в описании товара данного типа. Потом уже в нужном разделе давит "Добавить товар", где выбирает его шаблон из списка шаблонов и заполняет формы из шаблона.
Пока что как реализовать данный вариант я не придумал  smile .

Если у вас есть какие-нибудь мысли по этому поводу, напишите, пожалуйста, буду очень признателен!

Это сообщение отредактировал(а) skaizer - 14.4.2008, 14:39
PM MAIL   Вверх
bars80080
Дата 14.4.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



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

лучше задать основные поля, и несколько дополнительных полей, которые в каждом конкретном случае будут обозначть что-то своё
PM MAIL WWW   Вверх
kulikoff
Дата 16.4.2008, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: нет
Всего: 1



А не проще создать таблицу для товаров, в которой будут все одинаковые характеристики (скажем, название, производитель, цена и т.д.), каждому товару присвоить тип (холодильник, плитап и т.д.), а потом для каждого типа создать свою таблицу с уникальными свойствами (скажем, для плиты - кол-во комфорок, газ/электро и т.д., а для холодильника - моща компресса и т.д.). Или каждый-каждый товар уникален?
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 16.4.2008, 09:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



Вот еще один подход...
Есть абстрактная таблица названий свойств и типом (числовой, текстовый ets..) (properties)
Есть таблица с конкретными значениями свойств, с привязкой к таблице properties (itemprop ::   itemprop.id_prop->properties.id) в зависимости от типа свойства заполняется то или иное поле ...
и есть таблица товаров, в которой есть только id товара и id его свойства.(stock :: stock.prop -> itemprop.id)

Выборка и работа с товарами пишется несколько более сложными запросами, чем простой select, зато в такую структуру можно вложить все свойства и примочки товаров, которые могут придти в голову менеджеру.

Код

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

CREATE TABLE `properties` (
  `id` int(11) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `type` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

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

INSERT INTO `properties` VALUES (1, 'название', 0);
INSERT INTO `properties` VALUES (2, 'цена', 0);

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

CREATE TABLE `itemprop` (
  `id` int(11) NOT NULL default '0',
  `id_prop` int(11) NOT NULL default '0',
  `descr` text NOT NULL,
  `vstr` varchar(255) NOT NULL default '',
  `vint` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `id_prop` (`id_prop`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

-- --------------------------------------------------------

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

CREATE TABLE `stock` (
  `id` int(11) NOT NULL default '0',
  `prop` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`,`prop`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Fortop
Дата 16.4.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



ksnk, только кроме структуры надо еще хранить сами значения свойств для конкретного товара


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
ksnk
Дата 16.4.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



Fortop, Дык да! Таблица itemprop этим и занимается ;)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Fortop
Дата 16.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



Точно, я перепутал связи. Тогда все ок.



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.