#база_данных #mysql
Один "товарищ" при создании таблицы в БД использовал поле типа DOUBLE для хранения числа в диапазоне от-100 до 1000 (Макс. 2000), т.е. остатка товара на складе не очень большого магазина, для чисел явно являющихся целыми. Я считаю, что это просто проявление полной безграмотности человека в представлении формата чисел. Или я не прав? Разъясните, так как данный человек в свою очередь заявляет о моей некомпетентности. Уточнение по вопросу: DOUBLE точность до 15 знаков после запятой. Товар точно не весовой. Даже весов никогда небыло в магазине. Это авто-запчасти.
Ответы
Ответ 1
Не вижу никакой особенной трагедии в том, что был использован формат DOUBLE для хранения целых чисел. Ну занимает чуток больше пространства - ну и что? Вместо 2 байт - будет 8 байт, подумаешь. Это раньше когда оперативная память 8 кбайт было много, а емкость диска мегабайт рассматривалась как роскошь тогда можно было чего-то оптимизировать. Зато появляется некая универсальность, кто его знает вдруг ваш магазинчик через пару-тройку лет начнет торговать моторным маслом в рОзлив. Хороший прогер должен на уровне архитектуры предусмотреть возможные вывихи в будущем. В общем это не является преступлением, равно как и не является показателем квалификации. Лучше посмотрите на нормальность данных - если они плохо нормализованы - это действительно преступление.Ответ 2
Я когда интересовался, как хранить стоимость услуг, во float, или decimal, папки советовали хранить в decimal, ибо храня инфу во float у бухгалтерии внезапно могут вопросы возникнуть. Типа, там точность вычисления может быть неправильной, если суммы большие будут, и Я с такими проблемами однажды как раз и столкнулся. Времени разбираться не было, просто последовал их совету, с тех пор проблем не имею в этом планеОтвет 3
Можно-то оно можно, но не забывайте, что 123456789123456789123456789 будет представлено как 1.23456789123456791337762816 × 10²⁶. 640 килобайт^W^W 53 бита мантиссы, конечно, хватает всем, но, как показывает практика, не навечно. Когда-нибудь да вылезете за пределы точности и не заметите. Поэтому лучше возьмите decimal aka numeric. От вас не убудет, зато работать будет без тонкостей.Ответ 4
Единственное объяснение -это в чем измеряются остатки и как продается товар. К примеру, сахар измеряется в кг, а продать могут и 0,5 кг. Хорошо. Допустим, занялись продажей масла (в бочках) на розлив, к примеру, пришло 200 л, продали 0.5. Или, к примеру, занялись они продажей проводов для установки звука. Приходят они тоже метрами, а продать могут метр с лишним, или 0,5 метров. По поводу точности - так там настроить можно количество знаков после запятой. Вообще, скорее всего, он сделал так специально, так как никто с уверенностью 100% ему не смог сказать что товар будет измерятся только штуками, а не литрами к примеру.
Комментариев нет:
Отправить комментарий