किसी डेटाबेस में भौगोलिक पता / स्थान संग्रहीत करने का सार्वभौमिक तरीका यह है:
[Address] nvarchar(max) not null
इसके लिए कम से कम प्रोग्रामिंग कोड की आवश्यकता होती है (और इसलिए रखरखाव लागत में कटौती करता है) और किसी भी पते के साथ पूरी तरह से संगत है। हालाँकि, यह तीन बड़े मुद्दे हैं:
डेटा सत्यापन की कमी का मतलब है कि फ़ील्ड का उपयोग पते को संग्रहीत करने के अलावा अन्य उद्देश्यों के लिए किया जा सकता है। उद्देश्यों में से एक डीओएस हमला है जिसका उद्देश्य पते के क्षेत्र में 2 जीबी डेटा दर्ज करके अपने डेटाबेस के स्थान को भरना है।
इस तरह संग्रहीत डेटा व्यवसाय खुफिया और डेटा खनन उद्देश्यों के लिए इसे संसाधित करना असंभव बनाता है। उदाहरण के लिए, भारत में कितने उपयोगकर्ता हैं? यह बताने का कोई आसान तरीका नहीं है, क्योंकि उन पते को सामान्य नहीं किया जाएगा।
उपयोगकर्ता गलती से अधूरा या स्पष्ट रूप से गलत पता दर्ज कर सकते हैं।
पहले मुद्दे को कम करने के लिए, उस क्षेत्र को सीमित करें जिसे आप उचित सीमा मानते हैं। व्यक्तिगत रूप से, मैं 1000 वर्णों के साथ शुरू करूंगा, और फिर पहले उपयोगकर्ताओं द्वारा दर्ज किए गए पतों की लंबाई के आधार पर इसे कम कर दूंगा जब आपको एक डेटा सेट पर्याप्त रूप से मिल जाएगा।
अन्य दो मुद्दों को कम करने के लिए, आप एक तृतीय-पक्ष एपीआई का उपयोग कर सकते हैं जो पते को पार्स करता है और आपको देश, शहर, डाक कोड आदि के डेटा के साथ प्रस्तुत करता है। यदि संभव हो तो, एपीआई पते पर प्रदर्शित करने में सक्षम होना चाहिए। एक अधूरा या गलत पता दर्ज करने के उपयोगकर्ता के लिए जोखिम को कम करने के लिए उपयोगकर्ता के लिए एक नक्शा वापस: अधिकांश उपयोगकर्ता जानते हैं कि वे कहाँ रहते हैं, और नक्शे पर एक अलग स्थिति देखकर उन्हें तुरंत एक सुराग मिलेगा कि उन्हें अपने इनपुट की जांच करनी चाहिए।
ध्यान दें कि आप जो भी एपीआई का उपयोग करते हैं, वह सही नहीं होगा। यह सबसे पते मिल जाएगा, लेकिन उन सभी को नहीं। इस का मतलब है अगर एपीआई बताता है कि पता मौजूद नहीं है, लेकिन उपयोगकर्ता है कि यह करता है का कहना है, तो आप चाहिए कि एक प्रायोरी विश्वास उपयोगकर्ता, भले ही वह गलत हो सकता है।
इसका मतलब यह भी है कि आपको अभी भी एपीआई के परिणाम के साथ मूल उपयोगकर्ता के इनपुट को स्टोर करना चाहिए। इसका मतलब है कि स्कीमा बन जाता है:
[RawAddress] nvarchar(max) not null
[ParsedAddress] xml null