powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / конвертация валют
25 сообщений из 71, страница 1 из 3
конвертация валют
    #39035220
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу добавить в базу данных конвертацию валюты:
1) все курсы будем хранить по отношению к евро
2) и пересчитывать в любую выбранную валюту
3) схема такая:



4) норм? нет?
...
Рейтинг: 0 / 0
конвертация валют
    #39035221
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
не туда запостила (хотела в проектирование БД), сотрите пожалуйста
...
Рейтинг: 0 / 0
конвертация валют
    #39035229
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цель пересчитать данные по странам в выбранную валюту
прикручивать будем примерно так:

...
Рейтинг: 0 / 0
конвертация валют
    #39035279
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabцель пересчитать данные по странам в выбранную валюту
прикручивать будем примерно так:


для начала определитесь с постановкой задачи. Я так понимаю сейчас вы изливаете в интернет "поток своего сознания". И сами четко не понимаете чего хотите.
...
Рейтинг: 0 / 0
конвертация валют
    #39035287
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabхочу добавить в базу данных конвертацию валюты:
1) все курсы будем хранить по отношению к евро

У Вас могут быть проблемы с точностью при расчете кросс-курсов
mini.weblab3) схема такая:


Не совсем понятно вынесение поля Rate в отдельную таблицу.
...
Рейтинг: 0 / 0
конвертация валют
    #39035291
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabцель пересчитать данные по странам в выбранную валюту
прикручивать будем примерно так:


"Будте проще - к вам потянутся" (с) Карнеги.
Много лишнего, таблицу TimeSeries можно сократить, Таблицу Rate тоже.
Для ускорения можно в таблице Курсов либо две даты держать, либо курсы иметь всегда на каждый день.
...
Рейтинг: 0 / 0
конвертация валют
    #39035294
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

Делайте через валютные пары.
...
Рейтинг: 0 / 0
конвертация валют
    #39035326
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Непонятно, какая выгода выносить TimeSeries и CountryTime в отдельные таблицы?

Я бы сделал так:

country_currency( country , from_date , to_date, currency)
currency_rate( currency , from_date , to_date, rate)

to_date заполняется автоматически, и not null.
...
Рейтинг: 0 / 0
конвертация валют
    #39035331
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик,

А нафига две даты?
...
Рейтинг: 0 / 0
конвертация валют
    #39035338
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильно хранить Rate к Евро. Нужно хранить исходные данные так, как публикует их официальный источник: "За 100 тугриков - 33 еврика, за 10 тугриков - 22 бублика", то есть хранить и 100, и 33, и 10, и 22, и тугрики и еврики и бублики.

А если хранить коэффициент, то при попытке обменять 100 миллионов тугриков получится не ровно 33 миллиона евриков, а с хвостиком. И будут вопросы.

Кроме того, при попытке обмена напрямую бублики на еврики могут быть особые правила - например, считать не через тугрики, а через другую валюту.

И вообще, просто "конвертации валюты" в вакууме не бывает. Мультивалютный учет - отдельная песня со своими тараканами. Погуглите "Курсовые валютные и суммовые разницы".
...
Рейтинг: 0 / 0
конвертация валют
    #39035379
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarГхостик,

А нафига две даты?
если за некоторые даты курсов нет - так быстрее искать нужную.
...
Рейтинг: 0 / 0
конвертация валют
    #39035400
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakdma_caviarГхостик,

А нафига две даты?
если за некоторые даты курсов нет - так быстрее искать нужную.
Так и не надо на конкретную дату искать курс. Ясно что его может не быть. Ищем максимальную имеющуюся дату, которая <= искомой даты, затем ищем курс на эту максимальную дату. Настраиваем индексы и все отлично работает.
...
Рейтинг: 0 / 0
конвертация валют
    #39035435
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

Всего 2 таблицы : валюты и курсы валют. Ребята уже сказали - проще нужно быть, а то потом в вашем бардаке никто разбираться не будет.
...
Рейтинг: 0 / 0
конвертация валют
    #39035440
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dma_caviarТак и не надо на конкретную дату искать курс. Ясно что его может не быть. Ищем максимальную имеющуюся дату, которая <= искомой даты, затем ищем курс на эту максимальную дату. Настраиваем индексы и все отлично работает.Один between и писать гораздо короче, и для СУБД проще выполнять.
...
Рейтинг: 0 / 0
конвертация валют
    #39035455
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостикdma_caviarТак и не надо на конкретную дату искать курс. Ясно что его может не быть. Ищем максимальную имеющуюся дату, которая <= искомой даты, затем ищем курс на эту максимальную дату. Настраиваем индексы и все отлично работает.Один between и писать гораздо короче, и для СУБД проще выполнять.

Вставлять новый курс зато дороже, и коллизии в данных возможны. Схема с двумя датами имхо осмысленна для вьюшки, но не для исходной таблицы.
...
Рейтинг: 0 / 0
конвертация валют
    #39035459
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостикdma_caviarТак и не надо на конкретную дату искать курс. Ясно что его может не быть. Ищем максимальную имеющуюся дату, которая <= искомой даты, затем ищем курс на эту максимальную дату. Настраиваем индексы и все отлично работает.Один between и писать гораздо короче, и для СУБД проще выполнять.
Представьте, если каждый кодер будет городить в таблице кучу полей чтобы лично ему было проще жить из-за своих сложностей с sql.
...
Рейтинг: 0 / 0
конвертация валют
    #39035481
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Кот Матроскин:
Делая две даты во view а не таблице, мы не улучшаем производительность запросов. И, конечно, денормализация имеет свою цену, это и код поддержки правильности дублирования данных, и удорожание модификации данных. И, в данным конкретном случае, я считаю что эта цена не чрезмерна.

dma_caviarиз-за своих сложностей с sql.Сложностей с sql нет, но зачем делать сложнее когда можно сделать проще?
...
Рейтинг: 0 / 0
конвертация валют
    #39035494
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик2 Кот Матроскин:
Делая две даты во view а не таблице, мы не улучшаем производительность запросов.

Если вьюшка материализованная - то улучшает (тоже возникает удорожание модификаций, конечно - но тут уж либо дудочка, либо кувшинчик)
Т.е. любая вьюшка закрывает Ваше "between писать проще" + материализованная закрывает и "для СУБД проще выполнять", если это действительно нужно
...
Рейтинг: 0 / 0
конвертация валют
    #39035507
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
слишком сложно, достаточно двух таблиц -
справочник валют (ид, код, наименование, страна)
таблица: ид, ид валюты1, ид валюты2, дата/время, курс
...
Рейтинг: 0 / 0
конвертация валют
    #39035534
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинГхостик2 Кот Матроскин:
Делая две даты во view а не таблице, мы не улучшаем производительность запросов.

Если вьюшка материализованная - то улучшает (тоже возникает удорожание модификаций, конечно - но тут уж либо дудочка, либо кувшинчик)
Т.е. любая вьюшка закрывает Ваше "between писать проще" + материализованная закрывает и "для СУБД проще выполнять", если это действительно нужно
вместо одного поля добавлять цельную мат.вью. !!!!!!
Это лажа.
...
Рейтинг: 0 / 0
конвертация валют
    #39035537
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостикно зачем делать сложнее когда можно сделать проще?
Сложнее чего, вот этого?))

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select Rate
from Rates
where
	Currency1 = ... and
	Currency2 = ... and
	Date = (
		select max(Date)
		from Rates
		where
			Currency1 = ... and
			Currency2 = ... and
			Date <= '2015-08-25'
	)



или

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select Rate
from Rates
where
	Currency1 = ... and
	Currency2 = ... and
	Date = (
		select top 1 Date
		from Rates
		where
			Currency1 = ... and
			Currency2 = ... and
			Date <= '2015-08-25'
		order by Date desc
	)
...
Рейтинг: 0 / 0
конвертация валют
    #39035546
Shr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dma_caviarГхостикно зачем делать сложнее когда можно сделать проще?
Сложнее чего, вот этого?))

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select Rate
from Rates
where
	Currency1 = ... and
	Currency2 = ... and
	Date = (
		select max(Date)
		from Rates
		where
			Currency1 = ... and
			Currency2 = ... and
			Date <= '2015-08-25'
	)


Да, этого:
Код: sql
1.
2.
3.
4.
5.
6.
select Rate
from Rates
where
	Currency1 = ... and
	Currency2 = ... and
	'2015-08-25' between FromDate and ToDate


И когда такие запросы пишутся сотнями для десятка аналогичных таблиц с историческими данными, разница заметна.
...
Рейтинг: 0 / 0
конвертация валют
    #39035549
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shr,

А где код, который обновляет вторую дату? Желательно с контолем на пересечение.
...
Рейтинг: 0 / 0
конвертация валют
    #39035554
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShrИ когда такие запросы пишутся сотнями для десятка аналогичных таблиц с историческими данными, разница заметна.
Каких таблиц... курсы как правило юзаются в виде скалярной функции, типа ПолучитьКурсНаДату и все эти сотни просто юзают эту функцию.
...
Рейтинг: 0 / 0
конвертация валют
    #39035558
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakКот Матроскинпропущено...

Если вьюшка материализованная - то улучшает (тоже возникает удорожание модификаций, конечно - но тут уж либо дудочка, либо кувшинчик)
Т.е. любая вьюшка закрывает Ваше "between писать проще" + материализованная закрывает и "для СУБД проще выполнять", если это действительно нужно
вместо одного поля добавлять цельную мат.вью. !!!!!!
Это лажа.

Да, вместо одного поля добавить цельную мат.вью.
Вопрос "чем это лучше?" - для самостоятельного изучения.
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / конвертация валют
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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