货币兑换数据库架构

时间:2013-07-19 18:30:15

标签: mysql database postgresql database-design

我正在尝试为货币兑换创建数据库架构。我希望每30秒获得有关各种货币的信息。这是我想到的架构。

Column                      SQL Type
FROMCURRENCY (PK)           varchar
TOCURRENCY (PK)             varchar
BUYRATE                     money
SELLRATE                    money
DATEANDTIME                 timestamp

所有信息都在一张表中。我的架构设计是否正确?有关我需要改变的任何建议吗?

2 个答案:

答案 0 :(得分:2)

由于您所针对的国家和金融市场,设计货币兑换模块需要更多信息 例如,在某些国家,货币兑换受到中央银行监管,价格类型将更加扩展,就像特定交易所类型的转换率(除卖出率和买入率)一样。在设计之前需要研究商业卷 同样在您的设计中(在夸张的样本中),有200种有效货币,用户每天必须输入200 * 200数据!

顺便说一句,我认为你需要定义一些表格:
Currency_Table:货币定义的货币表,详细信息,如名称,快速代码,......精确度(显示可接受的精度数,并在计算和<时将应用于货币应用strong>舍入 在货币兑换环境中(至少我已经开展过工作),有一个基本概念叫做 Base-Currency ,它通常是你的应用程序定制的国家的货币(某些应用程序使用USD作为嵌入式基础货币) Base-Currency是表中定义的具有特定属性的货币。基础货币将是所有费率比较和计算的根本要素。

Rate_Type_Table:包含卖出,买入,转换,...​​费率类型(如果只有卖出和买入,您可以忽略该表,只需在费率表中添加两列,就像您在问题上所做的那样)<登记/>
Daily_Rate-Table:货币汇率的每日数据条目

ID (PK)
Currency_Key(FK of Currency Table)
Rate_Type_Key(FK of Rate_Type Table)
Amount (decimal)
Date

表格中的任何记录都会显示与基础货币的一个区块相比的货币值
对于货币对货币汇率,您需要从源货币到基础货币计算,然后从基础货币到目标货币计算 Rounding将成为Exchange模块设计和实现的关键人物。

答案 1 :(得分:1)

请注意:

  1. 关于货币格式有ISO_4217。请注意,货币在点之后具有不同的可能数字。优先存储格式为整数,对应货币最小除法的计数。
  2. Excange是金融交易。请查看示例MTGox public api。我认为它有关于您希望在表中进行的交易的确切信息。最小值为:transaction_id,currency1,currency2,exchange direction,customer_id,merchant_id,timestamp