Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД интернет-магазина / 17 сообщений из 17, страница 1 из 1
02.05.2012, 19:34
    #37779557
Lexeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Добрый день всем. Ребят, требуется ваша помощь.
Задача - интернет магазин игрушек и др. "мелких" товаров.
Объем каталога - 6000+ товаров.
Использую php/MySQL.
Самое важное и самое сложное - правильно "построить" базу, что бы дальше можно было легко расширять и оптимизировать.

Собственно сейчас столкнулся со сложностью, опишу вкратце:
- может быть несколько расцветок или типов по-сути одного товара. Но отличаться может не только цвет, а и другие параметры, включая наличие, цену и т.д.
- предположительно каждая "расцветка" - это отдельный товар, но не у всех расцветок будет отличаться цена и отображать на сайте несколько цветов одного товара в подряд, не есть разумно. Товары нужно "сгруппировать" по какому-либо параметру.
- группировку необходимо сделать так, что бы потом добавлять, редактировать (короче - работать с группой) было максимально удобно.

Итак, предположим такую структуру данных:
categoryid INT PK NN AItitle VARCHAR(32) NN
productid INT PK NN AIcat_id INT NN FK(category.id)title VARCHAR(45) NNprice FLOAT(11.2) NN

PK - Primery key, NN - not null, FK - Foreign key, AI - Auto increment
Должно быть понятно. Структура упрощена, полей и таблиц больше.

Что бы реализовать связь предположительно планирую:
добавить таблицу
product_groupid INT PK NN AImain_id INT FK(product.id)products TEXT
товару добавить поле:
group_id, INT FK(product_group.id)

Собственно тут я запутался немного. Хочу продумать все точно, что бы потом не было сложностей.
Дальше будут выборки товаров, к примеру:
Код: sql
1.
SELECT * FROM product WHERE cat_id=1 ORDER BY price ASC


И мне нужно будет выбрать один, отмеченный "главным"(в группе) товар, а остальные относящиеся к этой группе "отбросить".
В принципе, это можно сделать будет уже программно, не на уровне mysql. Но хотелось бы рассмотреть и другие варианты реализаций.

Какие будут соображения?
Всем заранее спасибо!
...
Рейтинг: 0 / 0
02.05.2012, 20:18
    #37779606
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Сразу - цену из продукта выбрасываем.
Цена зависит не только от продукта, но и от магазина, покупателя, сезона и т.п.
...
Рейтинг: 0 / 0
02.05.2012, 20:23
    #37779607
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
LexeoЧто бы реализовать связь предположительно планирую:
добавить таблицу
Не надо мелочиться, развёртывай полное дерево классификации товаров. При 6000+
наименований без него всё равно не обойтись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.05.2012, 21:29
    #37779643
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Lexeo может быть несколько расцветок или типов по-сути одного товара. Но отличаться может не только цвет, а и другие параметры Вводите супертип - модель.
Lexeo И мне нужно будет выбрать один, отмеченный "главным"(в группе) товар, а остальные относящиеся к этой группе "отбросить".Стоп стоп. Пусть у нас есть велосипеды "малыш" розового и синего цвета. Пусть на розовые велосипеды скидка. Какой товар будет главным, какой стоит отбросить?
Lexeo Какие будут соображения?Взять реальный магазин, подсмотреть структуру, разглядеть грабли, понять что и зачем делалось. Ничто не ново под луной. Велосипедоизобретательство очень полезно для саморазвития, но вредно для бизнеса.
...
Рейтинг: 0 / 0
02.05.2012, 23:46
    #37779733
Lexeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
SERG1257Сразу - цену из продукта выбрасываем.
Цена зависит не только от продукта, но и от магазина, покупателя, сезона и т.п.
Непонятен смысл в этом. Цена регулируется неким прайсом от поставщика, реализован механизм обновления цен на все товары в соответствии с загружаемым xls-прайсом.

SERG1257Стоп стоп. Пусть у нас есть велосипеды "малыш" розового и синего цвета. Пусть на розовые велосипеды скидка. Какой товар будет главным, какой стоит отбросить?
В принципе, это можно регулировать. Если есть скидка - выводить товар со скидкой, если нет - товар, который отмечен "главным".
А внутри, на странице этого товара будут уже ссылки на все остальные расцветки.
На данный момент у заказчика как раз проблемная ситуация с велосипедами. На некоторые по 10-12 расцветок и все они в каталоге идут в подряд, занимая практически половину выводимых товаров на страницу, что не есть удобно.


Dimitry SibiryakovНе надо мелочиться, развёртывай полное дерево классификации товаров. При 6000+
наименований без него всё равно не обойтись.
Извини, я не совсем понял, что ты имеешь в виду. Можно чуть подробнее?

Еще, я забыл упомянуть, что ... я еще слабенький в проектировании. Сейчас вот погружаюсь в изучение.
Со сроками выполнения не напрягают. Главное - качество. Так, что начну с Велосипедоизобретательства, а там уже как пойдет.
...
Рейтинг: 0 / 0
03.05.2012, 00:47
    #37779777
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Lexeoя не совсем понял, что ты имеешь в виду. Можно чуть подробнее?

Классификация товаров это дерево. Типа "игрушки-мягкие-плюшевые-слоны-розовые". Ни один
покупатель не будет просматривать все 6000+ наименований в плоском списке. Ты должен
предложить ему иерархию выбора. Открой уже любой готовый интернет-магазин и посмотри как
это делается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2012, 01:51
    #37779796
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Lexeo Непонятен смысл в этом. Цена регулируется неким прайсом от поставщика, реализован механизм обновления цен на все товары в соответствии с загружаемым xls-прайсом.Да как хотите. Навскидку, теряется инфа о цене в определенный день. Разобраться почему покупателю был продан товар по такой цене будет сложно. Чеснее будет вести таблицу
Код: sql
1.
2.
3.
4.
5.
6.
create table price 
price_id int primary key
product_id references product,
price int
price_date_from date
price_date_to date


Одна дата price_change будет удобнее вести, но сложнее делать выборки (плюс один скан вместо :date between price_date_from and price_date_to)

Lexeo А внутри, на странице этого товара будут уже ссылки на все остальные расцветки.
На данный момент у заказчика как раз проблемная ситуация с велосипедами. На некоторые по 10-12 расцветок и все они в каталоге идут в подряд, занимая практически половину выводимых товаров на страницу, что не есть удобно.Чисто на SQL "в лоб"
Код: sql
1.
2.
3.
4.
5.
select model_name, price from product p 
join model m on m.model_id=p.model_id
where cat_id=43
group by model_name,price
order by price asc



Lexeo - группировку необходимо сделать так, что бы потом добавлять, редактировать (короче - работать с группой) было максимально удобно.Удобно должно быть в первую очередь покупателю
...
Рейтинг: 0 / 0
03.05.2012, 03:17
    #37779819
Lexeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Dimitry SibiryakovКлассификация товаров это дерево. Типа "игрушки-мягкие-плюшевые-слоны-розовые". Ни один
покупатель не будет просматривать все 6000+ наименований в плоском списке. Ты должен
предложить ему иерархию выбора. Открой уже любой готовый интернет-магазин и посмотри как
это делается.
Извини, кажется мы неправильно друг друга поняли. На моем "счету" уже выполнен ни один интернет-магазин и даже не десяток.
Дерево категорий, разделение товаров по брендам, фильтрация по разным параметрам, сортировка и т.п. Это же интернет-магазин, а не "свалка" товаров.

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

SERG1257Чисто на SQL "в лоб"
Спасибо, как раз этот код натолкнул на новые идеи.
Насчет вынесения цены в отдельную таблицу и хранения детальной инфы по цене, - мне кажется в моем проекте это будет не совсем оправданным. Цена у товара фактически статическая. Есть поле "скидка" у брендов, и собственная скидка у товара, в процентах. Последняя - исключает скидку распространяющуюся на бренд.
Цена пересчитывается в соответствии с процентом скидки. Данная структура полностью удовлетворяет требования заказчика (уже обсуждалось).
Спасибо за идею, я еще подумаю над вашим предложением!
...
Рейтинг: 0 / 0
03.05.2012, 09:30
    #37779912
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
LexeoСобрал все "за" и "против", предложения и пожелание заказчика и решил сделать "идеальный" магазин.
Понятно, идеальным он не будет, но хочу учесть большинство моментов и сделать хорошо.Так у вас конкретная задача есть или нет?
Если нет, то у вас выйдет монстр типа 1С, так как учесть все свойства всех товаров сразу невозможно. Автозапчасти очень сильно отличаются от лекарств.
Если есть - формулируйте задачу конкретнее.
...
Рейтинг: 0 / 0
03.05.2012, 12:23
    #37780209
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
LexeoНа моем "счету" уже выполнен ни один интернет-магазин и даже не десяток.
Дерево категорий, разделение товаров по брендам, фильтрация по разным параметрам,
сортировка и т.п.

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

Лично я на своём опыте пришёл к выводу, что "товар" и "группа товаров" это одна и та же
сущность, а стало быть - должна сидеть в одном дереве.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2012, 12:28
    #37780222
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Dimitry SibiryakovЛично я на своём опыте пришёл к выводу, что "товар" и "группа товаров" это одна и та же
сущность, а стало быть - должна сидеть в одном дереве.Понятие "товар" у разных проектировщиков разное. Если товар - это SKU, то я не согласился бы, что "товар" и "группа товаров" это одна и та же
сущность". А если товар делится, на несколько SKU (например, по цвету/размеру), то согласился бы.
...
Рейтинг: 0 / 0
03.05.2012, 13:14
    #37780370
Lexeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
miksoft Так у вас конкретная задача есть или нет?
Если нет, то у вас выйдет монстр типа 1С, так как учесть все свойства всех товаров сразу невозможно. Автозапчасти очень сильно отличаются от лекарств.
Если есть - формулируйте задачу конкретнее.
эмм. Я просто хотел объяснить сложность "на пальцах", что бы не пришлось вникать во всю структуру и в то же время можно было понять.

Задача? Есть некий интернет-магазин товаров для детей. Ассортимент товаров от соски до велосипеда. Магазин уже давно работает, но сделан был "на скорую руку" и попросту говоря - ужасно.
Вот я делаю полностью новый интернет магазин, отталкиваясь от того, что было реализовано в старом и исправляя все недочеты + конечно же, "усовершенствуя" его и делая более функциональным.
В магазине 112 + категорий товаров (разделы + категории). По сути система используется трех-уровневая, но при желании можно сделать и больше.

Dimitry Sibiryakov Так что ж ты в первом сообщении несёшь бред с двухуровневой схемой "категория-товар"?.. А
потом ещё и про разноцветные велосипеды, занимающие полстраницы?.. Если у тебя есть
нормальное дерево категорий, то на странице должна быть ровно одна строчка - "велосипед".
Если, конечно, у категории "велосипеды" нет подкатегорий "детский", "женский", "горный" и т.д.
В первом сообщении я попытался изложить суть сложности, на которой застрял в данный момент, не вдаваясь в подробности.

В чем была проблема? К примеру. Категория "велосипеды"(детские) подкатегорий больше нет. Отсортировал покупатель велосипеды по цене. На страницу выводятся 30 товаров. И тут пол страницы занимает один велосипед "зайчик" в разных расцветках. Затем идет тот же "зайчик", но не 2010 года модель, а 2012, немного "улучшенный", и у него тоже есть несколько расцветок.
И мы получаем полностью забитую страницу с "зайчиками", что по сути можно было объединить в 1-2 товара.
Вот я и поставил задачу "сгруппировать" товары. Обрати внимание, например тут реализовано то, что я хочу. Один товар и показано, что товар имеет несколько расцветок. Хотя по сути это разные товары, каждый имеет свою страницу, цену, характеристику и описание.

В моей задаче есть один нюанс. У группы товаров может быть общая фотогалерея. Допустим, одному из товаров добавили "детальные фотки", и что бы не добавлять всем остальным N расцветкам те же фотографии, можно прикрепить их к группе и затем отображать в каждом товаре из группы.
...
Рейтинг: 0 / 0
03.05.2012, 13:44
    #37780421
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
LexeoХотя по сути это разные товары, каждый имеет свою страницу, цену, характеристику и описание.

Нет, это один товар. Расцветка не влияет ни на цену, ни на описание.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.05.2012, 13:52
    #37780437
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Dimitry SibiryakovРасцветка не влияет ни на цену, ни на описание.Это где как. Цвет автомобиля, например, вполне может влиять на цену. Или цвет айфона
...
Рейтинг: 0 / 0
03.05.2012, 14:01
    #37780457
Lexeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Dimitry Sibiryakov Нет, это один товар. Расцветка не влияет ни на цену, ни на описание.
В моем случае кроме цвета может отличаться описание, характеристики, цена, наличие и др. параметры товара. Так, что товары должны быть разными, а в каталоге их нужно "объединить".
...
Рейтинг: 0 / 0
03.05.2012, 15:09
    #37780616
neoddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
Предлагаю сделать таблицу атрибутов и связывать с ней товары многие-ко-многим.

Атрибуты могут быть какие угодно:
-- серия
-- скидка
-- рекомендация
-- популярное
и т.д.

Добавлять атрибуты к товарам легко - выделил группу товаров и выбрал для них
атрибут из списка.

По атрибутам легко искать: найти все товары, популярные как подарок на день рождения

Атрибуты динамические, поэтому можно не меняя самого товара делать разную цену для разных (например)
расцветок в разное (например) время дня. Для этого создать атрибут "скидка на розовых слоников в 12:00"
...
Рейтинг: 0 / 0
03.05.2012, 15:16
    #37780641
neoddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД интернет-магазина
И еще в догонку, чтобы была ясна идея в целом и куда копать.

Это тема facets, faceted search
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД интернет-магазина / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]