2009-02-05 5 views
5

저는 SQL과 관계형 데이터베이스에 익숙하지 않으며 공통된 문제라고 생각합니다.우편 번호를 도시/주 및 그 반대로 데이터베이스에 저장 하시겠습니까?

나는 웹 사이트를 만들고 있으며, 각 사용자가 우편을 제출할 때 우편 번호 나시 /도에 위치를 제공해야합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 우편 번호와시 및 주 테이블을 작성하고 그에 대한 질의를 작성합니까? 아니면 이것을 처리 할 준비가 된 솔루션이 있습니까?

차이가 나는 경우 SQL Server 2005를 사용하고 있습니다.

주어진 도시/주에서 우편 번호를 검색 할 수 있어야하거나 우편 번호가 지정된 도시 국가에서 침을 뱉을 수 있어야합니다.

답변

9

몇 가지 옵션이 있습니다. 당신은 bulk zip-code library을 주 (州)별로 우편 번호, 도시, 카운티 등을 나열하는 누군가로부터 구입할 수 있습니다. 또는 누군가를 access a web service에게 지불하면보다 세부적인 수준에서 동일한 기능을 수행 할 수 있습니다.

웹 서비스보다 비용이 적게 들고 성능이 향상되므로 우편 번호 라이브러리 옵션을 사용하는 것이 가장 좋습니다. 이 라이브러리를 쿼리하거나 사전 처리하는 방법은 귀하에게 달려 있습니다. 당신은 SQL Server를 언급하기 때문에 State, Zipcode, City 테이블이 필요할 것이고 그들 사이의 관련 관계가 포함될 것입니다. 또한 여러 우편 번호에 걸쳐있는 도시 나 여러 도시가있는 우편 번호에 대한 규정이 있어야합니다. 그러나 이러한 문제 중 극복 할 수없는 것은 아닙니다.

사용자 입력의 불명확 함을 다루는 한, address validation web service의 도움을 얻는 것이 좋습니다. 유효성을 검사하려면 대부분의 배송지 주소가 필요합니다.

편집 : 위도/경도 데이터 등을 포함하여 SourceForge project offering free zip-code data 인 것처럼 보입니다. 정확한지 또는 현재인지 확실하지 않습니다.

편집 2 : SourceForge 프로젝트 사이트에서 약간의 내용을보고 나면 죽은 프로젝트처럼 보입니다. 이 데이터를 사용하는 경우 데이터베이스에 존재하지 않는 우편 번호/도시에 대해 약간의 허용치를 제공해야합니다. 구입 한 일괄 라이브러리에는 일종의 업데이트 보증 또는 업데이트에 대한 가격 책정 등과 함께 제공되며 더 신뢰할 수 있습니다.

+0

(50 개) 미국 주를 ... 있습니다. – alphadogg

+0

마음을 정교하게? –

+0

나는 투표하지 않았지만이 질문에 대한 내 대답을 보았습니다. OP가 사용자와 관련되어 있지 않으면 zip에서 도시를 파악하는 데 문제가 있거나 그 반대 일 수 있습니다. 그렇지 않으면 기본적으로 내가 말한 것을 말한 것입니다 ... – alphadogg

0

본인은 USPS web API을 무료로 사용할 수 있지만이를 사용하는 프로그램의 특성과 데이터가 필요한 이유를 비롯한 여러 가지 요인에 따라 사용 권한이 필요하다는 점을 이해합니다.

사용 자격이 있다면 필요한 정보를 얻을 수있는 가장 정확한 소스 일 수 있습니다.

+0

USPS API를 신청할 때 신청서에 어떻게 대답하는지 신중하게 고려해야합니다. 그들은 잘못 대답하면 사용 요청이 거부되는 주요 질문을합니다. 또한 그들은 지난 1 년 동안 휴일에 심각한 다운 시간 문제를 겪었습니다. – DavGarcia

3

CityState 테이블과 관련된 ZipCode 테이블이 있습니다. 일부 우편 번호에는 여러 도시가 연결되어 있으므로 원하는 도시에서 사용자가 선택할 수 있도록하거나 기본 설정을 덮어 쓸 수 있도록 인터페이스를 설정해야 할 수도 있습니다.

나는 위도/경도, 우편 번호 유형 및 카운티와 같은 추가 정보가 필요하므로 ZipInfo.com의 유료 서비스를 사용합니다. 또한 우편 번호는 새 우편 번호가 추가되거나 다른 우편 번호와 병합 될 때 여러 번 변경되기 때문에 일관되게 유지하려면 일년에 몇 번씩 데이터를 업데이트해야합니다.

1

빌드 내용에 따라 Yelp는 무료로 neighborhoods API을 가지고있어 필요한 것을 얻을 수 있습니다. 사용 약관을 확인하고 규정을 준수하는지 확인하십시오.

나는 이것이 db 중심적인 대답이 아니라는 것을 알고 있지만, 데이터베이스 자체에서는 최선을 다하지 못할 수도 있습니다.

0

확실하지 않은 질문입니다. 둘 중 하나를 허용하고 나중에 두 가지 모두를 반환해야합니까?

일부 도시는 여러 개의 지퍼에 걸쳐 있기 때문에 구입할 수있는 우편/도시 데이터베이스조차도 조심해야합니다. 따라서 그 방향으로 항상 "계산"할 수는 없습니다. 반대 방향의 비슷한 문제.

+0

사용자가 둘 중 하나를 제공 할 수 있으며 둘 다 필요합니다. – mmcdole

+0

음, 그렇다면 많은 경우 거리가 포함되어 있지 않으면 적절한 누락 정보를 계산할 수 없습니다. – alphadogg

+0

예를 들어 뉴욕시에는 우편 번호가 6 개 있습니다. 10027이라고 말하면, 우편 번호는 "뉴욕시"와 "맨하탄"의 두 도시에 있습니다. 사용자가 "NYC", "NY City", "New York"등으로 "뉴욕시"를 제공 할 수 있음은 물론입니다. – alphadogg

0

비싸지 않은 물건을 살 수 있고 가져올 수있는 도서관이 있습니다. 그들과 함께 당신의 문제는 당신이 그것으로 유지 보수 비용을 많이 가질 것입니다. 우편 번호는 항상 변경되므로 6 개월 정도면 데이터가 약간 만료됩니다. Google지도와 같은 서비스와 인터페이스하는 것이 좋습니다. 여기에서는 하이브리드 방식을 사용합니다. Google은 6 개월마다 데이터 업데이트 비용을 지출하며, 우편 번호가 테이블에없는 경우 Google지도와 대조하여 입력 한 정보가 유효하고 아직 입력되지 않았는지 확인합니다. 우리 시스템에. 유효하다면 시스템을 업데이트하고 그렇지 않으면 사용자에게 실수가 있음을 알립니다.

또 다른 옵션은 USPS 웹 사이트를 핑 (ping)하는 것입니다. 나는 그들이 zipcode에 의한 도시/국가 look up 페이지를 가지고 있다고 생각한다.

-1

나는 그 박자를 얻었다. 여기에 무료 한 (압축, CSV)입니다 :

Hosted At maphacks.com

헤더 지금 DST

, 우편 번호, 도시, 주, 위도, 경도, 시간대 입니다, 당신의 잠재적 인 손실은 아니라는 것이다 업데이트 지불 (결국 물어 뜯지 만 다소 업데이트를 유지하려고 시도 함)

+0

무료로 조심하십시오. 때로는 사라집니다. 또는 업데이트가 깨끗하지 않습니다. 나는 한 번 자유로운 것에 의지했다. .. 한 번. 데이터베이스가 중요하다면 해당 데이터로 재생하지 마십시오. GIGO. – alphadogg

1

도시 국가에서 지퍼를 얻을 수있는 많은 무료 지오 코딩 웹 서비스가 있으며 그 반대도 마찬가지입니다. GeoNames 웹 서비스를 살펴보십시오. 당신은 당신의 DB를 확인하는 것과 같은 것을 할 수 있습니다. 그리고 당신이 찾고있는 것이 웹 서비스로부터 그것을 잡아서 추가한다면 거기 있지 않습니다. 제공, 그냥 기존의 이름/주소 테이블에서 도시/상태를 조회

: 조회에 대한 이유는 사용자의 편의 경우

1

, 여기에 제 3 자 데이터베이스 라이센스를 필요로하지 않는 다른 방법입니다 우편 번호가 일치합니다. 누군가가 이전에 그 우편 번호에 대한 항목을 만든 경우 해당 항목에서 도시와 주를 찾을 수 있습니다. 이전 항목이없는 경우 최악의 경우 사용자가 도시와 주에 입장해야합니다.

이 솔루션은 사용자의 편의를 위해 필요하다고 가정합니다. 도시, 주, 우편 번호의 정확한 유효성 검사에 더 관심이 있다면 검증 된 데이터베이스의 라이센스를 취득하는 것이 좋습니다.

+0

+1 Intresting 생각! – Ramesh

-1

나는이 웹 사이트를 추가하고 싶습니다 볼 수 있습니다. 당신이 (2014년 3월 20일 현재) 개인/교육을 위해 사용하는 경우

http://www.unitedstateszipcodes.org/zip-code-database/

당신은 무료로 데이터를 다운로드 할 수 있습니다.

+0

이 링크가 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+0

@SimonAdcock 어떻게 정보를 포함 하시겠습니까? ;) – Christoph

+0

@Christoph 하, 공정한 의견. 불행히도 내 의견은 링크 전용 답변으로 표시 할 때 자동으로 추가되었습니다. 여러분이 이미 알고 계시 겠지만, 링크가 끊어지면 링크가 끊어져서 미래의 방문자가 쓸모가 없어지는 것처럼 링크 전용 답변을하지 않는 것이 좋습니다. –

0

미국의 경우 및 StateNameStates 테이블에 가지고 있고 StateId 자동 증가가 있다고 가정하면 다음 쿼리를 사용할 수 있습니다.

이 쿼리는 그것은 불행하게도, 이런 식으로 작동하지 않습니다

INSERT INTO States 
     (StateName) 
     VALUES 
('Alabama'), 
('Alaska'), 
('Arizona'), 
('Arkansas'), 
('California'), 
('Colorado'), 
('Connecticut'), 
('Delaware'), 
('District of Columbia'), 
('Florida'), 
('Georgia'), 
('Hawaii'), 
('Idaho'), 
('Illinois'), 
('Indiana'), 
('Iowa'), 
('Kansas'), 
('Kentucky'), 
('Louisiana'), 
('Maine'), 
('Maryland'), 
('Massachusetts'), 
('Michigan'), 
('Minnesota'), 
('Mississippi'), 
('Missouri'), 
('Montana'), 
('Nebraska'), 
('Nevada'), 
('New Hampshire'), 
('New Jersey'), 
('New Mexico'), 
('New York'), 
('North Carolina'), 
('North Dakota'), 
('Ohio'), 
('Oklahoma'), 
('Oregon'), 
('Pennsylvania'), 
('Puerto Rico'), 
('Rhode Island'), 
('South Carolina'), 
('South Dakota'), 
('Tennessee'), 
('Texas'), 
('Utah'), 
('Vermont'), 
('Virginia'), 
('Washington'), 
('West Virginia'), 
('Wisconsin'), 
('Wyoming'); 
관련 문제