2012-11-21 242 views
0

我有三個型號:規範化或反規範化?

  • 國名:字符串
  • 國名:字符串,國家:引用
  • 城市名稱:字符串,狀態:引用

我有模式:

  • 用戶名:字符串,姓:字符串,城市:引用,...

我是否應該繼續在這個模型中引用州和國家,或者只保留對城市模型的引用?

什麼解決方案更好? 網站上的流量並不是很高。

Regards

回答

0

這個答案取決於你的用例。如果你有需要發送郵件到有問題的地址,那麼你很可能需要一個非常一致的地址。或者,也許這只是其他用戶知道的信息。

我住在一個名爲「牛頓」的城市,但我的實際郵政地址稱之爲「牛頓中心」,但我們大多數人會將其寫爲「牛頓中心」。根據我的應用中如何使用這些數據,我可能會選擇讓用戶進入他們的城市,也許可以使用您現有的列表作爲幫助自動填寫或其他內容的方式。如果你沒有你的用戶可能存在於你的數據庫中的所有城市,或者如果有錯誤,那麼對用戶來說就是一件痛苦的事情。有很多方法可以解決這個問題,但是它們都會影響數據一致性的可用性。

如果你已經有三種模型並且它們已經被填充,那麼也許這就是要走的路,並且有一個正確的規範化數據模型(像這樣)總是我的第一本能。然而,這是一個特殊情況。特別是對於州(也許是省)和國家,已經建立了ISO標準代碼,您可以將代碼存儲在散列中,並將ISO代碼存儲在數據庫中。有許多寶石可以提供這些參考。

我幾乎總是會說「規範化數據庫」,但是對於城市,州/省,國家(甚至是郵政編碼),您可能會決定不使用數據庫支持的模型。我認爲這是大多數「典型」應用程序處理地址的方式。