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



@Utarzan123

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

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

Сейчас я начал хранить цены в отдельной связанной таблице и обновляю только ее. Сейчас еще планирую остаток вынести тоже в отдельную таблицу и признак available тоже в отдельную. Как считаете правильнее так будет с точки зрения проектирования?


Решения вопроса 0


Ответы на вопрос 2



@d-stream

Вообще хорошим тоном с точки зрения проектирования является отсутствие дубляжа. В данном случае производное из основных данных (остаток как разница поступления и расхода) является дублем.
На такое стоит идти только в угоду реальному повышению производительности.
Собственно расчет свободного остатка — штука быстрая. К примеру даже вычисляемое поле «есть ли свободный запас» при номенклатуре в 1.5 миллиона позиций и в среднем 3-4 уровнях деревьев замен/аналогов «вообще не заметно» в производительности. (MS SQL 4-8 cpu/vcpu 8-16-24 Gb RAM).

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



@tsklab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *