2012-01-06 29 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