powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирую БД интернет-магазина ширпотреб
26 сообщений из 26, показаны все 2 страниц
Проектирую БД интернет-магазина ширпотреб
    #39030221
Kuanysh_T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к модератору: Я поискал похожий вопрос, но не нашел нужного мне намека или явного ответа. Прошу меня простить, если я не заметил соответствующего вопроса (если найдете, можете перенести, уведомив меня).

к коллегам:
Уважаемые коллеги, я хотел бы посоветоваться (без критики). Я проектирую БД для интернет-магазина. Особенность в том, что заказчик не ориентирован на одну отрасль. Его целевая аудитория - все (!!!). Такое условие мне усложняет проектирование БД, а именно разработку структуры таблицы для хранения данных о товарах. Размышлял даже о глупых методах. Но пока эффективной структуры не определил, может кто даст совет...

-------------
Кратко: Если каждый товар имеет свои атрибуты и они разные у всех, то как тогда проектировать таблицу "Товар"? Свойства одежды отсутствуют в бытовой технике - есть только "размер" и "производитель", но нет таких, как "фасон", "ткань", "воротник".

-------------
Подробно:

Пусть будет таблица "каталог":
IDCatalog - идентификатор записи, первичный ключ
Name - название каталога
ParentID - идентификатор "высшего" каталога, ссылается на эту же таблицу на ключевое поле IDCatalog

Вывод данных из этой таблицы будет выглядеть как древовидная структура, примерно вот так:
Одежда:
--женская
----платья
------вечерние
------свадебные
----юбки
------классические
------джинсовые
----некое название
------какое-то название
--------еще какое-то название
----следующий вид
--------и так далее
--мужская
----смокинг
------какая-та разновидность
------какая-та разновидность
----какой-то еще вид
--детская
Бытовая техника:
--крупная
----стиральная машина
------автомат
------полуавтомат
----посудомоечная машина
--мелкая
----фен
----часы
------может быть что-то еще
--------и даже вот так
-----------и еще вот так
(и так далее)

В общем, "веток" и "подветок" в этой структуре может быть неизвестное количество. Но сложность не в этом, а в товаре...

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

Думаю все уже поняли, с какой трудностью проектирования структуры таблицы "Товар" я столкнулся, но все-таки поясню.
Проблема в том, что товары относятся к разным видам и у каждого вида товара есть свои свойства/атрибуты/технические детали. Например, у телефонах есть камера, сенсорный экран, операционная система, мощность процессора, а у платьев есть длина, фасон, разрез, узор и т.д. Если у одного вида товара есть несколько таких атрибутов, то у другого вида товара может быть десять-двадцать других атрибутов. Что есть у одного, нет у другого ( иногда есть ).
1) Наверное можно в таблице "Товар" перечислить поля типа "Атрибут1", "Атрибут2", "Атрибут3"... Затем в интерфейсе сделать привязку на определенные поля таблицы. В этом случае некоторые "Атрибуты" были бы заполнены, а некоторые нет. Например, для одежды были бы заполнены ткань и фасон, но не было бы объема жесткого диска :) Как-то некрасиво будет выглядеть таблица с точки зрения программиста :)
2) Наверное можно в таблице "Каталог" добавить поле "название таблицы" и значением этого поля указать название определенной таблицы, которая содержит нужные атрибуты конкретного вида товара. Таким образом можно создать таблицы "Юбка", "Брюки", "Смартфон", "Компьютер" и т.д. Возникнет другая проблема - как связать эти таблицы? Или придется в интерфейсе писать sql на выборку из конкретной таблицы?
Есть мысль создать промежуточную таблицу "Тип товара" и тогда можно таблицу "Каталог" связать с "Типом товара", и "Товар" тоже связать с "Типом товара". Приведет ли это к проблемам и каким?

Мне просто нужны идеи. Я и сам спустя время додумаюсь, но может быть кто уже сталкивался с подобными задачами и уже знает эффективное решение? Или может я не учитываю некоторые моменты (подводные камни)...
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39030234
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея называется EAV
тогда в БД укладываются любые свойства любого товара, да еще и с наследованием свойств внутри группы

но выборка данных и программирование в такой модели довольно сложны именно в силу ее широты
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39030297
iSergius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я решил сделать поле specifications и писать туда json.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39030964
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, тоже выход для нестабильной структуры. И тоже не оптимальный.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39031039
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я и сам спустя время додумаюсь

Решите задачу самостоятельно - можете смело требовать $150k в год или больше.

Видите ли, в чём проблема: на самом деле это не одна задача, а несколько. Причём, разнородность характеристик - не самая сложная из них. Здесь сложно подсказать что-то конкретное: вам необходимо не решение, а другой угол зрения.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165883
Kuanysh_T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю, коллеги, за озвученные идеи. Рассмотрев их все, я нашел для себя вариант, который оптимален на конкретно данный момент - для своевременной сдачи первой фазы проекта вполне годится :)
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165906
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuanysh_T... я нашел для себя вариант ...
Ну так озвучь. А то если это стандартный EAV на все таблицы, то это путь в никуда.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165914
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuanysh_T Кратко: Если каждый товар имеет свои атрибуты и они разные у всех, то как тогда проектировать таблицу "Товар"? Свойства одежды отсутствуют в бытовой технике - есть только "размер" и "производитель", но нет таких, как "фасон", "ткань", "воротник".



Кратко:
Либо наследование, но закапаешься в дереве классов, если реально номенклатура будет широкая, либо EAV, но закапаешься
в написании запросов под это дело (но можно генерировать).
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165918
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iSergiusЯ решил сделать поле specifications и писать туда json.

Идиотское решение в свете РСУБД.
Не очень идиотское, если есть внешняя индексация, поддерживающая JSON.
Но тоже идиотская, если нужно тут же товар продавать после поступления.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165920
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрKuanysh_T... я нашел для себя вариант ...
Ну так озвучь. А то если это стандартный EAV на все таблицы, то это путь в никуда.

Каждый разработчик БД во что-то верит...
Один верит, что EAV -- это путь в никуда, другой верит, что EAV -- это путь к его счастью...
Ни то, ни другое недоказуемо.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39165960
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНи то, ни другое недоказуемо.

Хуже того неПредсказуемо. У разных людей разные результаты на выходе. Причем не у самых глупых.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39166051
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MongoDB? :)
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39167963
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuanysh_T,

Делал такое, программить действительно немало прийдется. вот приблизительная схема:
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39167976
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ Справочник "Классификатор товаров" - промежуточное звено для прикрепления характеристик.
Устраняет дублирование характеристик для одинаковых товаров с разными цветами.
Узловые элементы в нем "Вид товара"+"Производитель"+"Модель". Модель - подчинена производителям соответственно.
Дерзайте, успехов вам!
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39167979
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В итоге как выглядит карточка товара:
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168287
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В итоге как выглядит карточка товараОчень толково. Правда я бы еще визуально сделал группы свойств, а не просто огромный плоский список.
И почти наверняка это одна из реализаций EAV. Не ?
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168298
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm_,

А можете показать редактор справочника характеристик и редактор справочника значений характеристик?
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168324
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVВ итоге как выглядит карточка товараОчень толково. Правда я бы еще визуально сделал группы свойств , а не просто огромный плоский список.
И почти наверняка это одна из реализаций EAV. Не ?
Спасибо за предложение, я бы так и сделал.
Просто уже сдал задачу.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168337
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttrdm_,

А можете показать редактор справочника характеристик и редактор справочника значений характеристик?
Все делалось средствами 1Сv77.
Ну вот где-то приблизительно так.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168339
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVИ почти наверняка это одна из реализаций EAV. Не ?
Не могу сказать, надо разбираться в термине.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168354
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и финал всей этой возни с характеристиками, совместимостями и т.п. все выгружается в интернет магазин .
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168466
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm_LSVИ почти наверняка это одна из реализаций EAV. Не ?
Не могу сказать, надо разбираться в термине.Грубо говоря неск. отдельных универсальных таблиц, в кот. хранятся различные дополнительные значения для товаров (и не только для товаров). И любой новый параметр легко добавляется без изменения структуры полей.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168587
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVtrdm_пропущено...

Не могу сказать, надо разбираться в термине.Грубо говоря неск. отдельных универсальных таблиц, в кот. хранятся различные дополнительные значения для товаров (и не только для товаров). И любой новый параметр легко добавляется без изменения структуры полей.
Спасибо. Да, так и есть.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168754
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ж владелец не прокомментировал-то?
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39168839
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЧто ж владелец не прокомментировал-то?
Устал наверное.
...
Рейтинг: 0 / 0
Проектирую БД интернет-магазина ширпотреб
    #39306963
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под наследованием в данной теме имеется ввиду class table inheritance? Подойдет ли этот способ для 1600 категорий товаров? 1600 таблиц - много это или нет?
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирую БД интернет-магазина ширпотреб
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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