powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить цены
24 сообщений из 24, страница 1 из 1
Как лучше хранить цены
    #32142114
ablievn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Меня интересует стоит ли хранить цену на товар в каждой валюте, или держать все в одной основной, а при движениях пересчитывать в нужную валюту. Что было бы универсальнее?

И еще: допустим мне помимо курсов валют, еще нужны кросс-курсы, как организовать эти таблицы?
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32142151
ablievn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эге-гей, здесь люди бывают???
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32142223
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
Бывают.

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

А курсы они всегда кросс. Только иногда базовая валюта подразумевается (и не всегда она основная).
Структура:
ТипКурса Валюта БазоваяВалюта ДатаС ДатаПо ЕдиницВалюты ЕдиницБазовой
ТипКурса - "ЦБ", "London Fix AM", "London Fix PM", "Внутрифирменный"...
ДатаС, ДатаПо задают диапазон дат, когда было действительно соотношение ЕдиницВалюты = ЕдиницБазовой.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32142231
ablievn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про исходную валюту не понял. Имеется ввиду одна "настоящая" балансовая валюта?? или как?

За кросс-курсы спасибо. А зачем две даты, чем одна ДатаС не устравает?
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32142352
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
Про исходную валюту не понял. Имеется ввиду одна "настоящая" балансовая валюта?? или как?

Ну в какой валюте устанавливают цену пользователи ? Обычно это та, которая не требует изменения при изменениях курса. По ситуации в России это или рубли или доллары (последнее время еще и евро). Для разных товаров может быть разной.

За кросс-курсы спасибо. А зачем две даты, чем одна ДатаС не устравает?

Можно и одну, но писать запросы курса с друмя датами легче:
Дата>=ДатаС и Дата<ДатаПо
А с одной датой придется использовать подзапрос:
Дата = (select max(ДатаС) from Курс where ДатаC<Дата и ......)

Пользователю ДатаПо можно не показывать, чтоб дурацких вопросов не задавали.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143027
Volodja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, что вклиниваюсь.
А в каком типе данных лучше хранить денежные единицы. Где-то попадалась информация, что money не очень хорошо для этих целей. Конкретных аргументов не помню.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143050
ablievn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/topic/5123
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143160
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про валюты.

1) Хранить просто и универсально и нужно сумму всегда в двух полях

поле первое - Amount
Поле второе - Ccy или Currency как назвать.

Есть у валют еще такое как число значащих цифр после запятой.
Есть одна извращенная валюта у которой число знаков после запятой - 4.

В формачка поидее надо при смене валюты менять формат. Но от этого можно и отказаться.

ПРи хранении суммы, как показала практика, надо выделять аксимальное число знаков после запятой. Если это Oracle, то тип number без всяких там
number(10,30)

не знаю вашу задачу и предметную область. Но у нас сумма(остаток) еще может быть и отрицательным. потоэтому число должно быть знаковое.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143174
vov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vov
Гость
2 Oracle_Developer

Есть у валют еще такое как число значащих цифр после запятой.
Есть одна извращенная валюта у которой число знаков после запятой - 4.

ПРи хранении суммы, как показала практика, надо выделять аксимальное число знаков после запятой


Так может для универсальности - все в копейках ? (центах и т.д.)
Никаких проблем с точностью, округлением
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143686
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 vov
>Так может для универсальности - все в копейках ? (центах и т.д.)
Никаких проблем с точностью, округлением

Да, было бы здорово, но не проходит к сожалению. Эти заразы заказчики некоторые цены в с точностью до десятых копейки (цента, пр.) измеряют. Горючее например.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143689
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зранить надо все в обной базовой валюте и конвертировать в правильную при... возможен вариант когда необходимо хранить в исходной валюте (мой случай) - храню денюжку и ID валюты. все счастливы. :)
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143790
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 c127

Да, было бы здорово, но не проходит к сожалению. Эти заразы заказчики некоторые цены в с точностью до десятых копейки (цента, пр.) измеряют. Горючее например.


До десятой копейки за тонну ?

А вообще, цена и курс это не деньги, это их отношение. И у них может быть свое представление. См. пример таблицы курсов. Там пофигу как представить деньги - с дробной частью или без.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143830
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где проблема с округлением возникает?

1.52
+
1.20
т.е с плюсом
проблем нету
используя
минус
проблем нету.
проблемы разве что при других операциях

100/30 . А тут что в копейках что с копейками . везде надо округлять
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32143838
vov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vov
Гость
2 Oracle_Developer

А где проблема с округлением возникает?
...
Везде надо округлять


Конечно, если аккуратно все округлять, то проблем не будет.
К сожалению очень часто округлить забывают и оставляют все 10 (или сколько из там) десятичных знаков.
А для целых чисел не забудешь :)
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144113
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если забывают, то поругать можно таких пограммистов.

Кто забыл округлить, тот ( если хранить в копейках) забудет и в форме поставить такую маску, что бы не в копейках вводить не
110 копеек, а 1.10

Так что в копейках преимуществ никакаих нет.

А как уже говорили, с округлением всегда проблемы будут.

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

А есть еще округление в тысячах ( тоже проблемы будут при любом подходе :-).

Итого . Только на мой взгляд
1) Хранить лучше в number. Дробную часть не ограничивая.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144156
vov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vov
Гость
Ну если забывают, то поругать можно таких пограммистов.

Лучше в угол поставить :)

Еще один довод в пользу целых чисел - они в программе будут видны как целые числа,
а dec(30,10) отобразятся в строки. Неудобно.

Хотя и удобней плавающих - у нас стоит банковская система использующая плавающие для денег. sum() по деньгам иногда дает удивительные результаты !


Вопрос несколько в сторону. Как народ выводит на экран деньги в программе ?
Регулирует по валюте или всегда заданное число десятичных знаков ?
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144175
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Oracle_Developer

...правила округления определяються нормативными актами ( законами).

Если несложно, киньте ссылки на эти акты. Или хотя бы их полные названия. Спасибо заранее... :о)
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144258
Oracle_Developer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЦЕНТРАЛЬНЫЙ БАНК РОССИЙСКОЙ ФЕДЕРАЦИИ

26 июня 1998 г. N 39-П

ПОЛОЖЕНИЕ
О ПОРЯДКЕ НАЧИСЛЕНИЯ ПРОЦЕНТОВ
ПО ОПЕРАЦИЯМ, СВЯЗАННЫМ С ПРИВЛЕЧЕНИЕМ И РАЗМЕЩЕНИЕМ
ДЕНЕЖНЫХ СРЕДСТВ БАНКАМИ, И ОТРАЖЕНИЯ УКАЗАННЫХ
ОПЕРАЦИЙ ПО СЧЕТАМ БУХГАЛТЕРСКОГО УЧЕТА


Регламентирует как проводить начисления . Например есть 2 возможности
1) Начислить проценты за все дни и потом округлить
2) Начислять при расчете проценты каждый день и каждый день их округлять.

Вопрос несколько в сторону. Как народ выводит на экран деньги в программе ?
Регулирует по валюте или всегда заданное число десятичных знаков

Мы регулируем по валюте, но наверное можно и не ругулировать ( если вы точно уверены, что у вас не встреиться той засранской :-) Валюты у которой число знаков после запятой не 2)
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144310
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
Я не регулирую и всегда использую 4 знака.
Диковато выглядит для рублей, но не хочется заморачиваться.
А валюты у меня имеют дробные части от 0 и до 3 (реально).
Четыре знака пока не встречалось.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144400
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за информацию. Покопаюсь попозже подробнее. :о)

А вот этот момент мне нифига не понятен. Может объяснить кто???....

2) Начислять при расчете проценты каждый день и каждый день их округлять


Пусть у меня в банке на счете лежит 10 долларов. Под 10% годовых. Простая арифметика показывает, что через год я буду иметь 1 доллар процентов.

Будем начислять проценты каждый день (PPD = Percent Per Day):
PPD=$10.00*(.1/365)=$0.00274... = $0.00 per day
SUM=$10.00+PPD

Имеем:
1й день: $10+$0.00 = $10.00
2й день: $10+$0.00 = $10.00
...
365й день: $10+$0.00 = $10.00

Получается, что вместо своего законного доллара к концу сезона я получу кукиш.

Так где собака-то порылась???
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144414
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Циничный Кот
Но если положишь 19$, то вместо законных 1.9$ получишь 3.65 :-)
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144447
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вечная зубная боль. Хранит можно по всякому, но показывать только так, как записано в законодательстве. В РФ можно показывать с точностью до копеек. Но поскольку у нас никто особо не следит за соблюдением законов, в счет фактуре можно написать

1000 Блямбиков. на сумму 1 руб. цена за единицу - 0.1 коп.
Этот и аналогичные варианты у меня прокатывают .

Вопросы - к лечащим врачам нашего министра по налогам и сборам.
=======
Тип Currency (Money) с 6 знаками после запятой, является теоретически правильным (купить 0.777 единиц по цене 0.77 денег). Но не катит в реальных расчетах.
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144499
с127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 x

>До десятой копейки за тонну ?

До десятой цента (пенса) за литр (галлон).

>А вообще, цена и курс это не деньги, это их отношение.

Что-то я мысль потерял, цена это отношение чего?
...
Рейтинг: 0 / 0
Как лучше хранить цены
    #32144810
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 с127

Что-то я мысль потерял, цена это отношение чего?

Денег к блямбликам
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить цены
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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