Database-Design
3NF 中的英國地址
我正在創建一個僅限英國的數據庫,該數據庫包含各種人員(即員工、客戶等)的資訊。每組人員的表格都有地址、城市和郵政編碼屬性。
我知道這在技術上不是 3NF,但是真的有必要拆分這些數據嗎?如果是,應該如何“正確”/“在現實世界中”完成。我已經看到了一些範例,他們創建了 AddressID 並共享表適用於所有人群。這真的是個好主意嗎?
謝謝。
正如您所注意到的,這些表格不會在 3NF 中,因為城市和地址(可能取決於英國郵政編碼的粒度)取決於郵政編碼而不是相關表格的鍵。
如果你想追求 3NF,我相信這樣做的自然方法是有一個表,其中郵政編碼作為主鍵,地址和城市作為其他屬性。然後,員工、客戶和其他“人員”表將使用郵政編碼作為外鍵。
在這種程度上追求 3NF 是否是一個好主意是值得商榷的。遵守 3NF 是可取的,但並不總是可行的。牢記規範化的目標——消除冗餘數據和修改異常——很容易認為 2NF 足以滿足您的目的。首先,您不太可能擁有大量冗餘數據,除非您有許多員工/客戶住在同一地址。其次,修改異常對您來說並不重要:當然,如果您刪除具有特定郵政編碼的人的唯一記錄,您將失去以下事實:1)這樣的郵政編碼存在,以及 2)完全該郵政編碼所指的地址;但這些事實對您的系統都不重要。由於您的域主要是人而不是物理位置/皇家郵政,