Инфляция и описание полей в базах данных

Недавно к нам в тех. поддержку обратился клиент с интересной проблемой: не удается добавить один из товаров в продажу. Со всеми остальными товарами в каталоге всё хорошо, а вот один конкретный жутко вредным оказался — не добавляется и всё тут. Посмотрели-посмотрели мы и выяснили, в чем дело. Оказывается, этот товар просто напросто… слишком дорогой.

Исторически в нашей системе в базе данных все поля, связанные с ценой товара, имеют описание DOUBLE(10,4). Обычно вопрос вызывают четыре знака после запятой: зачем такое излишество, почему не ограничиться двумя? В самом деле, в реальном мире мы можем иметь дело разве что с копейками, а не с полкопейками или сотыми долями копеек. Но помимо этого в том же самом реальном мире мы постоянно сталкиваемся с двумя типами цен: цена с НДС и цена без НДС. Вот именно для более точного перевода одних цен в другие и понадобились и еще два разряда (это если вкратце, а вообще о проблемах округления при выделении НДС надо писать отдельную статью).

А вот тот факт, что цена товара в системе оказалась ограничена сверху «всего-навсего» одним миллионом рублей, до недавнего времени никого из клиентов не смущал. Однако всё бывает в первый раз, и вот — разрядов не хватило. Поменяли описание поля на DOUBLE(12,4) — добавился товар как миленький.

Подчеркну: речь идет об ограничении только на цену единицы товара, а не на сумму по продаже. Наша CRM предназначена для предприятий малого и среднего бизнеса, и даже в том случае, когда обороты предприятий значительны, достигаются они как правило за счет объема проданного, а не за счет миллионных цен товаров. Если же закладывать для всех полей заведомо избыточный диапазон значений, то это приводит к неэффективному расходованию памяти при хранении данных.

Сотрудники нашей компании достаточно молоды. Однако, думаю, не мне одной памятны 90-е годы прошлого столетия, когда инфляция достигала 2500% в год, и ценники с 6 нулями относились к таким обыденным вещам, как, скажем, телевизор или дубленка. Представляете, что будет, если такое повторится? Это ж в скольких базах скольких таблицах придется описание полей править!

Уважаемые Президент и Премьер! От имени программистов России прошу — придержите рост цен на разумном уровне. А то у нас работы хватает и без проблем выхода цены товара за границы описанного диапазона.

3 комментария to “Инфляция и описание полей в базах данных”

  1. Ekaterina yandex.ru Екатерина Николаева:

    Последний абзац мне понравился больше всего 😉
    Надо чтоб так представители каждой профессии написали.

  2. facebook.com Леонид Шумихин:

    Проблему с «лишними» нулями, как известно, можно решить и не сдерживая рост цен: деноминацией валюты 🙂

  3. Евгений Курочкин:

    А есть решения без ограничений? Чтобы на будущее сразу 🙂

Коментарии