数据库中的货币建模

Posted

技术标签:

【中文标题】数据库中的货币建模【英文标题】:Currency modeling in database 【发布时间】:2009-12-04 01:07:31 【问题描述】:

一个非常幼稚的问题。我需要将货币存储在数据库中。值和代码。为了解决这个问题,人们通常会制作两列,一列存储值,另一列存储代码?或者有没有我可以使用的内置类型?

-谢谢

【问题讨论】:

【参考方案1】:

您将需要使用两列。我会将货币金额存储在一个列中,并将 alpha 货币代码存储在另一列中。在某些情况下,您将在一行中有多个金额。例如运费和税额可能都在发票记录上。您需要决定这些列是共享相同的货币还是需要两列。

您应该使用ISO standard 货币代码。

【讨论】:

【参考方案2】:

有些数据库有一个 Money 类型,可以用来存储值。但是,如果您想存储一个代码(您是指美元、欧元等吗?),那么您需要使用第二列。

更新:PostgreSQL does have a money type,虽然它看起来只支持一种货币,所以它仍然不能真正满足您的需求。

【讨论】:

是的,我使用 postgresql 但我使用数字来存储资金,因为我想使用 3 个小数位。只需自己处理即可提供最多的选择。 可以通过指定lc_monetary参数来配置PostgreSQL中money数据类型的精度!【参考方案3】:

我知道的关系数据库(Oracle、Postgres、mysql)没有内置的货币支持,我不希望其他任何人这样做。您必须自己使用 2 列来完成。

【讨论】:

postgresql 确实有一个“金钱”类型 - postgresql.org/docs/8.3/static/datatype-money.html 它确实有那种类型,但我不明白你如何指定货币本身;文档只提到了特定于区域设置的显示。【参考方案4】:

可能有特定于您的数据库的工具。一般来说,我认为将货币存储为实际价值和货币代码指标。您可以在某个地方使用标准化的货币代码列表,或者您可以根据您知道您将处理的货币来制作一个。

真的,如果您想指示任何类型的类型,您将需要一个列来存储该类型。

如果您指明您正在使用的数据库,人们可能会提供更多特定于数据库的帮助。

【讨论】:

en.wikipedia.org/wiki/ISO_4217 是一个优秀的标准化货币代码列表。

以上是关于数据库中的货币建模的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - 货币的十进制类型

卡尔曼滤波器:用R语言中的KFAS建模时间序列

卡尔曼滤波器:用R语言中的KFAS建模时间序列

Datomic 中的数据建模

Oracle 中的自动格式化货币字段

DW数据建模 | 浅谈数据仓库建设中的数据建模方法