|
|
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
99% данных в столбце - целые числа. Но иногда туда нужно вставить цену. Пробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных. А мне нужно чтобы целые были целыми , без преобразований, т.к. обработка тысяч строк с приобразованием дело нехорошее. Пробовал float , но он все округляет. Пока остановился на double, но ведь он задимает больше места, да и он с двойной точностью, что наверно не очень хорошо. Подскажите, пожалуйста, какой тип данных выбрать, какие парамтеры задать? Числа будут храниться целые(от 0 до 999'999) и нецелые(от 0 до 999'999.99). Для чего это нужно В таблице хранятся параметры товара: цвет, размер, цена. При этом сами значения этих парамтеров хранятся в отдельной таблице в целях нормализации данных, чтобы не было кучи записей 'красный, красный, красный', да и поиск по цифрам на несколько порядков выше. Однако стоимость думаю нецелесообразно хоанить в отдельной таблице, т.к. она сильно варьируется и я перегружу таблицу значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 10:54:35 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
То есть вы хотите в одном и том же поле хранить как ссылки на другую сущность, так и значения какой-то конкретной сущности? Тут только один совет можно дать - апстенуне надо так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 10:59:04 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
я тоже не понял, что плохого в цене 1.00, я наоборот могу сказать что плохого в цене 1 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 11:20:30 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
supermikeПробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных. Получаешь, блин, ГДЕ? ты что, на консоли сервера работаешь со своими данными? нет, там какая-то программка клиентская присутствует? так вот пусть она и пыхтит, преобразуя полученные от сервера "1,0" обратно в "1", когда это НЕ цена, и добавляет "руб./коп.", когда цена. Это её дело и предназначение - показывать пользователю полученные от SQL-данные в нужном пользователю формате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 11:21:18 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
tanglirне надо так делать.+1 Но если очень хочется, то можно хранить цену в копейках в целочисленном поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 11:25:06 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
supermike99% данных в столбце - целые числа. Но иногда туда нужно вставить цену. Пробовал выбирать тип decimal , но тогда ко всем целым числам прибавляется '.0', т.е. добавил '1', а в выводе вылучаю '1.0'. Ну и соответственно нулей столько, сколько указано в параметре типа данных. А мне нужно чтобы целые были целыми , без преобразований, т.к. обработка тысяч строк с приобразованием дело нехорошее. Пробовал float , но он все округляет. Пока остановился на double, но ведь он задимает больше места, да и он с двойной точностью, что наверно не очень хорошо. Подскажите, пожалуйста, какой тип данных выбрать, какие парамтеры задать? Ты далеко пойдёшь с таким уровнем понимания проблемы. Я предвижу, что у тебя будет много приключений, и уйма интересных открытий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2015, 15:12:58 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
miksofttanglirне надо так делать.+1 Но если очень хочется, то можно хранить цену в копейках в целочисленном поле. Идея хорошая, спасибо. Не знаю почему тут все так против меня ополчились, я ведь не храню тучную цену для банка, с точностью 100500 знаков после запятой. У меня округленная цена для сайта, где знаков после запятой не более 2х. Так как некоторые данные целочисленные я их напрямую записываю в характеристики(склад, цена, ...), а там где это длинные строки, дабы не нагружать таблицу, я записываю ссылку на другую таблицу. Соответственно в столбце есть крыжик, который говорит внешние это данные или непосредственные. В итоге сложные поиски по таблице(с множеством условий и джоинов) работают очень быстро, т.к. я индексирую значения. Если бы в значениях хранились не ссылки а строки varchar длиной 300+, никакого бы индекса не получилось. Да, если бы точность нужна была бы высокой, без округления, то конечно же я бы хранил цены в отдельной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 15:19:10 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
supermikeНе знаю почему тут все так против меня ополчились,Потому что вы данные превращаете в кашу, которую будет тяжело поддерживать другому человеку. supermikeЕсли бы в значениях хранились не ссылки а строки varchar длиной 300+, никакого бы индекса не получилось.почему вы так решили? Хотя в данном случае я не призываю индексировать строки, но в целом это неверное утверждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 15:35:35 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
Выбрал в конечном счете DOUBLE тип данных. Сравнивал с INT на таблице с 10 млн записей, разницы не оказалось совсем, что весьма удивило, но факт. Конечно же делал обновление кэша и оптимизацию. К слову, обращения к третьей таблице, в которой хранятся строки, из sql нет, данные разово вытягиваются и сохраняются в кэш далее при выводе используется подстановка значений из кэша, если это внешние данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 15:43:16 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
miksoft, проверял на практике. Собственно изначально структура базы была с хранением данных напрямую, потом как начали выгружать на сайт миллионы товаров возникла эта проблема. А индекс на varchar 300 работает медленней, чем на int 11. И сам индекс получается очень увесистым, там уже появляется проблема нового характера: индекс перестает помещаться в оперативку. На счет запутанной структуры. А как же сделать правильно? В данном случае все просто: цена и состояние склада хранится напрямую, а прочие данные хранятся в таблице значений. Чем можно заменить эту систему? Я подумал, вариантов придумать не смог - все остальное гораздо сильнее усложняло систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 15:52:14 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
supermikeА как же сделать правильно?Не претендую на правильность, но у нас, например, так: - Цены вынесены в отдельную таблицу. Каждому товару соответствует несколько типов цен, как минимум, розничная продажная и закупочная (есть и другие типы, но сейчас их не помню). Цены разных типов хранятся в разных записях. - Для характеристик есть справочник характеристик (название, поле для сортировки характеристик и прочие атрибуты характеристики), справочник значений характеристик (значения только строковые, поле для сортировки значений), таблица связей товар-значение характеристики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 16:26:12 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
В общем-то структура такая же, только вы цены вынесли в отдельную таблицу. А вот на счет "таблица связей товар-значение характеристики. " не очень понял. Т.е. вы в отдельной таблице храните значение принадлежности характеристики к товару? Почему нельзя использовать "справочник значений характеристик", там хранится характеристика и там же id товара, к которому она принадлежит. Или я что-то не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 19:00:00 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
а, понял, в общем структура получается абсолютно такая же как у меня, только цены в отдельной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 19:20:48 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
supermikeПочему нельзя использовать "справочник значений характеристик", там хранится характеристика и там же id товара, к которому она принадлежит.Нет, там не хранится id товара. Связь с товаром в отдельной таблице, чтобы одно значение можно было присвоить произвольному количеству товаров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 20:46:21 |
|
||
|
Хранение целых и нецелых чисел - какой тип данных выбрать?
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо за разъеснение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 23:24:36 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38873456&tid=1832404]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
91ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 423ms |

| 0 / 0 |
