Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранение целых и нецелых чисел - какой тип данных выбрать? / 16 сообщений из 16, страница 1 из 1
06.02.2015, 10:54:35
    #38873116
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
99% данных в столбце - целые числа. Но иногда туда нужно вставить цену. Пробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных.
А мне нужно чтобы целые были целыми , без преобразований, т.к. обработка тысяч строк с приобразованием дело нехорошее.
Пробовал float , но он все округляет.
Пока остановился на double, но ведь он задимает больше места, да и он с двойной точностью, что наверно не очень хорошо.

Подскажите, пожалуйста, какой тип данных выбрать, какие парамтеры задать?
Числа будут храниться целые(от 0 до 999'999) и нецелые(от 0 до 999'999.99).

Для чего это нужно
В таблице хранятся параметры товара: цвет, размер, цена. При этом сами значения этих парамтеров хранятся в отдельной таблице в целях нормализации данных, чтобы не было кучи записей 'красный, красный, красный', да и поиск по цифрам на несколько порядков выше. Однако стоимость думаю нецелесообразно хоанить в отдельной таблице, т.к. она сильно варьируется и я перегружу таблицу значений.
...
Рейтинг: 0 / 0
06.02.2015, 10:59:04
    #38873120
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
То есть вы хотите в одном и том же поле хранить как ссылки на другую сущность, так и значения какой-то конкретной сущности? Тут только один совет можно дать - апстенуне надо так делать.
...
Рейтинг: 0 / 0
06.02.2015, 11:20:30
    #38873155
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
я тоже не понял, что плохого в цене 1.00, я наоборот могу сказать что плохого в цене 1 :)
...
Рейтинг: 0 / 0
06.02.2015, 11:21:18
    #38873157
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermikeПробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных.
Получаешь, блин, ГДЕ? ты что, на консоли сервера работаешь со своими данными? нет, там какая-то программка клиентская присутствует? так вот пусть она и пыхтит, преобразуя полученные от сервера "1,0" обратно в "1", когда это НЕ цена, и добавляет "руб./коп.", когда цена. Это её дело и предназначение - показывать пользователю полученные от SQL-данные в нужном пользователю формате.
...
Рейтинг: 0 / 0
06.02.2015, 11:25:06
    #38873164
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
tanglirне надо так делать.+1

Но если очень хочется, то можно хранить цену в копейках в целочисленном поле.
...
Рейтинг: 0 / 0
06.02.2015, 15:12:58
    #38873456
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermike99% данных в столбце - целые числа. Но иногда туда нужно вставить цену. Пробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных.
А мне нужно чтобы целые были целыми , без преобразований, т.к. обработка тысяч строк с приобразованием дело нехорошее.
Пробовал float , но он все округляет.
Пока остановился на double, но ведь он задимает больше места, да и он с двойной точностью, что наверно не очень хорошо.

Подскажите, пожалуйста, какой тип данных выбрать, какие парамтеры задать?


Ты далеко пойдёшь с таким уровнем понимания проблемы.
Я предвижу, что у тебя будет много приключений, и уйма интересных открытий.
...
Рейтинг: 0 / 0
05.12.2015, 15:19:10
    #39121349
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
miksofttanglirне надо так делать.+1

Но если очень хочется, то можно хранить цену в копейках в целочисленном поле.

Идея хорошая, спасибо.
Не знаю почему тут все так против меня ополчились, я ведь не храню тучную цену для банка, с точностью 100500 знаков после запятой. У меня округленная цена для сайта, где знаков после запятой не более 2х.

Так как некоторые данные целочисленные я их напрямую записываю в характеристики(склад, цена, ...), а там где это длинные строки, дабы не нагружать таблицу, я записываю ссылку на другую таблицу. Соответственно в столбце есть крыжик, который говорит внешние это данные или непосредственные.

В итоге сложные поиски по таблице(с множеством условий и джоинов) работают очень быстро, т.к. я индексирую значения. Если бы в значениях хранились не ссылки а строки varchar длиной 300+, никакого бы индекса не получилось.

Да, если бы точность нужна была бы высокой, без округления, то конечно же я бы хранил цены в отдельной таблице.
...
Рейтинг: 0 / 0
05.12.2015, 15:35:35
    #39121354
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermikeНе знаю почему тут все так против меня ополчились,Потому что вы данные превращаете в кашу, которую будет тяжело поддерживать другому человеку.
supermikeЕсли бы в значениях хранились не ссылки а строки varchar длиной 300+, никакого бы индекса не получилось.почему вы так решили?
Хотя в данном случае я не призываю индексировать строки, но в целом это неверное утверждение.
...
Рейтинг: 0 / 0
05.12.2015, 15:43:16
    #39121357
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
Выбрал в конечном счете DOUBLE тип данных. Сравнивал с INT на таблице с 10 млн записей, разницы не оказалось совсем, что весьма удивило, но факт. Конечно же делал обновление кэша и оптимизацию.

К слову, обращения к третьей таблице, в которой хранятся строки, из sql нет, данные разово вытягиваются и сохраняются в кэш далее при выводе используется подстановка значений из кэша, если это внешние данные.
...
Рейтинг: 0 / 0
05.12.2015, 15:52:14
    #39121360
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
miksoft,

проверял на практике. Собственно изначально структура базы была с хранением данных напрямую, потом как начали выгружать на сайт миллионы товаров возникла эта проблема. А индекс на varchar 300 работает медленней, чем на int 11. И сам индекс получается очень увесистым, там уже появляется проблема нового характера: индекс перестает помещаться в оперативку.

На счет запутанной структуры. А как же сделать правильно? В данном случае все просто: цена и состояние склада хранится напрямую, а прочие данные хранятся в таблице значений. Чем можно заменить эту систему? Я подумал, вариантов придумать не смог - все остальное гораздо сильнее усложняло систему.
...
Рейтинг: 0 / 0
05.12.2015, 16:26:12
    #39121373
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermikeА как же сделать правильно?Не претендую на правильность, но у нас, например, так:
- Цены вынесены в отдельную таблицу. Каждому товару соответствует несколько типов цен, как минимум, розничная продажная и закупочная (есть и другие типы, но сейчас их не помню). Цены разных типов хранятся в разных записях.
- Для характеристик есть справочник характеристик (название, поле для сортировки характеристик и прочие атрибуты характеристики), справочник значений характеристик (значения только строковые, поле для сортировки значений), таблица связей товар-значение характеристики.
...
Рейтинг: 0 / 0
05.12.2015, 19:00:00
    #39121442
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
В общем-то структура такая же, только вы цены вынесли в отдельную таблицу.
А вот на счет "таблица связей товар-значение характеристики. " не очень понял. Т.е. вы в отдельной таблице храните значение принадлежности характеристики к товару? Почему нельзя использовать "справочник значений характеристик", там хранится характеристика и там же id товара, к которому она принадлежит. Или я что-то не понял?
...
Рейтинг: 0 / 0
05.12.2015, 19:20:48
    #39121457
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
а, понял, в общем структура получается абсолютно такая же как у меня, только цены в отдельной таблице.
...
Рейтинг: 0 / 0
05.12.2015, 20:46:21
    #39121485
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermikeПочему нельзя использовать "справочник значений характеристик", там хранится характеристика и там же id товара, к которому она принадлежит.Нет, там не хранится id товара. Связь с товаром в отдельной таблице, чтобы одно значение можно было присвоить произвольному количеству товаров.
...
Рейтинг: 0 / 0
05.12.2015, 23:24:36
    #39121509
supermike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
miksoft,
спасибо за разъеснение
...
Рейтинг: 0 / 0
07.12.2015, 08:39:49
    #39121886
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение целых и нецелых чисел - какой тип данных выбрать?
supermike,
тебе надо понять, что формат вывода значений никак не связан с типом хранения данных и не может его определять.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранение целых и нецелых чисел - какой тип данных выбрать? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]