delphinpro
@delphinpro
frontend developer

Как лучше организовать хранение курсов валют?

Как лучше организовать хранение курсов валют, чтобы не возникло каких-то проблем?
Требуются все мировые валюты. На первом этапе одна базовая - USD, впоследствии понадобятся котировки рандомных пар. Обновление - раз в сутки.
Первое - это формат данных. Почитал, советуют использовать decimal(20,6). Это правильно?

Второе - организация таблиц
Я вижу два варианта.
1. Одна таблица
id | timestamp | source | и туева хуча столбиков под каждую валюту


2. Две таблицы с отношением One-to-Many

id | timestamp

relation_id | source | currency | value

Первый варик попроще, второй, вроде как гибче.
Как вообще это делают?
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
DevMan
@DevMan Куратор тега Проектирование баз данных
если Выборки будут "взять свежую (последнюю, сегодняшнюю) котировку USD к тугрику", зачем вам вообще заморачиваться с классической БД?

получили свежие котировки, положили в какой-нибудь редис и пользуете. повторять каждый день.

если нужна история, то 2 вариант.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
6 знаков после запятой может оказаться мало, в теории, я бы взял 8 на всякий случай
По организации таблиц для начала надо понять, как эти таблицы будут использоваться.
Если будет выборка типа "выбрать котировки по всем валютам на дату", то дата должна быть ключом (или индексом), тогда так:
ДАТА / туева хуча столбиков

Если выборка типа "выбрать все котировки по монгольскому тугрику", то ключом (индексом) должен быть код валюты.
КОД ВАЛЮТЫ / Дата / Курс

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы