2012-09-14 11 views
8

我應該如何儲存國家和國家?我應該在我的數據庫還是PHP數組中存儲美國國家?

選項1)我可以創建一個名爲states的數據庫表,並具有'id','state'和'state_abbr'。然後我可以通過用戶表中的'id'來引用它。

選項2)我可以創建一個PHP數組並使用它填充狀態下拉菜單,並避免查詢數據庫。該數組的關鍵字將是該數據庫中爲該用戶插入的值。

國家不改變,所以數據應該是靜態的。存儲這些信息的最佳方式是什麼?爲什麼? PHP數組不會更快?爲什麼看起來數據庫是存儲它的最佳方式呢?

想法?

+0

我使用PHP數組......無論如何。 – jeremy

+2

如果狀態也作爲數據庫中其他記錄的一部分保存,那麼*是* - *帶有*適當的參照約束。如果沒有,那麼我認爲一種方法對另一種方法沒有特別的優勢。我不擔心這裏的「速度」。如果需要,還有其他機制可以解決這個問題。 – 2012-09-14 23:17:30

+0

將它存儲在數組中會更快,但使用數據庫更通用,並且可以輕鬆導出和導入數據及其操作。 – Ynhockey

回答

9

聰明的數據庫設計師曾經告訴我,「你知道的關於州代碼的一切都是錯誤的。」

  • 這些是雙字母代碼,而不是縮寫。 (The abbreviation for California是「加利福尼亞州」,俄亥俄州的縮寫是「俄亥俄州」。)
  • There are more than 50 of them
  • 並非所有的雙字母代碼都涉及到狀態。他們還提到像「密克羅尼西亞聯邦」和「帕勞」這樣的「財產」。
  • 它們不是唯一的。一個雙字母代碼AE指的是四個不同的軍事「州」(歐洲武裝部隊,加拿大武裝部隊,中東武裝部隊和非洲武裝部隊)。
  • 軍隊「國家」代碼可能隨着兵力的變化而改變。向非洲派遣幾十萬部隊,你很可能會看到非洲武裝部隊的編碼從「AE」變爲「AF」。
  • 有十幾個地區尚未在此列表中。其中一些具有戰略意義(威克島,中途島等),其地位可能很容易改變。

鑑於您不太可能知道所有關於USPS州代碼這類常見事情的所有內容,將它們存儲在表格中更有意義。在運行時,表格比PHP數組更容易維護。

5

因爲數據庫是存儲它的最好方法。

如果明年貴公司決定走向國際,該怎麼辦? 所以現在你需要國家和一個依賴下拉狀態。

所以,你需要添加歐洲,然後非洲..這是噸國家,以及噸狀態。你將需要一個大陣列。

然後你的老闆要按國家報告。

如果您在數據庫中擁有所有數據庫,則更容易管理。

相關問題