Ülkelere göre kimlik numarası uzunluğu, tek bir ortak standarda bağlı değildir; her ülke kendi numaralandırma düzenini kurar. Bu yazıda uzunluk farkının nereden geldiğini, harf ve rakam karışımının ne anlama geldiğini, kontrol basamağının ne işe yaradığını ve bir alanı tek bir uzunluğa kilitlemenin testlerde hangi sorunlara yol açtığını bulacaksınız.
Ülkelere göre kimlik numarası uzunluğu neden bu kadar farklı?
Bir kimlik numarası, verildiği ülkenin idari ihtiyaçlarına göre tasarlanır. Nüfusun büyüklüğü, kayıt sisteminin kurulduğu dönem, numaranın hangi kurumlar arasında paylaşıldığı ve o dönemde elde bulunan teknoloji, uzunluğu doğrudan etkiler. Bu yüzden dünyada tek bir “doğru” uzunluk yoktur.
Fark yalnızca hane sayısında değildir. Bazı ülkeler numarayı tamamen rakamlarla kurar; bazıları harf ve rakamı karıştırır; bazıları numaranın sonuna bir ya da iki kontrol basamağı ekler; bazıları ise doğum tarihini numaranın içine gömer. Aynı ülke içinde bile farklı belgeler farklı numaralar taşıyabilir: vergi numarası, sağlık sigortası numarası ve vatandaşlık numarası birbirinden ayrı olabilir.
Bu çeşitliliğin pratik sonucu şudur: “kimlik numarası” adlı tek bir alan tanımlayıp ona sabit bir kural bağlamak, ülkelerin büyük bölümünde yanlış çalışır. Doğru yaklaşım, alanı ülke bilgisiyle birlikte ele almak ve kuralları ülkeye göre değiştirmektir.
Hangi ülke hangi yapıyı kullanır?
En bilinen örnek Amerika Birleşik Devletleri’dir: sosyal güvenlik numarası dokuz rakamdan oluşur ve üç parça hâlinde yazılır. Ayrıntılarını ABD SSN biçimi yazısında ayrıca ele alıyoruz.
Bunun dışında kalan ülkeler için genel eğilimleri şöyle özetleyebiliriz:
| Yapı | Nasıl çalışır | Tipik örnek |
|---|---|---|
| Saf rakam | Yalnızca rakamlardan oluşur, uzunluk sabittir | Kanada sosyal sigorta numarası dokuz hanelidir |
| Rakam ve kontrol basamağı | Son bir ya da iki hane denetim için hesaplanır | Brezilya vergi numarası on bir hanelidir, son iki hane denetim içindir |
| Harf ve rakam karışımı | Numaranın içinde harfler de bulunur | Bazı ülkeler kimlik numarasında harf kullanır |
| Tarih gömülü | Doğum tarihi numaranın bir parçasıdır | Kuzey Avrupa ülkelerinin kişisel kimlik numaraları bu yapıdadır |
Tablodaki son satır, karışıklığa en açık olanıdır. Numaradan doğum tarihi çıkarılabiliyorsa, numara aynı zamanda bir doğum tarihi taşıyıcısıdır; bu durumda numaranın geçerliliği ile tarihin geçerliliği birbirine bağlanır. Ayraç olarak kullanılan karakterler ülkeden ülkeye değişir ve bazı ülkeler ayraç kullanmaz.
Avrupa dışından bir örnek için Japonya ülke sayfası, Latin Amerika’daki farklı bir yapı için Brezilya ülke sayfası kısa karşılaştırmalar sunar.
Kontrol basamağı tam olarak neyi kanıtlar?
Birçok numara sisteminde son hane ya da son iki hane, diğer hanelerden hesaplanan bir denetim değeridir. Hesap genellikle ağırlıklı bir toplam ve kalan bulma işlemine dayanır: her hane bir ağırlıkla çarpılır, sonuçlar toplanır ve elde edilen değere göre kontrol basamağı belirlenir. Amaç, yazarken yapılan tek hane hatasını ya da yan yana iki hanenin yer değiştirmesini yakalamaktır.
Bu mekanizmanın sınırını net bilmek gerekir. Kontrol basamağının tutması, numaranın gerçek bir kişiye ait olduğunu göstermez; yalnızca numaranın kendi kurallarına göre tutarlı yazıldığını gösterir. Rastgele seçilmiş hanelerden de kuralı tutan bir numara üretilebilir, çünkü kontrol basamağı var olan hanelerden hesaplanır.
Test açısından bu ayrım önemlidir: kontrol basamağını doğrulayan bir kod, geçerlilik denetimi yapmış olmaz. Doğru ifadeyle, kod yalnızca biçim denetimi yapar. Bu yüzden bir kaydın arkasında bir kurumun kaydı olmadığını bilmek, kaydı doğru yorumlamanın ön koşuludur.
Aynı ülke biçimini neden değiştirir?
Numaralandırma sistemleri tarih boyunca yenilenir. Bir ülke kayıt sistemini merkezileştirdiğinde, nüfus arttığında ya da eski numara aralığı tükendiğinde yeni bir biçim devreye girer. Geçiş dönemlerinde eski ve yeni biçimler yıllarca birlikte yaşar; bazı kişiler eski numarasını taşımaya devam ederken yeni kayıtlar yeni biçimle açılır.
Bu durum, tek bir tarihsel kesite göre yazılmış doğrulama kodunu kısa sürede geçersiz kılar. Ayrıca numaranın hangi belgede geçtiği de önemlidir: bir ülkenin vergi numarası ile kimlik numarası farklı uzunlukta olabilir ve aynı form ikisini birlikte isteyebilir.
Test verisi hazırlarken bu geçiş hâlini bilinçli olarak kapsamak gerekir. Yalnızca güncel biçimi üreten bir küme, bir süre sonra desteklenmesi gereken eski kayıtları hiç sınamamış olur. Bu konunun genel çerçevesi için kimlik verisi tutarlılığı yazısına bakabilirsiniz.
Bir numaraya bakarak kişi hakkında ne öğrenilebilir?
Numaranın içinde doğum tarihi gömülü olduğunda, o tarih numaradan okunabilir; ancak bu, kişi hakkında başka bir bilgi vermez. Numaradan ad, adres ya da cinsiyet çıkarmaya çalışmak, sistemin hiçbir zaman vaat etmediği bir şeyi aramak olur.
Buna karşılık numaranın kendisi kişisel veri sayılır. Bir kayıtta numara bulunduğu anda, o kayıt bir kişiyi işaret edebilecek hâle gelir; bu yüzden numara alanı test ortamlarında gerçek kişilerden alınmamalıdır. Aynı nedenle, kaydın kurgusal olduğunu belirten bir işaret taşıması, verinin yanlış yere taşınmasını engelleyen en basit önlemdir.
Sitemizde üretilen kimlik numaraları bir algoritmayla sentezlenir; ülkenin yayımlanmış biçimine uyar ve kontrol basamağı hesaplanabilen ülkelerde o basamak da tutar. Ne var ki bu kayıtlar gerçek bir kişiye, kuruma ya da hesaba karşılık gelmez ve yalnızca test amaçlıdır; gerçek bir kişiyi taklit etmek, bir doğrulamayı geçmek veya hesap açmak için kullanılmamalıdır. Bu alanı diğerleriyle birlikte görmek için üreticide bir ülke seçip kaydı üretmeniz yeterlidir.
Geliştiriciler için: uzunluğu sabitlememek
Bir numara alanının tasarımında en sık yapılan hata, uzunluğu tek bir sayıya sabitlemektir. Böyle bir alan, kendi ülkesinin dışındaki kayıtları sessizce reddeder; dahası, ülke bilgisini ayrı bir alanda tutmuyorsa doğrulama kuralının hangi ülkeye uygulandığı da belirsiz kalır.
Doğru yapı üç parçadan oluşur: bir ülke alanı, ülkeye göre seçilen bir doğrulama kuralı ve hiçbir kuralın eşleşmediği durumlar için bir yedek davranış. Yedek davranış, kaydı reddetmek yerine biçimsel bir alt sınırla kabul etmek ya da yalnızca uyarı üretmek olabilir. Böylece henüz kuralı yazılmamış bir ülkeden gelen kullanıcı sistemi tıkamaz.
Karakter kümesi de aynı şekilde esnek tutulmalıdır. Yalnızca rakam kabul eden bir alan, harf içeren numaraları baştan eler. Ayraç karakterlerini kaydetmeden önce temizlemek, hem arama hem karşılaştırma işlemlerini basitleştirir; ancak kaydı gösterirken ülkenin alışılmış yazımına geri döndürmek gerekir.
Kural setini veri olarak tutmak, kodu her ülke için ayrı ayrı yazmaktan daha kolay yönetilir. Yeni bir ülke eklendiğinde yalnızca bir tanım eklenir; mevcut davranış değişmez. Test kümenizde ise en az dört örnek bulundurun: saf rakamlı bir numara, harf içeren bir numara, kontrol basamağı bozuk bir numara ve hiç kural tanımlanmamış bir ülkeden gelen numara. Son iki örnek, doğrulamanın gerçekten nerede devreye girdiğini gösterir.
Sonraki adımlar
Kimlik numarası alanını tasarlarken ülke seçimini zorunlu kılmak, sonraki bütün kararları kolaylaştırır; ülke bilinmeden hiçbir biçim kuralı güvenilir biçimde uygulanamaz. Elinizdeki kural setinin hangi ülkeleri kapsadığını ve hangilerini kapsamadığını yazılı olarak belirleyin. Farklı ülkelerin biçimlerini canlı görmek için kimlik üreticisi sayfasında birkaç ülke seçip sonuçları karşılaştırabilirsiniz.