วิธีสากลในการจัดเก็บที่อยู่ทางภูมิศาสตร์ / ที่ตั้งในฐานข้อมูลคืออันนี้
[Address] nvarchar(max) not null
สิ่งนี้ต้องการรหัสการเขียนโปรแกรมจำนวนน้อยที่สุด (และลดค่าใช้จ่ายในการบำรุงรักษา) และเข้ากันได้กับที่อยู่ใด ๆ อย่างไรก็ตามมีสามประเด็นใหญ่:
การขาดการตรวจสอบข้อมูลหมายความว่าเขตข้อมูลสามารถนำไปใช้เพื่อวัตถุประสงค์อื่นนอกเหนือจากการจัดเก็บที่อยู่ หนึ่งในวัตถุประสงค์คือการโจมตีแบบ DOS ที่มีจุดประสงค์เพื่อเติมช่องว่างของฐานข้อมูลของคุณโดยป้อนข้อมูล 2 GB ลงในช่องที่อยู่
ข้อมูลที่จัดเก็บด้วยวิธีนี้ทำให้เป็นไปไม่ได้ที่จะดำเนินการเพื่อวัตถุประสงค์ทางธุรกิจและการขุดข้อมูล ตัวอย่างเช่นมีผู้ใช้กี่คนจากอินเดีย ไม่มีวิธีที่จะบอกได้ง่ายเนื่องจากที่อยู่เหล่านั้นจะไม่ถูกทำให้เป็นมาตรฐาน
ผู้ใช้อาจป้อนที่อยู่ที่ไม่สมบูรณ์หรือผิดโดยไม่ได้ตั้งใจ
ในการลดปัญหาแรกให้ จำกัด เขตข้อมูลเป็นสิ่งที่คุณคิดว่าเป็นขีด จำกัด ที่สมเหตุสมผล โดยส่วนตัวแล้วฉันจะเริ่มต้นด้วย 1,000 ตัวอักษรและลดตามความยาวของที่อยู่ที่ป้อนโดยผู้ใช้คนแรกเมื่อคุณได้รับชุดข้อมูลที่มีขนาดใหญ่พอ
เพื่อลดปัญหาอีกสองประการคุณสามารถใช้ API ของบุคคลที่สามซึ่งแยกวิเคราะห์ที่อยู่และแสดงข้อมูลที่มีประเทศเมืองรหัสไปรษณีย์ ฯลฯ หากเป็นไปได้ API ควรแสดงที่อยู่บน แผนที่กลับไปยังผู้ใช้เพื่อลดความเสี่ยงสำหรับผู้ใช้ในการป้อนที่อยู่ไม่สมบูรณ์หรือไม่ถูกต้อง: ผู้ใช้ส่วนใหญ่รู้ว่าพวกเขาอยู่ที่ไหนและการเห็นตำแหน่งที่แตกต่างบนแผนที่จะให้เบาะแสว่าพวกเขาควรตรวจสอบอินพุตของพวกเขาทันที
โปรดทราบว่าสิ่งที่คุณใช้ API มันจะไม่สมบูรณ์แบบ มันจะค้นหาที่อยู่ส่วนใหญ่ แต่ไม่ใช่ทั้งหมด ซึ่งหมายความว่าหาก API บอกว่าไม่มีที่อยู่ แต่ผู้ใช้ยืนยันว่าเป็นเช่นนั้นคุณควรให้ความสำคัญกับผู้ใช้ก่อนแม้ว่าเขาอาจจะผิดก็ตาม
นอกจากนี้ยังหมายความว่าคุณยังควรเก็บอินพุตของผู้ใช้ดั้งเดิมพร้อมกับผลลัพธ์ของ API ซึ่งหมายความว่าสคีมากลายเป็น:
[RawAddress] nvarchar(max) not null
[ParsedAddress] xml null