Postgresql

地址表第三範式矛盾

  • March 18, 2016

我有一個地址表,它的列是 address_id、address_1、address_2、city、state、country、pin code 。它的主鍵是 address_id 。根據第三範式,沒有非關鍵屬性應該依賴於其他非關鍵屬性。但是在這個表中,非關鍵屬性狀態取決於其他非關鍵屬性國家,這意味著如果我們知道狀態,我們實際上並不需要 address_id(primary key) 來查找它屬於哪個國家。那麼,我應該如何設計地址表以使其遵循第三範式。另外,第三範式真的需要應用於數據庫表嗎?我附上在此處輸入圖像描述了地址表模式的圖像。

您應該注意,並非每個國家/地區都有相同的地址規則。我相信 address_id (作為一個整數)只是地址表中條目的*代理鍵。*這不是國家的參考。

如果您想研究地址的變化,您可能會發現以下內容很有趣。

弗蘭克的郵政地址綜合指南

關於城市/州/國家/地區,您並不總是可以使用所有這些值。沒有國家的國家怎麼辦?

如果您對維護的每個城市、州(包括 NULL 城市和州)和國家/地區都有一個全面的數據源,那麼您可以避免額外的列。

但是,當缺少某些元素時,您需要確定解決方法。(您可以在 Frank 的網頁中找到範例。)

我的個人觀點(並非所有人都同意)是州和國家列通常比維護大型數據集更好。

如果您的需求足夠廣泛,您可以訂閱一項服務來維護您的地址資訊。只需進行網路搜尋即可找到適合您預算的服務。

引用自:https://dba.stackexchange.com/questions/132659