|
|
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Добрый день всем. Ребят, требуется ваша помощь. Задача - интернет магазин игрушек и др. "мелких" товаров. Объем каталога - 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. И мне нужно будет выбрать один, отмеченный "главным"(в группе) товар, а остальные относящиеся к этой группе "отбросить". В принципе, это можно сделать будет уже программно, не на уровне mysql. Но хотелось бы рассмотреть и другие варианты реализаций. Какие будут соображения? Всем заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 19:34 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Сразу - цену из продукта выбрасываем. Цена зависит не только от продукта, но и от магазина, покупателя, сезона и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 20:18 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
LexeoЧто бы реализовать связь предположительно планирую: добавить таблицу Не надо мелочиться, развёртывай полное дерево классификации товаров. При 6000+ наименований без него всё равно не обойтись. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 20:23 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Lexeo может быть несколько расцветок или типов по-сути одного товара. Но отличаться может не только цвет, а и другие параметры Вводите супертип - модель. Lexeo И мне нужно будет выбрать один, отмеченный "главным"(в группе) товар, а остальные относящиеся к этой группе "отбросить".Стоп стоп. Пусть у нас есть велосипеды "малыш" розового и синего цвета. Пусть на розовые велосипеды скидка. Какой товар будет главным, какой стоит отбросить? Lexeo Какие будут соображения?Взять реальный магазин, подсмотреть структуру, разглядеть грабли, понять что и зачем делалось. Ничто не ново под луной. Велосипедоизобретательство очень полезно для саморазвития, но вредно для бизнеса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 21:29 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
SERG1257Сразу - цену из продукта выбрасываем. Цена зависит не только от продукта, но и от магазина, покупателя, сезона и т.п. Непонятен смысл в этом. Цена регулируется неким прайсом от поставщика, реализован механизм обновления цен на все товары в соответствии с загружаемым xls-прайсом. SERG1257Стоп стоп. Пусть у нас есть велосипеды "малыш" розового и синего цвета. Пусть на розовые велосипеды скидка. Какой товар будет главным, какой стоит отбросить? В принципе, это можно регулировать. Если есть скидка - выводить товар со скидкой, если нет - товар, который отмечен "главным". А внутри, на странице этого товара будут уже ссылки на все остальные расцветки. На данный момент у заказчика как раз проблемная ситуация с велосипедами. На некоторые по 10-12 расцветок и все они в каталоге идут в подряд, занимая практически половину выводимых товаров на страницу, что не есть удобно. Dimitry SibiryakovНе надо мелочиться, развёртывай полное дерево классификации товаров. При 6000+ наименований без него всё равно не обойтись. Извини, я не совсем понял, что ты имеешь в виду. Можно чуть подробнее? Еще, я забыл упомянуть, что ... я еще слабенький в проектировании. Сейчас вот погружаюсь в изучение. Со сроками выполнения не напрягают. Главное - качество. Так, что начну с Велосипедоизобретательства, а там уже как пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 23:46 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Lexeoя не совсем понял, что ты имеешь в виду. Можно чуть подробнее? Классификация товаров это дерево. Типа "игрушки-мягкие-плюшевые-слоны-розовые". Ни один покупатель не будет просматривать все 6000+ наименований в плоском списке. Ты должен предложить ему иерархию выбора. Открой уже любой готовый интернет-магазин и посмотри как это делается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 00:47 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Lexeo Непонятен смысл в этом. Цена регулируется неким прайсом от поставщика, реализован механизм обновления цен на все товары в соответствии с загружаемым xls-прайсом.Да как хотите. Навскидку, теряется инфа о цене в определенный день. Разобраться почему покупателю был продан товар по такой цене будет сложно. Чеснее будет вести таблицу Код: sql 1. 2. 3. 4. 5. 6. Одна дата price_change будет удобнее вести, но сложнее делать выборки (плюс один скан вместо :date between price_date_from and price_date_to) Lexeo А внутри, на странице этого товара будут уже ссылки на все остальные расцветки. На данный момент у заказчика как раз проблемная ситуация с велосипедами. На некоторые по 10-12 расцветок и все они в каталоге идут в подряд, занимая практически половину выводимых товаров на страницу, что не есть удобно.Чисто на SQL "в лоб" Код: sql 1. 2. 3. 4. 5. Lexeo - группировку необходимо сделать так, что бы потом добавлять, редактировать (короче - работать с группой) было максимально удобно.Удобно должно быть в первую очередь покупателю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 01:51 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКлассификация товаров это дерево. Типа "игрушки-мягкие-плюшевые-слоны-розовые". Ни один покупатель не будет просматривать все 6000+ наименований в плоском списке. Ты должен предложить ему иерархию выбора. Открой уже любой готовый интернет-магазин и посмотри как это делается. Извини, кажется мы неправильно друг друга поняли. На моем "счету" уже выполнен ни один интернет-магазин и даже не десяток. Дерево категорий, разделение товаров по брендам, фильтрация по разным параметрам, сортировка и т.п. Это же интернет-магазин, а не "свалка" товаров. Просто в студии, где я раньше работал, было принято не заморачиваться над подобными "проблемками" и делать как быстрее. Сейчас немного иная задача. Собрал все "за" и "против", предложения и пожелание заказчика и решил сделать "идеальный" магазин. Понятно, идеальным он не будет, но хочу учесть большинство моментов и сделать хорошо. SERG1257Чисто на SQL "в лоб" Спасибо, как раз этот код натолкнул на новые идеи. Насчет вынесения цены в отдельную таблицу и хранения детальной инфы по цене, - мне кажется в моем проекте это будет не совсем оправданным. Цена у товара фактически статическая. Есть поле "скидка" у брендов, и собственная скидка у товара, в процентах. Последняя - исключает скидку распространяющуюся на бренд. Цена пересчитывается в соответствии с процентом скидки. Данная структура полностью удовлетворяет требования заказчика (уже обсуждалось). Спасибо за идею, я еще подумаю над вашим предложением! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 03:17 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
LexeoСобрал все "за" и "против", предложения и пожелание заказчика и решил сделать "идеальный" магазин. Понятно, идеальным он не будет, но хочу учесть большинство моментов и сделать хорошо.Так у вас конкретная задача есть или нет? Если нет, то у вас выйдет монстр типа 1С, так как учесть все свойства всех товаров сразу невозможно. Автозапчасти очень сильно отличаются от лекарств. Если есть - формулируйте задачу конкретнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 09:30 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
LexeoНа моем "счету" уже выполнен ни один интернет-магазин и даже не десяток. Дерево категорий, разделение товаров по брендам, фильтрация по разным параметрам, сортировка и т.п. Так что ж ты в первом сообщении несёшь бред с двухуровневой схемой "категория-товар"?.. А потом ещё и про разноцветные велосипеды, занимающие полстраницы?.. Если у тебя есть нормальное дерево категорий, то на странице должна быть ровно одна строчка - "велосипед". Если, конечно, у категории "велосипеды" нет подкатегорий "детский", "женский", "горный" и т.д. Лично я на своём опыте пришёл к выводу, что "товар" и "группа товаров" это одна и та же сущность, а стало быть - должна сидеть в одном дереве. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:23 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЛично я на своём опыте пришёл к выводу, что "товар" и "группа товаров" это одна и та же сущность, а стало быть - должна сидеть в одном дереве.Понятие "товар" у разных проектировщиков разное. Если товар - это SKU, то я не согласился бы, что "товар" и "группа товаров" это одна и та же сущность". А если товар делится, на несколько SKU (например, по цвету/размеру), то согласился бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:28 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
miksoft Так у вас конкретная задача есть или нет? Если нет, то у вас выйдет монстр типа 1С, так как учесть все свойства всех товаров сразу невозможно. Автозапчасти очень сильно отличаются от лекарств. Если есть - формулируйте задачу конкретнее. эмм. Я просто хотел объяснить сложность "на пальцах", что бы не пришлось вникать во всю структуру и в то же время можно было понять. Задача? Есть некий интернет-магазин товаров для детей. Ассортимент товаров от соски до велосипеда. Магазин уже давно работает, но сделан был "на скорую руку" и попросту говоря - ужасно. Вот я делаю полностью новый интернет магазин, отталкиваясь от того, что было реализовано в старом и исправляя все недочеты + конечно же, "усовершенствуя" его и делая более функциональным. В магазине 112 + категорий товаров (разделы + категории). По сути система используется трех-уровневая, но при желании можно сделать и больше. Dimitry Sibiryakov Так что ж ты в первом сообщении несёшь бред с двухуровневой схемой "категория-товар"?.. А потом ещё и про разноцветные велосипеды, занимающие полстраницы?.. Если у тебя есть нормальное дерево категорий, то на странице должна быть ровно одна строчка - "велосипед". Если, конечно, у категории "велосипеды" нет подкатегорий "детский", "женский", "горный" и т.д. В первом сообщении я попытался изложить суть сложности, на которой застрял в данный момент, не вдаваясь в подробности. В чем была проблема? К примеру. Категория "велосипеды"(детские) подкатегорий больше нет. Отсортировал покупатель велосипеды по цене. На страницу выводятся 30 товаров. И тут пол страницы занимает один велосипед "зайчик" в разных расцветках. Затем идет тот же "зайчик", но не 2010 года модель, а 2012, немного "улучшенный", и у него тоже есть несколько расцветок. И мы получаем полностью забитую страницу с "зайчиками", что по сути можно было объединить в 1-2 товара. Вот я и поставил задачу "сгруппировать" товары. Обрати внимание, например тут реализовано то, что я хочу. Один товар и показано, что товар имеет несколько расцветок. Хотя по сути это разные товары, каждый имеет свою страницу, цену, характеристику и описание. В моей задаче есть один нюанс. У группы товаров может быть общая фотогалерея. Допустим, одному из товаров добавили "детальные фотки", и что бы не добавлять всем остальным N расцветкам те же фотографии, можно прикрепить их к группе и затем отображать в каждом товаре из группы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:14 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
LexeoХотя по сути это разные товары, каждый имеет свою страницу, цену, характеристику и описание. Нет, это один товар. Расцветка не влияет ни на цену, ни на описание. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:44 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovРасцветка не влияет ни на цену, ни на описание.Это где как. Цвет автомобиля, например, вполне может влиять на цену. Или цвет айфона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:52 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Нет, это один товар. Расцветка не влияет ни на цену, ни на описание. В моем случае кроме цвета может отличаться описание, характеристики, цена, наличие и др. параметры товара. Так, что товары должны быть разными, а в каталоге их нужно "объединить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:01 |
|
||
|
Проектирование БД интернет-магазина
|
|||
|---|---|---|---|
|
#18+
Предлагаю сделать таблицу атрибутов и связывать с ней товары многие-ко-многим. Атрибуты могут быть какие угодно: -- серия -- скидка -- рекомендация -- популярное и т.д. Добавлять атрибуты к товарам легко - выделил группу товаров и выбрал для них атрибут из списка. По атрибутам легко искать: найти все товары, популярные как подарок на день рождения Атрибуты динамические, поэтому можно не меняя самого товара делать разную цену для разных (например) расцветок в разное (например) время дня. Для этого создать атрибут "скидка на розовых слоников в 12:00" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 15:09 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37779777&tid=1541702]: |
0ms |
get settings: |
4ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
137ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 421ms |

| 0 / 0 |
