【问题标题】:Storing Negative Numbers - Database Design存储负数 - 数据库设计
【发布时间】:2013-01-28 22:49:32
【问题描述】:

我正在开发一款会计应用程序。我有一个交易表,其中一个字段是交易金额(双 10/2 类型)。

对于减少账户余额的交易,最好将交易金额存储为负数,还是将它们全部存储为正数,然后根据交易类型(存款、取款、信用、收费等)将它们转换为负数? ) 进行计算?

谢谢

布雷特

【问题讨论】:

  • 我认为如果金额存储为正数或负数,则未来更改出错的可能性会小得多,具体取决于它应该是什么。然后没有人必须记住要转换
  • 这可能会有所帮助:stackoverflow.com/a/4074431/183172
  • 感谢大家的帮助。是的,十进制更有意义。我会更新数据类型并继续推进。

标签: database-design


【解决方案1】:

我同意 Catcall 和 HLGEM。将它们存储为带符号的数字要好得多,特别是如果您要进行计算摘要(聚合)的报告。必须根据另一个字段推断符号会使您的报告比应有的复杂得多。此外,许多财务函数需要带符号的数字(例如用于计算利率),并且必须从另一个字段中导出它们会再次增加一些不必要的复杂性。

【讨论】:

    【解决方案2】:

    最好将正数存储为正数,将负数存储为负数。如果您预先这样做,您最终会创建一堆修复数字的视图,并重写应用程序代码以使用这些视图。

    使用“十进制”或“数字”类型比使用“双精度”要好得多

    【讨论】:

    • 感谢您指出类型的事情。但是,为什么与上限和舍入有关的数字更好? @mike-sherrill-cat-recall
    • 数字数据类型精确以 10 为底;浮点类型是基数为 10 的有用近似值。请参阅 this SO question, answer, and comments
    猜你喜欢
    • 2017-06-15
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多