[英]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.