所以我正在开发一个使用 MySQL 数据库的计划应用程序。该站点的模块之一是供经理跟踪迟到、加班和缺勤。目前的网站一团糟。它只是让经理输入关键数据,但不会将经理绑定到任何已知数据(例如员工预计何时到达/离开),甚至不要求他们使用标准格式。一些经理进入 30 分钟(意味着迟到 30 分钟),而其他经理可能进入 8:30(意味着他们应该在 8:00 进入)等等。
我的版本将受到更多限制。经理会选择员工,然后选择有问题的班次,他们基本上可以输入两个值:实际到达时间,实际离开时间。这样,当报告运行并验证时间表时,只需进行数学运算即可查看它们是否迟到/早到/加班。但我遇到了一个困难的地方:
首先,如果有人请病假(或只是没有出现),我会得到它,所以经理只需勾选一个框,他们根本不会进行任何时间调整。它只是完全抹去了那个时间。我是否应该通过将两个时间值都设置为 NULL 来做到这一点,并且在运行任何查询时,NULL 将根据需要进行处理(可能会反转剩余时间和时间到达,因此两端都为零),或者我应该时间到了和剩下的时间都设置为“预期的班次结束”时间,所以它的结果为零?
我不喜欢使用 NULL,因为它只是感觉没有可用的数据,但我不喜欢使用预期的班次结束,因为它看起来好像他们真的到达了,就在他们离开的时候。
这实际上是一个如何使数据语义化而不必使其过于复杂(使用 NULL)的问题。