设计和存储货币汇率交叉表

Mar*_*cci 6 mysql sql database rdbms currency

我需要在我的案例中使用RDBMS,MySql 存储货币汇率交叉表的值(例如http://www.exchangerates.org.uk/currency/currency-exchange-rates-table.html).

用户将每天更新数字,系统将存储不同的版本.

我想知道你将如何设计表格或者你是否想要模型.

当然,最简单的方法是使用带有from,to和values列的表

from: char(3)
to: char(3)
value: decimal(6,4)
inverse_value: decimal(6,4)
Run Code Online (Sandbox Code Playgroud)

但我很想知道是否有其他(更好的)解决方案.

非常感谢.

编辑

如果不清楚我会道歉,但我对性能和可扩展性特别感兴趣.

保持value/inverse_value结构并给出90种货币,货币兑换交叉表每天需要4,050条记​​录.

如果每天创建一个新版本,在一年内将有1,478,250个记录,并且查询可能开始受到影响.

我已经实现了这个表,它运行得很好,渲染交叉表非常快,我很满意.

我只是想知道是否有更好的方法来实现这一点.

Mik*_*ant 4

这看起来是一个好的开始,我还会添加一个日期字段(如果您只每天更新这些值,而不是日期时间字段)。所以也许是这样的:

currency_code_from: char(3)
currency_code_to: char(3)
conversion_value: decimal(6,4)
inverse_conversion_value: decimal(6,4)
effective_date: date()
Run Code Online (Sandbox Code Playgroud)

我不确定您计划查询表的各种方式是什么,因为这将决定您的索引要求,但我可能会在currency_code_from、currency_code_to和effective_date字段中使用复合主键,然后根据您的特定需要添加任何索引查询。

然后,您可能需要一个额外的表来存储货币名称和货币符号(如果需要显示)(如果您想使用它,也可能链接到国旗图像)

currency_code: char(3)
currency_name: varchar(50)
currency_symbol: char(3)
currency_image: varchar(100)
Run Code Online (Sandbox Code Playgroud)

该表的主键是currency_code。