Coğrafi bir adres / konumun veritabanında depolanmasının evrensel yolu şudur:
[Address] nvarchar(max) not null
Bu, en az miktarda programlama kodu gerektirir (ve böylece bakım maliyetlerini düşürür) ve herhangi bir adresle tamamen uyumludur. Bununla birlikte, üç büyük sorunu var:
Veri doğrulama eksikliği, alanın adresin kaydedilmesinden başka amaçlarla kullanılabileceği anlamına gelir. Amaçlardan biri, adres alanına 2 GB veri girerek veritabanınızın alanını doldurmayı amaçlayan bir DOS saldırısıdır.
Bu şekilde depolanan veriler, iş zekası ve veri madenciliği amacıyla işlenmesini imkansız kılar. Mesela, Hindistan'dan kaç kullanıcı var? Söylemenin kolay bir yolu yok, çünkü bu adresler normalleşmeyecek.
Kullanıcılar yanlışlıkla eksik veya açıkça yanlış bir adres girebilirler.
İlk sorunu azaltmak için, alanı makul bir sınır olarak düşündüğünüz şeyle sınırlandırın. Şahsen, 1000 karakterle başlayacağım ve daha sonra, yeterince büyük bir veri kümesi elde ettiğinizde, ilk kullanıcılar tarafından girilen adreslerin uzunluğunu temel alarak azaltmak istiyorum.
Diğer iki sorunu azaltmak için, adresleri ayıran ve size ülke, şehir, posta kodu, vb. İçeren verileri sunan üçüncü taraf bir API kullanabilirsiniz. Mümkünse, API adresini görüntüleyebilmelidir. Eksik veya hatalı bir adres girme riskini azaltmak için kullanıcıya geri dönen bir harita: çoğu kullanıcı nerede yaşadıklarını bilir ve bir haritada farklı bir konum görmesi derhal girişlerini kontrol etmeleri gerektiği konusunda ipucu verir.
Hangi API'yi kullanırsanız kullanın, mükemmel olmayacağını unutmayın. Adreslerin çoğunu bulur, ancak hepsini bulamaz. API adresi var olmadığını söyler, ancak kullanıcı öyle ısrar, bu araçlar, sen gerektiğini önsel güven kullanıcı, o yanlış olabilir bile.
Bu, aynı zamanda, orijinal kullanıcının girişini API sonucu yan yana saklamanız gerektiği anlamına gelir. Bu, şema haline gelir:
[RawAddress] nvarchar(max) not null
[ParsedAddress] xml null