数据库中的货币兑换

Ste*_*son 2 sql database-design currency-exchange-rates

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

例如:货币表

  • id 整数
  • 基本货币代码 VARCHAR
  • 日期 日期
  • 美元十进制
  • 英镑十进制
  • 欧元十进制

我在网上搜索了如何在数据库中实现货币兑换表,在我查看过的所有地方都有一个表currency_exchange,其中包含列base_currency、non_base_currency(兑换货币)、汇率和日期。

由于我找不到与我的类似的实现,而且我读过的一篇文章说另一个实现是他工作的金融公司的实现方式,所以我认为另一个优于我的!

我只是不明白为什么。有人可以解释一下为什么另一个更好吗?

Gor*_*off 7

你想要这样的表:

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)
);
Run Code Online (Sandbox Code Playgroud)