1

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

例如:货币表

  • ID INT
  • base_currency_code VARCHAR
  • 日期日期
  • 十进制美元
  • 英镑十进制
  • 欧元十进制

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

由于我找不到与我类似的实现,而且我读过的一篇文章说另一种实现是他在他工作的金融公司的做法,我认为另一个比我的更好!

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

4

1 回答 1

5

你想要这样的表:

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)
);
于 2018-01-14T19:09:35.730 回答