LINUX.ORG.RU

Как в крупных электронных магазинах сделаны поля товаров?

 ,


0

1

Например взять магазин электроники. У каждого типа товара есть несколько характерных полей. Для телефонов это разрешение экрана, ОС и пр. Для фотоаппаратов разрешение камеры и пр.

Как все это дело хранится? Предварительно забивается в базу, а потом при добавлении товара среди десятков забитых полей ищется нужное? Или просто каждый раз вбивается название поля и его значение?

В том же DNS я несколько раз видел поля с одинаковым именем, но в одном случае стоит галочка, а в другом случае написано «есть». Как у них сделано?

Будет замечательно если подскажете как организовать много полей в Drupal. Каждый раз искать нужное поле в форме неудобно (да и БД растет), а забивать таблички в WYSIWYG редакторе как-то странно.

Если я правильно понял о чём ты, это называется нормализация баз данных. Всё лишнее выносится в отдельную таблицу, связь по ключам.

router ★★★★★
()
Ответ на: комментарий от router

А если несколько разных типов полей? К примеру string и boolean. Если это все будет в одной таблице, например в такой:

ИМЯ ПОЛЯ	ЗНАЧЕНИЕ

Разрешение	1280x1024
Фонарик		true
То получится «Фонарик» тоже придется делать строковым?

P.S. Забыл добавить, что речь идет о реляционных БД. В нереляционных с этим попроще.

Black_Roland ★★★★
() автор топика

Как все это дело хранится?

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

Будет замечательно если подскажете как организовать много полей в Drupal.

Конкретизируй.

metrokto ★★
()
Ответ на: комментарий от metrokto

Будет замечательно если подскажете как организовать много полей в Drupal.

Конкретизируй.

Тут по юзабилити вопрос. Если у товара очень много характеристик, то получится очень большая форма с кучей полей. Если из этой формы требуется заполнить 2-3 поля, то не очень удобно эти поля искать среди других. Подумал может есть какие-то готовые решения для друпала, чтобы упростить заполнение формы (какой-нибудь фильтр по полям или автодополнение по имени).

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

С этим моментом теперь все ясно, спасибо.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от Black_Roland

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

trashymichael ★★★
()
Ответ на: комментарий от Black_Roland

фильтр для друпала ищи в каталоге фильтров друпала, не?

trashymichael ★★★
()

Как все это дело хранится?

если ты про друпал - на каждое поле по отдельной таблице с привязкой к ноду по entity_id
вытаскивается всё это через функции работы с данными, так что нет смысла заморачиваться руками с запросами

Будет замечательно если подскажете как организовать много полей в Drupal.

есть два варианта развития:
1 - Набиваешь типы товаров (content type), по одному на тип товара, набиваешь "уникальные" поля в каждый тип товара (уникальные кавычках, ибо большинство полей можно повторно использовать в разных типах товара)
2 - Набиваешь один content type, далешь select со всеми типами товаров, набиваешь все поля из всех типов товаров, по вкусу добавляешь ajax-обработку первого селекта, чтоб лишние поля прятать, иначе едиторы быстро свихунться

и это... ты с друпалм вообще знаком?

q11q11 ★★★★★
()
Последнее исправление: q11q11 (всего исправлений: 1)
Ответ на: комментарий от metrokto

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

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

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

Это все вещи мне знакомы. Еще можно сделать группы полей через Fields Group, тоже ничего получается. Думал может есть что-то получше.

Про хранение полей в друпале знаю. Хотел узнать «как у других», может идея бы пришла какая-нибудь, но видимо лучше и не придумаешь.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от q11q11

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

В друпал я лезть не собираюсь :) Просто было интересно как это делается в крупных проектах.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от Black_Roland

Fields Group

это ещё хуже чем мой второй вариант :)

а по теме - я бы делал отдельный content type на каждый тип товара
думаю так было бы проще всего мэнтэйнить, гибкость и всё такое
ну и если всё это будет медленно ворочаться - накинуть кэшей каких нибудь
sqlite на крайняк добавить, он вроде как самый быстрый на чтение

q11q11 ★★★★★
()
Ответ на: комментарий от Black_Roland

было интересно как это делается в крупных проектах

trashymichael правильно ответил, каждый по своему и "косо криво лишь бы живо" :)

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

Я немного не так выразился. Там и разные типы товаров со своими полями + еще поля в каждом типе делятся на группы. Так полегче искать хоть.

Было бы здорово какой-нибудь модуль типа Module filter, но для форм.

ну и если всё это будет медленно ворочаться - накинуть кэшей каких нибудь
sqlite на крайняк добавить, он вроде как самый быстрый на чтение

Админю не я, и хостинг обычный shared. Но пока ворочается.
А вот про sqlite не совсем ясно, неужели она быстрее MySQL? Тем более друпал кэши в БД хранит, а у MySQL есть кэш в памяти. С SQLite только если Memcahe использовать, иначе же совсем плохо будет, или нет?

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от Black_Roland

раньше как-то sqlite считал быстрее, щас нагуглил сравнения - на продакшн по любому не советуют ставить, да и по навороченности как ни крути сливает
хотя поиграться было бы интересно, так сказать набрать личный опыт

а вообще да, скорее всего лучше обойтись без нестандартных решений и пойти протоптанной тропой...
memcache, varnish и иже с ними :)

q11q11 ★★★★★
()
Последнее исправление: q11q11 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.