|
|
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
к модератору: Я поискал похожий вопрос, но не нашел нужного мне намека или явного ответа. Прошу меня простить, если я не заметил соответствующего вопроса (если найдете, можете перенести, уведомив меня). к коллегам: Уважаемые коллеги, я хотел бы посоветоваться (без критики). Я проектирую БД для интернет-магазина. Особенность в том, что заказчик не ориентирован на одну отрасль. Его целевая аудитория - все (!!!). Такое условие мне усложняет проектирование БД, а именно разработку структуры таблицы для хранения данных о товарах. Размышлял даже о глупых методах. Но пока эффективной структуры не определил, может кто даст совет... ------------- Кратко: Если каждый товар имеет свои атрибуты и они разные у всех, то как тогда проектировать таблицу "Товар"? Свойства одежды отсутствуют в бытовой технике - есть только "размер" и "производитель", но нет таких, как "фасон", "ткань", "воротник". ------------- Подробно: Пусть будет таблица "каталог": IDCatalog - идентификатор записи, первичный ключ Name - название каталога ParentID - идентификатор "высшего" каталога, ссылается на эту же таблицу на ключевое поле IDCatalog Вывод данных из этой таблицы будет выглядеть как древовидная структура, примерно вот так: Одежда: --женская ----платья ------вечерние ------свадебные ----юбки ------классические ------джинсовые ----некое название ------какое-то название --------еще какое-то название ----следующий вид --------и так далее --мужская ----смокинг ------какая-та разновидность ------какая-та разновидность ----какой-то еще вид --детская Бытовая техника: --крупная ----стиральная машина ------автомат ------полуавтомат ----посудомоечная машина --мелкая ----фен ----часы ------может быть что-то еще --------и даже вот так -----------и еще вот так (и так далее) В общем, "веток" и "подветок" в этой структуре может быть неизвестное количество. Но сложность не в этом, а в товаре... Таблица "Товар": IDTovar - идентификатор товара, первичный ключ Name - название товара IDCategory - идентификатор каталога (прочие поля перечислю по русский...) Ткань (для одежды) Фирма-производитель (для всех товаров) Страна, где производился товар (для всех товаров) размер матрицы (для фотоаппаратов и камер смартфонов) тип зарядки (для разной техники, например - для смартфонов, цифровых видеокамер, ноутбуков...) жанр (для книг, музыки, фильма) объем жесткого диска (для компьютеров) и так далее Думаю все уже поняли, с какой трудностью проектирования структуры таблицы "Товар" я столкнулся, но все-таки поясню. Проблема в том, что товары относятся к разным видам и у каждого вида товара есть свои свойства/атрибуты/технические детали. Например, у телефонах есть камера, сенсорный экран, операционная система, мощность процессора, а у платьев есть длина, фасон, разрез, узор и т.д. Если у одного вида товара есть несколько таких атрибутов, то у другого вида товара может быть десять-двадцать других атрибутов. Что есть у одного, нет у другого ( иногда есть ). 1) Наверное можно в таблице "Товар" перечислить поля типа "Атрибут1", "Атрибут2", "Атрибут3"... Затем в интерфейсе сделать привязку на определенные поля таблицы. В этом случае некоторые "Атрибуты" были бы заполнены, а некоторые нет. Например, для одежды были бы заполнены ткань и фасон, но не было бы объема жесткого диска :) Как-то некрасиво будет выглядеть таблица с точки зрения программиста :) 2) Наверное можно в таблице "Каталог" добавить поле "название таблицы" и значением этого поля указать название определенной таблицы, которая содержит нужные атрибуты конкретного вида товара. Таким образом можно создать таблицы "Юбка", "Брюки", "Смартфон", "Компьютер" и т.д. Возникнет другая проблема - как связать эти таблицы? Или придется в интерфейсе писать sql на выборку из конкретной таблицы? Есть мысль создать промежуточную таблицу "Тип товара" и тогда можно таблицу "Каталог" связать с "Типом товара", и "Товар" тоже связать с "Типом товара". Приведет ли это к проблемам и каким? Мне просто нужны идеи. Я и сам спустя время додумаюсь, но может быть кто уже сталкивался с подобными задачами и уже знает эффективное решение? Или может я не учитываю некоторые моменты (подводные камни)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 11:29 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Идея называется EAV тогда в БД укладываются любые свойства любого товара, да еще и с наследованием свойств внутри группы но выборка данных и программирование в такой модели довольно сложны именно в силу ее широты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 11:53 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Я решил сделать поле specifications и писать туда json. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 15:37 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Kuanysh_T Его целевая аудитория - все (!!!)Я бы сказал, что заказчик большой оптимист. Kuanysh_TParentID - идентификатор "высшего" каталога, ссылается на эту же таблицу на ключевое поле IDCatalogЭто не единственный и не самый удобный способ реализации деревьев. Kuanysh_TВ общем, "веток" и "подветок" в этой структуре может быть неизвестное количество.Уверен, что число уровней вашего каталога можно посчитать на пальцах. Больше - будет просто неудобно для человека Kuanysh_T и значением этого поля указать название определенной таблицы, которая содержит нужные атрибуты конкретного вида товараПлохая идея Kuanysh_TМне просто нужны идеи. Ищите по слову наследование. Из последнего http://www.sql.ru/forum/1170472/bd-dokumentooborota-otdela-osobennosti-proektirovaniya-tablic krapotkin Идея называется EAVКак ни странно соглашусь. Я сомневаюсь (см про заказчика), что проект доживет до проблем с EAV. iSergius Я решил сделать поле specifications и писать туда json. Или XML, тоже выход для нестабильной структуры. И тоже не оптимальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:59 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
> Я и сам спустя время додумаюсь Решите задачу самостоятельно - можете смело требовать $150k в год или больше. Видите ли, в чём проблема: на самом деле это не одна задача, а несколько. Причём, разнородность характеристик - не самая сложная из них. Здесь сложно подсказать что-то конкретное: вам необходимо не решение, а другой угол зрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 18:21 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Благодарю, коллеги, за озвученные идеи. Рассмотрев их все, я нашел для себя вариант, который оптимален на конкретно данный момент - для своевременной сдачи первой фазы проекта вполне годится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 18:54 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Kuanysh_T... я нашел для себя вариант ... Ну так озвучь. А то если это стандартный EAV на все таблицы, то это путь в никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 19:14 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Kuanysh_T Кратко: Если каждый товар имеет свои атрибуты и они разные у всех, то как тогда проектировать таблицу "Товар"? Свойства одежды отсутствуют в бытовой технике - есть только "размер" и "производитель", но нет таких, как "фасон", "ткань", "воротник". Кратко: Либо наследование, но закапаешься в дереве классов, если реально номенклатура будет широкая, либо EAV, но закапаешься в написании запросов под это дело (но можно генерировать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 19:18 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
iSergiusЯ решил сделать поле specifications и писать туда json. Идиотское решение в свете РСУБД. Не очень идиотское, если есть внешняя индексация, поддерживающая JSON. Но тоже идиотская, если нужно тут же товар продавать после поступления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 19:20 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Злой БобрKuanysh_T... я нашел для себя вариант ... Ну так озвучь. А то если это стандартный EAV на все таблицы, то это путь в никуда. Каждый разработчик БД во что-то верит... Один верит, что EAV -- это путь в никуда, другой верит, что EAV -- это путь к его счастью... Ни то, ни другое недоказуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 19:22 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
MasterZivНи то, ни другое недоказуемо. Хуже того неПредсказуемо. У разных людей разные результаты на выходе. Причем не у самых глупых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 20:12 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
MongoDB? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 22:06 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Kuanysh_T, Делал такое, программить действительно немало прийдется. вот приблизительная схема: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2016, 18:36 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
+ Справочник "Классификатор товаров" - промежуточное звено для прикрепления характеристик. Устраняет дублирование характеристик для одинаковых товаров с разными цветами. Узловые элементы в нем "Вид товара"+"Производитель"+"Модель". Модель - подчинена производителям соответственно. Дерзайте, успехов вам! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2016, 18:47 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
В итоге как выглядит карточка товара: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2016, 18:55 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
В итоге как выглядит карточка товараОчень толково. Правда я бы еще визуально сделал группы свойств, а не просто огромный плоский список. И почти наверняка это одна из реализаций EAV. Не ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 10:13 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
trdm_, А можете показать редактор справочника характеристик и редактор справочника значений характеристик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 10:25 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
LSVВ итоге как выглядит карточка товараОчень толково. Правда я бы еще визуально сделал группы свойств , а не просто огромный плоский список. И почти наверняка это одна из реализаций EAV. Не ? Спасибо за предложение, я бы так и сделал. Просто уже сдал задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 11:01 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
miksofttrdm_, А можете показать редактор справочника характеристик и редактор справочника значений характеристик? Все делалось средствами 1Сv77. Ну вот где-то приблизительно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 11:14 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
LSVИ почти наверняка это одна из реализаций EAV. Не ? Не могу сказать, надо разбираться в термине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 11:15 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Ну и финал всей этой возни с характеристиками, совместимостями и т.п. все выгружается в интернет магазин . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 11:25 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
trdm_LSVИ почти наверняка это одна из реализаций EAV. Не ? Не могу сказать, надо разбираться в термине.Грубо говоря неск. отдельных универсальных таблиц, в кот. хранятся различные дополнительные значения для товаров (и не только для товаров). И любой новый параметр легко добавляется без изменения структуры полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 12:53 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
LSVtrdm_пропущено... Не могу сказать, надо разбираться в термине.Грубо говоря неск. отдельных универсальных таблиц, в кот. хранятся различные дополнительные значения для товаров (и не только для товаров). И любой новый параметр легко добавляется без изменения структуры полей. Спасибо. Да, так и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 14:10 |
|
||
|
Проектирую БД интернет-магазина ширпотреб
|
|||
|---|---|---|---|
|
#18+
Что ж владелец не прокомментировал-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2016, 16:27 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39030964&tid=1540287]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 287ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...