我正在构建一个多币种应用程序。
考虑一个包含以下字段的帖子表:
id, country_id, price
每次我获取价格字段时,我还需要货币才能在前端显示。因此,每次尝试获取帖子时,我都需要进行两次连接(或使用laravel with
运行3次查询)。
post->country->currency
要解决这个问题,我可以将货币存储在post表中。然而,这违反了标准化指南。它还会复制表格中的数据。
我应该对数据进行非规范化并将货币存储在帖子表中吗?
答案 0 :(得分:0)
这取决于。
出售时price
应该被冻结吗? (我想是的。)不要正常化。
或者您是否需要根据当前汇率转换价格?做正常化。
此外,country_id
不是currency
的正确密钥。 currency_id
应在发布时确定;如果您还需要,请保留country_id
。
然后,当一种货币贬值,或一个国家转移到欧元或......时,架构就不会妨碍你。
此外,有些旅游区非常愿意以不同货币购买现金。美国的许多杂志都以美元和加元列出价格。
规范化目的:
SMALLINT UNSIGNED
,允许多达65K的不同值。注意:如果字符串很短,例如标准的2个字母的country_codes,请不要打扰规范化。一个5字母的邮政编码几乎不值得缩小到2字节的小字节。货币代码有一个很好的标准(美元,欧元 - 只有3个字母),太短而无法正常化。因此,如果其中任何一个适用,请进行标准化。根据我的经验,“价格”不属于任何一类。并且