Use*_*841 6 mysql database-design
我正在为会计软件设置 MySQL 数据库。其中一个字段是保存每笔交易使用的货币。您会推荐哪种字段类型?细节:
我正在考虑:
char (3)
领域和保存货币usd
,cad
等等。 enum
字段并将 10 种货币定义为选项tinyint
字段并将其与另一个包含每种货币的 iso 代码的数据库相关联。 tinyint
字段而不是关联数据库(并且必须执行 JOIN),我只是将非常静态且不变的货币列表保存在 PHP 数组中。为我节省了一些 JOINing,但仍然允许我使用tinyint
.有人对什么是最好的有任何建议吗?
3 个字母的 ISO 货币代码相对较小,因此将它们用作参考表的键几乎没有开销。将某些项目(例如日期、总帐代码和其他分析代码和货币代码)直接放在表格上对于报告交易和余额的人员来说非常方便。出于这个原因,许多会计包 - 甚至像甲骨文财务这样的大公司 - 都是这样做的。
char(3) 是自然键
它足够短,以至于不使用它(添加代理键并在整个过程中使用连接)会增加更多的开销,然后每行比 tinyint 多出 2 个字节。
重新措辞,不使用它会增加不必要的不透明性和代码复杂性。
从经验来看,即使有 40k 写入/秒和数十亿行,它也更容易使用 (3)。