ISO ülke kodları, bir ülkeyi veri içinde tek anlamlı biçimde göstermenin en yaygın yoludur; ama aynı ülkenin üç farklı kod biçimi olduğunu bilmeyen bir ekip, kısa sürede birbirini tutmayan kayıtlar üretir. Bu yazıda bu üç biçimin ne işe yaradığını, ülke altındaki bölüm kodlarının nereden geldiğini ve veri modelinizde hangi biçimi seçmeniz gerektiğini bulacaksınız.
ISO 3166 ülke kodları hangi biçimlerde gelir?
Uluslararası standart, aynı ülke için üç ayrı gösterim tanımlar. İki harfli biçim en çok kullanılanıdır; veri alışverişinde, form alanlarında ve günlük yazılım işlerinde neredeyse her zaman bu biçim görülür. Kısa olması, saklanmasını ve okunmasını kolaylaştırır.
Üç harfli biçim, iki harfli biçimden daha okunaklıdır ve bazı alanlarda tercih edilir. Örneğin yazışmalarda, belgelerde ve bazı resmî listelerde bu biçim kullanılır. Fazladan bir harf, kısaltmanın daha az belirsiz olmasını sağlar; ancak alan uzunluğu bir kısıtsa bu biçim daha maliyetlidir.
Üçüncü biçim sayısaldır ve dil bağımsız olmasıyla öne çıkar. Sayılar bütün dillerde aynı göründüğü için, kodun yazıya bağlı olarak bozulma olasılığı daha düşüktür. Bu özellik, verinin farklı sistemler ve farklı alfabeler arasında taşındığı durumlarda işe yarar.
Bu üç biçim birbirinin alternatifi değil, aynı ülkenin farklı yazımlarıdır. Sorun da tam olarak buradan doğar: Bir sistemde iki harfli, başka bir sistemde üç harfli kod kullanılırsa, iki kayıt aynı ülkeyi anlatsa bile birleştirilemez.
İki harfli mi, üç harfli mi seçmeliyim?
Seçim, kodun nerede kullanılacağına bağlıdır. Kullanıcıya gösterilen ya da veritabanında yoğun olarak saklanan bir alan için iki harfli biçim en pratik seçenektir. Kısa olduğu için indeksleme ve karşılaştırma ucuzlar, arayüzlerde yer kaplamaz ve hata yapma alanı dardır.
Buna karşılık, kodun insan tarafından okunacağı bir belge, rapor veya basılı çıktı üretiyorsanız üç harfli biçim daha anlaşılırdır. Bir ülkeyi iki harfle tanımayan bir okuyucu, üç harfli biçimde daha rahat eder. Buna değip değmeyeceği, çıktının kim için üretildiğine bağlıdır.
En kötü seçim, hangisi olduğunu belirtmeden kod saklamaktır. Alanın yalnızca “ülke kodu” diye adlandırılması, bir süre sonra iki biçimin karışmasına yol açar. Alanı ve belgeyi, hangi biçimin kullanıldığını açıkça söyleyecek şekilde tanımlamak, ileride yapılacak birleştirme işlerini kurtarır.
Bir de melez durum vardır: kodun biçimi doğru ama değeri eski. Ülkeler zaman zaman kod değiştirir; eski kayıtlar sistemde kalır. Bu kayıtların nasıl ele alınacağı, ayrı bir karar olarak yazılı olmalıdır.
Ülke altındaki bölüm kodları nereden gelir?
Ülke kodlarının yanında, ülke içindeki birinci düzey idari bölümler için de bir kod sistemi vardır. Bu sistemde kod iki parçadan oluşur: ülke kodu, bir ayırıcı ve bölümün yerel kodu. Örneğin bir eyalet, bir vilayet ya da federal bir bölge kendi yerel kısaltmasıyla bu yapıya girer.
Bu kodların varlık nedeni, ülke içindeki bölümleri de dil bağımsız biçimde gösterebilmektir. Böylece bir adres kaydındaki bölüm, yazıya bağlı kalmadan karşılaştırılabilir ve taşınabilir. Özellikle çok dilli sistemlerde, bölüm adının çevirisiyle uğraşmak yerine kodu taşımak çok daha güvenilirdir.
Bu iki kod ailesini şöyle karşılaştırabiliriz:
- standart bölüm kodu: ülke kodu, bir ayırıcı ve bölümün yerel kodundan oluşur; dil bağımsız karşılaştırma sağlar
- yerel idari kod: vergi daireleri, istatistik kurumları ve posta idareleri kendi listelerini tutar
- karışık kullanım: iki kaynak birleştirildiğinde sessiz bir uyuşmazlık ortaya çıkar
- doğru yaklaşım: hangi sistemin kodunu tuttuğunuzu kayıtta açıkça belirtmek
Burada sık yapılan hata, bu kodları o ülkenin kendi yerel kodlarıyla karıştırmaktır. Vergi daireleri, istatistik kurumları ve posta idareleri kendi listelerini tutar; bu listeler birbirinden farklıdır. Bir kayıtta hangi sistemin kodunu tuttuğunuzu bilmiyorsanız, iki kaynağı birleştirdiğinizde sessiz bir uyuşmazlık ortaya çıkar.
Bölüm kodları yerel adların yerini tutar mı?
Tutmaz. Standart bölüm kodları, bir bölümü tanımlamak için kullanışlı bir anahtardır; ama bölümün resmî adı, kısaltması ve o ülkedeki diğer adlandırmalar bundan ayrıdır. Kullanıcıya gösterilecek metin her zaman yerel ad olmalıdır; kod ise arka planda eşleştirme ve doğrulama için kalmalıdır.
Bu ayrımı karıştırmanın bedeli, arayüzde görünür. Kullanıcı eyalet listesinde bir kod görürse ne seçtiğini anlamaz. Tersi durumda, yalnızca yerel adı saklayan bir sistem ise bölümü güvenilir biçimde eşleştiremez; aynı bölümün iki farklı yazımı iki farklı kayıt gibi görünür.
Doğru yaklaşım, ikisini birlikte tutmaktır: kod eşleştirme ve doğrulama için, yerel ad ise gösterim için. Bu ikili yapı, hem arayüzü okunur tutar hem de veriyi taşınabilir kılar. Kodun veriyi nasıl düzenlediğini daha ayrıntılı görmek için adres doğrulama ve normalleştirme yazısına bakabilirsiniz.
Kendi ülke kodumu uydurmanın sakıncası nedir?
Bir kod uydurmak kısa vadede işleri hızlandırır, uzun vadede ise veri setini tek başına kullanılamaz hale getirir. Uydurma bir kod, hiçbir dış sistemle eşleşmez; bir gün ihracat, entegrasyon veya raporlama gerektiğinde bütün kayıtları elle gözden geçirmeniz gerekir.
Aynı sorun eksik kapsamda da görülür. Standart bir listeyi kısaltıp yalnızca sık kullanılan ülkeleri almak, başlangıçta yeterli görünür; ama yeni bir ülkeden gelen kayıt geldiğinde sistem onu reddeder. Böyle durumlarda kod uydurmak yerine, listede olmayan değeri ayrı bir durum olarak ele almak daha doğrudur.
Üçüncü tuzak, kodları elle yazılan metin alanlarına bırakmaktır. Serbest metin alanı, kısa sürede büyük-küçük harf farkları ve yazım hatalarıyla dolar. Kod alanı sabit bir listeden seçilmeli, karşılaştırma da büyük-küçük harf duyarsız yapılmalıdır.
Geliştiriciler için: saklama ve geri dönüş kuralları
Hangi biçimi seçerseniz seçin, tek bir biçimde karar kılın ve bunu belgeleyin. Karışık biçim, veri modelinin en pahalı hatasıdır; çünkü hata vermez, yalnızca yanlış sonuç üretir. Arayüzde iki harfli biçimi gösterip veritabanında üç harfli biçimi saklamak bile, dönüşümün tek bir yerde yapılması koşuluyla kabul edilebilir.
Listede olmayan bir kod geldiğinde ne olacağını baştan tanımlayın. Kaydı reddetmek en güvenli yol gibi görünür ama gerçek kullanıcıyı engeller; sessizce kabul etmek ise veriyi bozar. Genellikle en iyi çözüm, değeri saklayıp bir uyarı üretmek ve gözden geçirme kuyruğuna düşürmektir.
Geri dönüşümü de düşünün. Kod değişiklikleri ve ülke birleşmeleri nadir ama gerçektir. Eski değeri yeni değere eşleyen küçük bir tablo tutmak, geçmiş kayıtların okunabilir kalmasını sağlar. Bu tabloyu koda gömülü koşul ifadeleri yerine veri olarak saklamak, güncellemeyi kolaylaştırır.
Test verisi tarafında ise en az üç örnek bulundurun: yaygın bir ülke kodu, listede olmayan bir değer ve biçimi doğru ama değeri eski bir kod. Bu üçü, kod doğrulama yolunuzun tamamını kapsar.
Sonraki adımlar
Ülke kodlarını toplarken sabit bir listeden seçim yaptırın ve seçilen kodun alt bölüm listesini de buna bağlı olarak daraltın; böylece kullanıcı yalnızca geçerli birleşimleri görebilir. Sitemizdeki adres üretici sayfası ülke seçimine göre alanları yeniden düzenler, uluslararası adres biçimi yazısı ise kodun adres metnine nerede girdiğini anlatır.