【发布时间】:2013-05-22 22:36:33
【问题描述】:
假设我有像 Employee 这样的数据库表,并且每个员工都有相关的工资。不同时期的工资可能不同。如何设计一个存储这些工资的表格? (“工资期”不能重叠,但这个约束不必由数据库处理)
Employee 不会是唯一需要这种日期模式货币数据的表。
我正在考虑一个包含两个主键(一个“wageId”整数和一个日期时间)和一个工资列(整数,按照建议计算便士)的表。 Employee(或任何其他)表将有一个引用“wageId”的列“wage”。日期时间将是工资有效的日期。这有任何意义吗?可以改进吗?
我正在使用 mysql。
【问题讨论】:
-
不要将货币值存储在浮点字段中。你会在某个时候得到不稳定的结果。使用定点格式(例如存储为便士)或“十进制”类型。
-
谢谢,我会选择“便士”的方法
-
你有没有想过在货币价值上做一些计算,比如“平均”,你可以得到几分之一美分?我建议增加几个数字以使其单位为百分之一便士。证券交易所就是这样做的。例如 560 便士是 5.60 美元,但请改用 56000。
-
我会计算工资,但不会计算数据库。感谢您的评论。