지리적 주소 / 위치를 데이터베이스에 저장하는 일반적인 방법은 다음과 같습니다.
[Address] nvarchar(max) not null
이를 위해서는 최소한의 프로그래밍 코드가 필요하므로 유지 관리 비용이 절감되며 모든 주소와 완벽하게 호환됩니다. 그러나 세 가지 큰 문제가 있습니다.
데이터 유효성 검사가 없다는 것은 주소를 저장하는 것 이외의 목적으로 필드를 사용할 수 있음을 의미합니다. 목적 중 하나는 주소 필드에 2GB의 데이터를 입력하여 데이터베이스 공간을 채우려는 DOS 공격입니다.
이러한 방식으로 저장된 데이터는 비즈니스 인텔리전스 및 데이터 마이닝 목적으로 데이터를 처리 할 수 없습니다. 예를 들어 인도 출신 사용자는 몇 명입니까? 이러한 주소는 정규화되지 않으므로 알 수있는 쉬운 방법이 없습니다.
사용자가 실수로 불완전하거나 명백하게 잘못된 주소를 입력 할 수 있습니다.
첫 번째 문제를 완화하려면 필드를 합리적인 한계라고 생각하는 범위로 제한하십시오. 개인적으로, 나는 1000 문자로 시작한 다음 데이터 세트를 충분히 얻었을 때 첫 번째 사용자가 입력 한 주소의 길이에 따라 줄입니다.
다른 두 가지 문제를 완화하기 위해 주소를 구문 분석하고 국가, 도시, 우편 번호 등이 포함 된 데이터를 제공하는 타사 API를 사용할 수 있습니다. 가능하면 API에서 주소를 표시 할 수 있어야합니다. 사용자가 불완전하거나 잘못된 주소를 입력 할 위험을 줄이기 위해 사용자에게 되돌아가는지도 : 대부분의 사용자는 거주 지역을 알고 있으며지도에서 다른 위치를 보면 즉시 입력 내용을 확인해야 할 단서가됩니다.
어떤 API를 사용하든 완벽하지는 않습니다. 대부분의 주소를 찾을 수 있지만 모든 주소를 찾을 수는 없습니다. 이는 API가 주소가 존재하지 않는다고 말하지만 사용자가이를 주장하는 경우 , 사용자가 틀렸더라도 우선 순위를 신뢰 해야한다는 것을 의미합니다 .
이는 또한 원래 사용자의 입력을 API 결과와 나란히 저장해야 함을 의미합니다. 이는 스키마가 다음과 같이됨을 의미합니다.
[RawAddress] nvarchar(max) not null
[ParsedAddress] xml null