0

我有一個應用程序與員工和他們的工作合同。 每份工作合同都有一個假期。我們記錄公司欠僱員多少天(「VacationOwe」)以及他已採取多少天(「VacationTaken」)。何時創建新表?

我是否應該將這個「VacationOwe」和「VacationTaken」作爲合同的一個屬性,或者我應該使用屬性「VacationOwe」,「VacationTaken」和「ContractId」創建一個名爲Vacaction的類(表)表?

這兩種方法的優點是什麼?
是否有任何規則,當你應該創建一個新的類或表或保持在一個數據。

+0

究竟是什麼@Stefan說,你將採取的性能損失,如果你再拍表。除了他列出的其他原因,你想要有一個單獨的表是,如果你想能夠跟蹤變化,就像他們從1月17日開始2天,然後彙總數據以得到實際採取的和實際欠款。 –

+1

您可能希望將每個休假日存儲爲相關表格中的特殊記錄。這是因爲遲早有人會對總數產生爭議。您需要法律上的理由確定休假的確切日期。 – HLGEM

回答

0

如果這兩個屬性確實只與員工相關,則創建單獨的表格沒有任何好處。表現會更糟,你會不斷加入這些表格。

對於這個特定的例子,假期的日子似乎也可能與一年有關。如果是這樣的話,一個單獨的表格將會有意​​義,因此您可以跟蹤員工和年份所採用/欠下的假期天數。

1

我應該做這個 「VacationOwe」 和 「VacationTaken」 一propertieØ員工

最有可能的......沒有。因爲這打破了正常化。此外,它並沒有提供有關休假時間的信息(如果你關心的話)。除此之外,每年你都必須爲每個員工做這個計算。

使用類(表)調用具有屬性「VacationOwe」和「VacationTaken」和「EmployeeId」的Vacaction並交叉這兩個表?

在這種情況下有一個單身人士班是不好的。一般來說,你應該在大多數情況下避免單身人士。

那該怎麼辦?那麼,如果你的系統不關心度假細節,你可以選擇第一個解決方案。也許你想考慮下面的選項(A)或者如果你想有一個更通用的方法,你可以做類似於選項(B)的事情。這完全取決於您的詳細要求。

enter image description here

+1

我同意你需要繼續混合一點信息。如果你真的不確定,那麼這就是更加規範化的原因 - 一套數據庫設計「規則」。如果你更規範化,以後有更多選擇。 @EmmadKareem的這個答案顯示了一個例子......如果您將VacationDays存儲在您的[Employee]表中,但該員工與新/不同假期簽訂了新合同?你想記錄改變嗎? –

+0

如果你想了解更多關於這些規則的稱爲「規範化」,這裏是一個SO帖子與幾個鏈接:http://stackoverflow.com/questions/4820015/how-do-you-teach-database-normalization –

+0

@Mike M,感謝您的評論。您提到的案例在某些企業中是有效的,我在建模之前非常專業地收集詳細的需求。關於你的觀點,假期總數可以存儲在(B)的交接表中。 – NoChance