簡體   English   中英

MySQL-ENUM-ISO 3166-1國家/地區代碼的好主意?

[英]MySQL - ENUM - Good Idea for ISO 3166-1 Country Codes?

我有一個MySQL數據庫表,用於用2位(ISO 3166-1)國家/地區代碼(例如,美國= US)標記數據庫中的項目。

我正在考慮對國家/地區代碼標簽列使用ENUM,因為國家/地區代碼變化不大,大約有200個左右。 另外,此表可能會包含很多行,因此我認為使用ENUM將有助於其高效運行。

我聽說有人在SO的其他情況下將ENUM與國家代碼一起使用,但是我不確定在使用MySQL時這樣做是否合理。

您怎么看?就我而言,在MySQL中為2位國家/地區代碼使用ENUM是個好主意嗎? 還是我會后悔這個決定?

我正在使用MySQL 5.6和PHP 5.5。

ENUM數據類型通常用於非常簡單且不變的值,例如自定義布爾值(T / F,0/1,Heads / Tails)或很小的不會改變的值子集,如多項選擇答案(A,b, C,D,E)。

如果這些值將完全改變,則我不建議使用ENUM數據類型(在我們不斷變化的邊界不斷變化的世界中就是這種情況)。 它要求您在需要添加或更糟糕的情況下更新表架構-從ENUM值列表中刪除一個值。 ENUM數據類型非常適合那些需要確保它只是已定義字段中值之一的字段,並且在嘗試使用列表之外的值時需要進行錯誤檢查。

我建議根據您代表國家/地區代碼的方式,一個非常簡單的可變兩個字符字段(A2 ISO或A3 UN),一個小整數(NUM UN)。

使用單獨的查找表(加入查詢)來執行代碼擴展和其他相關的國家/地區數據(貨幣匯率,居住的大洲等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM