私は、プロジェクトにいる人のためのデータを保持するテーブルを持っています。テーブルには、Start
日付フィールド、NULL可能なEnd
日付フィールドがあります。だから、人はStart
からEnd
にプロジェクトにいる。お支払いのテーブルデザイン
現在のところ、それらは常にプロジェクトに請求されます。しかし、私は現在、ある期間、課金対象外となりうるが、まだプロジェクトに取り組んでいるという新たな要件を持っている。したがって、彼らはプロジェクトに割り当てられて働いていますが、何らかの理由で、クライアントは割り当てられた期間の一部に料金が請求されず、より低い料金で課金されることもあります。
私の考えは、開始日と終了日を持つ人割り当てテーブルにリンクされた除外タイプテーブルと、無償でゼロに設定できるRate
カラムを持つことです。ある期間のオーバーライド値として機能します。
これは有効なデザインのようですか?その人が時間の95%を請求され、おそらく除外されることはないので、除外テーブルを持つことは私にはもっと意味があります。
誰もこれより良いを行う方法のアイデアを持っている場合、それは素晴らしいことです。
瞬間に、私はまた、私は毎日率を得るために、人のスケジュールの開始/終了日をもとにして参加している、「カレンダー」テーブルを持っています。したがって、除外日にも参加して、レートのオーバーライドがあるかどうかを確認できます。私は私のデザインを見つけるかもしれない
問題は、加入の多くは、に基づいていますされています
ON DateValue BETWEEN Start AND End
そして、私は彼らが最も効率的に参加していることを確認していません。
ええ、それは誰にも1つでも多くでもあります。ほとんどの場合、除外はありません。場合によっては、リソースに対して1つの例外があります。 「6週間はリソースがあり、100ドル/時間で請求されます。先週は無料で($ 0 /時間)彼を雇うことができます。彼はプロジェクトの初心者であるため、最初の週($ 50 /時間)に彼を半分の価格で雇うことができるので、デザインがうまくいくと思います。2つの除外項目があります。 – Craig
@Craig:そうだとすれば、あなたの設計が私が知っている最良の解決策であると言います。つまり、特定の日付の除外または例外テーブルを0またはそれ以下で追加することです元のレートよりも。 – Edper