хранение данных с разными единицами измерения

TF-Studio
На сайте с 17.08.2010
Offline
321
385

приветствую коллеги.

подскажите, как лучше поступить.

есть задача сделать хранение большого количества товаров. структурировано.

каждый товар имеет порядка 50 свойств

каждое свойство имеет 3-10 вариаций (единиц измерения)

к примеру размеры. пользователь может завести в мм, см, мм итд

почти все они могут пересчитаны.

вопрос в хранении и поиске.

поиск может осуществляться по 1 единице измерения, а сохранено в другой.

база данных ожидается большая.

1. преобразовывать построчно не вариант

- долгий поиск. мало места в БД

2. хранить все варианты не выход (ибо при добавлении новой будет долгий пересчет)

- зато поиск очень быстрый

3. хранить 1 единицу (наименьшую) видится наиболее рационально

при поиск преобразовывать в неё, а в интерфейсе показывать разные варианты

-быстрый поиск, мало места

но есть характеристики, у которых нет формулы. к примеру, это стоимость. сохранили в CNY, а юзер ищет в usd. она меняется (тоже найти 1 валюту универсальную?)

как вообще поступить?

размер базы не критичен. есть шардирование.

критичен поиск. его скорость

критично добавление новых вариантов

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
Solmyr
На сайте с 10.09.2007
Offline
500
#1

Все кроме валют - приведением к стандартной единице измерения.

Валюты - если валют много, то тоже только приведением к стандартной единице. Если не очень много то предусмотреть внутренний компилятор поискового запроса учитывающий все валюты. Сам SQL-запрос будет длинным но работать медленнее он от этого не станет т.к. индекс по цене все равно скорее всего не будет задействован.

W
На сайте с 08.02.2017
Offline
161
#2

имхо 2ой вариант ок. лучше 1 пересчет при записи в БД, чем при каждом запросе

Комплексный аудит ИМ. Формирование УТП, анализ юзабилити, каналов продвижения. Контекстная реклама, настройка систем аналитики. Консультация - бесплатно, в ЛС
[umka]
На сайте с 25.05.2008
Offline
456
#3

А в чём проблема пересчитывать цену при поиске?

Храните цену в одной (основной) валюте, и курсы других валют к основной.

При формировании запроса цену пересчитали в основной валюте.

Результаты поиска опять пересчитали в валюте, в которой ищут.

Лог в помощь!
IL
На сайте с 20.04.2007
Offline
418
#4
TF-Studio:
к примеру размеры. пользователь может завести в мм, см, мм итд

Возможно, имеет смысл привязывать свойства к категориям..

Вес ювелирки в каратах, вес приправ-сыпучек в граммах, вес гантелей в кигограммах и вес машин-прицепов в тоннах.. по сути - это разные веса (массы.. но не суть)..

Заведённые пользователем - пересчитывать к основной (хранить оба - "реально используемое" значение и значение "от пользователя") .. и при поиске "поисковое" занчение приводить к "основной" и искать по нему.. Результаты можно выводить удобно "для пользователя" (как вариант - уже при выводе характеристики пересчитывать её значение.. )

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
suffix
На сайте с 26.08.2010
Offline
278
#5
ivan-lev:

Вес ювелирки в каратах, вес приправ-сыпучек в граммах, вес гантелей в кигограммах и вес машин-прицепов в тоннах.. по сути - это разные веса (массы.. но не суть)..

Массу понятийно более удобно перевести всю в кгс·с²/м - так уж никто не запутается :)

Клуб любителей хрюш (https://www.babai.ru)
_
На сайте с 24.03.2008
Offline
357
#6

Всё что можно хранят в одних единицах и для целей использования переводят в необходимые.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий