2011-07-18 112 views
2

我有一个包含汇率的mysql数据库表。目前它是这样定义的:数据库架构问题

date | currency | rate 

这些费率使用一些基本货币。现在我还需要另存基准货币的利率。创建一个单独的表格还是使用一个表格更好?每种方法的优点和缺点是什么?

+0

你可以包含一些将在表中的示例数据吗? – Dirk

+0

有趣的问题,因为逻辑表明,应该有一个有效的方式来存储所有数据,而不必诉诸重复,因为汇率双向工作。 +1。 –

+0

@Dirk:'2011-07-20 | AUD | 30.0056 || 2011-07-20 | CAD | 29.4461' – planetp

回答

2

您可以添加新列currency_from这是启动货币和兑换货币,以currency_to这将是货币更换成

+0

这个优点是您的货币转换器不需要跟踪不同转换类型的不同表名称,并且您只需执行一次转换而不是2次,如果您决定保持原状并转换为已知货币然后转换为所需的货币。 – plague

2

你确定你需要存储这两个基础货币?如果你知道从美元到欧元的汇率,以及欧元到英镑的汇率,你可以从美元到英镑。

如果您必须同时存储两种基本费率,i_forget的答案显然是正确的 - 您希望您的货币转换代码相同,而不必根据您使用的货币来替换表格名称 - 如果必须到2种货币,你必须考虑到你必须去200种货币的可能性。

+0

+1同意。不知道为什么你需要以第二基础货币@planetp存储利率。如果您有一些来源以不同的基础货币提供汇率,请考虑将其转换为*您的*基础,然后再坚持它们。 –

+1

-1不同意。货币转换不是温度转换。您需要为每个日期或时间单位存储每种货币对的汇率。 – TomL

+0

@TomL - 这是一个问题,而不是一个答案。如果您正在追踪历史交易,则确实需要存储每种货币的汇率;如果你只是在计算假设值,你可能不需要它。 –