2014-12-07 36 views
0

目前,我有48個字段。 enter image description here正常化該數據庫時遇到問題

我完全不熟悉訪問。這就是我決定將所有東西連接在一起的方式。

enter image description here

它似乎並不十分有效。有人能幫我理解如何規範化這個數據庫嗎?

我是否應該嘗試將員工信息放在一個表中,在另一個表中填寫工作信息,然後獲得設備查找表?

+1

您需要考慮各種實體,然後確定它們之間的關係。根據你所顯示的內容,我會在'員工'表中顯示當前信息;那麼就會有一個關於先前/當前工作的相關表格(設置一個表示當前的標誌);你不會提及設備是否與工作有關,所以我假設它是這樣的,從而創建一個設備表,並與員工或員工工作相關。 <踩肥皂箱>關係數據庫的功能不是消除冗餘......這是限制冗餘... – 2014-12-07 04:44:53

+0

有沒有辦法將當前/過去的工作合併成一個關鍵?例如,有沒有辦法檢測日期是過去還是現在? – 2014-12-07 05:07:38

+1

我建議每個表的'AutoNumber'鍵。這爲每個表中的每條記錄都保留一個唯一的標識符。然後看看一份工作的所有屬性 - 堅持當前但過去。這意味着'工作'表具有開始,結束,最低和最高工資,職位等。指示當前的一種方法是沒有結束日期,或者您可以有一個標誌表明「當前」,或者您可以使用最新的開始日期。將關係映射爲「一對一」或「一對多」。 1-1你可以考慮在一個表中包含字段,否則創建相關的表。 – 2014-12-07 05:18:35

回答

0

當前工作,上一份工作和上一份工作都可以同一張表。如果您按降序工作開始日期對此表進行排序,那麼您有當前,最後和前一個。因此,您不需要也不需要爲這些實際上相當於「工作」概念的每一個單獨的表格。如果按日期排序不夠,則可以添加一個名爲「作業類型」(當前,上一個等)的列。同樣,我們仍然只使用一張表。

設備也是如此。你真的不在乎這個限制是最後3還是最後300。通過構建規範化表格,ONE表單可以編輯所有類型,並且可以節省大量編碼和構建表格,用戶界面軟件以及構建quires以檢索+顯示錶單中最後3個作業。

事實上,您的設計與發展的成本最低允許3或300最後的工作是真的沒有什麼。更重要的是,如果某位經理出現並且現在希望您挽救最後的4個工作,那麼您不需要在這裏進行大規模的重新設計。你可以隨時添加新的工作類型。因此,取代當前的情況,如前所述,您也可能有未完成或失敗的工作。因此,添加新的業務規則意味着您不再添加新類型的作業表,而只是對已用於將作業定義爲當前或前一列的一列的「類型」。

+0

您也可以有工作的開始/結束日期 - 當前的工作將是空白結束日期。 – citizenkong 2014-12-09 10:17:40

0
  1. 確定類似的對象,並製作一個表來存儲所有這些對象。在你的設計中,你有三張設備表,但每個設備都有相同的字段;他們應該是一張桌子。同樣的工作,每個工作幾乎相同;他們應該是一張桌子。部門也一樣。
  2. 找出每個表格中可以唯一標識表格中的行的一列或多列(也就是說,如果您知道這些列的值,那麼不可能是,因爲這些值始終爲兩行)。這些是你的表的主鍵。
  3. 確定一個表中的項目需要「指向」(引用)另一個表中的項目的情況。在這種情況下,請確保引用表的一組列與引用表匹配。

當你這樣做的時候,你將有一個正確的因式關係數據庫設計的開始。