2012-01-06 91 views
0

我正在设计一个非常小的关系数据库,用于跟踪来自不同工作的工资。由于我从事多项工作和一份工作,工作时间表几乎是固定的,每个工作日从上午9点到下午2:30,这是一个长期职位,我每月都会得到薪水。其他工作的时间表是不确定的,而且很随机,我可以在几个小时内得到报酬。非严格重复周期的数据库结构设计

这是我的困境。如果我每个小时都记录一下我为所有这些工作工作的工作情况以及我从中获得的相应工资,在一张表格中,那么我将不得不将我的月工资在一个月内的所有工作时间内从该固定工作时间工作中划分出来,这也意味着对于固定时间表工作(例如上午9点至上午10点;上午10点至上午11点等)将有大量重复输入,并具有完全相同的值。另一方面,如果我每周或每月支付一次付款时间间隔,它肯定会适合我的固定时间表工作,但会丢失很多我应该跟踪的非重复周期工作时间的信息。我可以制作两张不同的表格,但两张不同的表格基本上会以不同的时间间隔记录同一班级,这听起来明智吗?为了增加一些更复杂的事情,我确实想跟踪我的固定计划作业的叶子,因此实际上需要按天而不是按月来跟踪它。

任何建议在这里将不胜感激。谢谢。

+0

有没有人可以在此提一些想法? – 2012-01-06 23:02:08

+0

或者如果你们不打算回答这个问题,你能否指出我可以进一步研究的关键字或方向?这是什么问题?我做了谷歌搜索,但没有得到任何地方。非常感谢。 – 2012-01-06 23:21:55

回答

0

我想你这里有两种选择:

  1. 你提出

    ,有两个表,一个是抓住了即席支付和存储定期(每周/每月)支付一个表。 这里的优点是很好地分割了两种类型的收入。缺点是您的报告编程有点复杂。您总是需要根据一些逻辑如何分配常规付款来添加这两个表。

  2. 您只保留一张单一表格,但您在各个日期输入常规付款,例如,如果您在4周内获得200美元,则您将每个工作日(假设每周5天)创建10美元的入场券。

我个人会去选择2: 为定义的时间间隔定期付款创建一个主表(每周/每月,每季,等等。),以及随着时间的这此款项的,如每月20美元,每月100美元。
创建一个表来获得实际的细节,那么就可能是这个样子: 日期/ FROMTIME/NUMBEROFHOURS /类型,然后/ AmountEarned/RegularIncomeID

类型将确定它是否是一个定期或即席支付(允许对于某些报告详细信息)和RegularIncomeID将链接到您的主表。 对于正常的挣时间,我要么将FromTime留空(如果您打算将该字段作为唯一索引的一部分保留,因为某些DB系统不允许在唯一/主索引中使用NULL值),或者输入默认值值如0AM。

选项二的优势在于它使所有的报告更容易,例如显示过去3个月每天工作的小时数。尝试使用选项1来完成此操作,可能也有可能,但是您需要添加大量的编程逻辑,而选项2将是一个简单的SQL语句。

+0

谢谢Kumala!你的解释非常清楚。我非常感激。这里只是一个后续问题:这个问题属于什么样的问题?我可以称它为数据库设计问题还是数据库建模问题? – 2012-01-11 20:42:51

+0

我把它放在了数据库设计和数据库建模 – KKK 2012-01-12 08:25:06