5

我有一个表,其中包含一个项目中的人的数据。该表有一个Start日期字段和一个可为空的End日期字段。所以,一个人在一个项目上从StartEnd

目前,他们总是对项目计费。但我现在有一个新要求,即在一段时间内,他们可以不计费,但仍在从事该项目。因此,他们已被分配到该项目,并且正在工作,但由于某种原因,客户在分配的部分期间没有被计费,或者可能以较低的费率计费。

我的想法是有一个排除类型表,链接到人员分配表,该表将具有开始日期和结束日期,以及一个Rate可以设置为零以表示免费的列,否则,可以用作覆盖值一段时间。

这看起来像是有效的设计吗?由于此人 95% 的时间都需要付费,而且可能永远不会有任何排除,因此对我来说,有一个排除表更有意义。

如果有人知道如何更好地做到这一点,那就太好了。

目前,我还有一个“日历”表,我根据该人的日程安排的开始/结束日期加入该表以获取每日费率。那么,我也可以加入排除日期,看看是否有覆盖率?

我在设计中可能会发现的问题是,很多连接都基于:

 ON DateValue BETWEEN Start AND End

而且我不确定它们是最有效的连接。

4

3 回答 3

1

我会使用这个“排除”表作为个人项目职业数据的单一存储。如果一个人被分配到一个项目而没有改变比率,你将在这个表中得到一个记录。在其他情况下,您将在此表中查看费率变化的历史记录。

于 2013-08-09T08:42:51.380 回答
1

如果例外可能是一个项目的一个或多个时间段(一对多),那么使用排除表的设计是最好的设计。

例子:

June 1, 2013 to June 30, 2013

排除:

June 9, 2013 - 0 Rate
June 25 to 27 - 30% of Original Rate

但是,如果排除是可能的并且最多只能是 ONE 单个期间(或一对一类型的关系),那么您可以将其放在与项目表上的其他字段相同的字段中。

例子:

June 1, 2013 to June 30, 2013

排除:

June 9, 2013 - 0 Rate
于 2013-08-09T08:56:23.577 回答
0

看起来您允许在特定时期内向客户提供标准费率折扣。对于这种情况,您可以将费率设置为负值,例如 - 100 美元/小时,以在折扣/排除表中免费设置资源费率。您可以通过添加您的折扣金额和标准金额来获得该资源在特定时期的最终费率以获得净金额。在您的设计中,您已经提到将在排除和人员分配表之间建立关系。您的设计将允许显示已给予客户的折扣。当您调整例外情况的计费时,这种方法是可以的。

如果您尝试在项目计费中进行更正,IMO,您应该在人员分配表中为每个费率与持续时间分别输入条目。

在向客户生成发票时,您可以根据更正显示调整后的折扣率或新修订的帐单。

于 2013-08-09T10:21:26.810 回答