数据库中的货币兑换

时间:2018-01-14 18:30:52

标签: sql database-design currency-exchange-rates

我正在设计一个包含货币汇率的关系数据库。我的第一个直觉是有一个货币表,列出所有货币,并将每种其他货币的汇率保持为属性。

例: 货币表

  • id INT
  • base_currency_code VARCHAR
  • 日期DATE
  • USD DECIMAL
  • GBP DECIMAL
  • EUR DECIMAL

我已经在线搜索了如何在数据库中实现货币兑换表,而且我所看到的每个地方都有一个表currency_exchange,其中包含base_currency,non_base_currency(to currency),rate和date。

由于我无法找到类似于我的实现,因为我读过的一篇文章说其他实现是他在他工作的金融公司如何完成的,我认为另一个优于矿!

我只是不明白为什么。有人可以解释为什么对方更好吗?

1 个答案:

答案 0 :(得分:2)

你想要这样的表:

create table Currencies (
    CurrencyId int primary key,
    ISO_Code varchar(3),
    Name varchar(255)
);

create table CurrencyExchangerate (
    CurrencyExchangerateId int primary key,
    FromCurrencyId int not null references Currencies(CurrencyId),
    ToCurrencyId int not null references Currencies(CurrencyId),
    RateDate date not null,
    ExchangeRate decimal(20, 10),
    constraint unq_currencyexchangerate_3 unique (FromCurrencyId, ToCurrencyId, RateDate)
);