mysql - 货币兑换数据库模式

标签 mysql database postgresql database-design

<分区>

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

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

所有信息都在一张表中。我的模式设计是否走在正确的轨道上?关于我需要更改的内容有什么建议吗?

最佳答案

由于您的目标国家和金融市场不同,设计货币兑换模块需要更多信息。
例如,在某些货币兑换受中央银行监管的国家/地区,汇率类型将更加扩展,例如将有针对特定兑换类型的兑换率(除卖出汇率和买入汇率外)。设计前需要研究业务卷。
同样在您的设计中(在一个夸大的样本中),有 200 种活跃货币,用户每天必须进行 200 * 200 次数据输入!

顺便说一句
我认为你需要定义一些表:
Currency_Table:用于货币定义的货币表,详细信息如名称、swift-code、...精度(显示可接受的精度并将在计算 并应用舍入
在货币兑换上下文中(至少我曾经做过的),有一个基本概念叫做 Base-Currency,它通常是您的应用程序定制的国家/地区的货币(一些应用程序使用 USD 作为嵌入基础货币)。
Base-Currency 是在表中定义的具有特定属性的货币。基础货币将是所有汇率比较和计算的根元素。

Rate_Type_Table:包含 Sell、Buy、Conversion ……汇率类型(如果只有卖出和买入,您可以忽略该表,只需向汇率表添加两列,就像您在问题)

Daily_Rate-Table:货币汇率的每日数据条目

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

表中的任何记录都将显示货币值(value)与基础货币中的一个区 block 的比较
对于货币对货币的汇率,您需要从源货币到基础货币,然后从基础货币到目标货币进行计算。
Rounding将成为 Exchange 模块设计和实现的关键内容。

关于mysql - 货币兑换数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753125/

相关文章:

MySQL 表占用空间太大?

sql - 在 SQL 查询中使用数字时为 "Could not convert variant of type (Null) into type (OleStr)"

python - 使用 SQLAlchemy 在 POSTGRES 中计算 DATEDIFF

php - 发生数据库错误错误号: 1066 Not unique table/alias:

MySQL 查询在多列上使用 DISTINCT 并按日期排序(最后一个时间戳)

ios - Cloudkit 数据库在启动到 App Store 之前被清除了吗?

javascript - 使用 SEQUELIZE 在 iLike 中使用 CAST 或 CONVERT 进行选择

sql - 如何阻止我的 Postgres 递归 CTE 无限循环?

php - 将 SQL 中的 Null 更改为 0

php - 使用 Laravel Eloquent 连接同一服务器上不同数据库中的两个 MySQL 表