@Utarzan123
backend

Хранить остатки и цены в отдельной таблице?

Такой вопрос. Как вы считаете где лучше хранить остатки? В таблице товара, в которой десятки полей или отдельно? тоже самое и цены.

Дело в том, что товаров более 100 000. Каждые 10 минут запускается воркер, обновляющий остатки и цены с пересчетом в курсы валют. И как следствие признак "Наличие" товара Да или нет. И получается приходится обновлять эти поля в товере. У товара получается слишком много версий, что накладно хранить в базе.

Сейчас я начал хранить цены в отдельной связанной таблице и обновляю только ее. Сейчас еще планирую остаток вынести тоже в отдельную таблицу и признак available тоже в отдельную. Как считаете правильнее так будет с точки зрения проектирования?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Вообще хорошим тоном с точки зрения проектирования является отсутствие дубляжа. В данном случае производное из основных данных (остаток как разница поступления и расхода) является дублем.
На такое стоит идти только в угоду реальному повышению производительности.
Собственно расчет свободного остатка - штука быстрая. К примеру даже вычисляемое поле "есть ли свободный запас" при номенклатуре в 1.5 миллиона позиций и в среднем 3-4 уровнях деревьев замен/аналогов "вообще не заметно" в производительности. (MS SQL 4-8 cpu/vcpu 8-16-24 Gb RAM).

С ценами - чуть сложнее - схем ценообразования может быть множество. Поэтому лучше хранить "математику схем" и уже из этого вычислять условно конечную цену. А для нужд бухгалтерского, оперативного, управленческого учетов - вычислять в соответствии с теми нуждами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы