[database] 데이터베이스 (RDBMS)에 우편 주소를 저장하는 모범 사례?

RDBMS에 우편 주소를 저장하는 모범 사례에 대한 좋은 참조가 있습니까? 만들 수있는 많은 장단점이 있고 각각에 대해 많은 장단점을 평가해야하는 것 같습니다. 확실히 이것은 몇 번이고 반복 되었습니까? 누군가 적어도 어딘가에서 배운 교훈을 쓴 적이 있습니까?

내가 말하는 절충점의 예는 우편 번호를 정수 대 문자 필드로 저장하는 것입니다. 집 번호를 별도의 필드 또는 주소 행 1의 일부로 저장해야하는지, 스위트 / 아파트 / 기타 번호가 정규화되거나 주소 줄 2의 텍스트 덩어리, zip +4 (별도 필드 또는 하나의 큰 필드, 정수 대 텍스트)를 어떻게 처리합니까? 기타

저는이 시점에서 주로 미국 주소에 관심이 있지만 글로벌화의 결과에 대비하기위한 몇 가지 모범 사례가 있다고 생각합니다 (예 : 우편 번호 대신 주 또는 우편 번호 대신 지역과 같은 필드 이름 지정, 기타



답변

더 많은 국제적 사용을 위해 고려할 하나의 스키마는 Drupal 주소 필드에서 사용하는 스키마 입니다. xNAL 표준을 기반으로하며 대부분의 국제 사례를 다루는 것으로 보입니다. 이 모듈을 조금만 파헤쳐 보면 국제적으로 주소를 해석하고 검증 할 수있는 좋은 진주가 나올 것입니다. 또한 ISO 코드가있는 멋진 행정 구역 (도, 주, 주 등)이 있습니다.

다음은 모듈 페이지에서 복사 한 스키마의 요점입니다.

country => Country (always required, 2 character ISO code)
name_line => Full name (default name entry)
first_name => First name
last_name => Last name
organisation_name => Company
administrative_area => State / Province / Region (ISO code when available)
sub_administrative_area => County / District (unused)
locality => City / Town
dependent_locality => Dependent locality (unused)
postal_code => Postal code / ZIP Code
thoroughfare => Street address
premise => Apartment, Suite, Box number, etc.
sub_premise => Sub premise (unused)

내가 배운 교훈 :

  • 숫자로 아무것도 저장하지 마십시오.
  • 가능한 경우 국가 및 행정 구역을 ISO 코드로 저장하십시오.
  • 모를 때는 필드 요구에 대해 느슨해 지십시오. 일부 국가에서는 locality& 와 같은 기본적인 것조차도 당연하게 여기는 필드를 사용하지 않을 수 있습니다 thoroughfare.

답변

‘국제’사용자로서 미국 형식 주소만을 지향하는 웹 사이트를 다루는 것보다 더 실망스러운 것은 없습니다. 처음에는 약간 무례하지만 유효성 검사도 지나치게 열성적 일 때는 심각한 문제가됩니다.

글로벌화에 관심이 있으시다면 제가 할 수있는 유일한 조언은 자유 형식을 유지하는 것입니다. 국가마다 규칙이 다릅니다. 일부에서는 집 번호가 거리 이름 앞에 나오고 일부에서는 그 뒤에옵니다. 일부에는 주, 일부 지역, 일부 카운티, 일부 조합이 있습니다. 여기 영국에서는 우편 번호가 우편 번호가 아니라 문자와 숫자가 모두 포함 된 우편 번호입니다.

우편 번호에 대한 별도의 필드와 함께 ~ 10 줄의 가변 길이 문자열을 권장합니다. 사용자 / 고객이 주소 작성 방법을 결정하게하십시오.


답변

다른 국가에서 우편 주소를 사용하는 방법에 대한 포괄적 인 정보가 필요한 경우 다음은 매우 좋은 참조 링크입니다 (Columbia University).

우편 주소에 대한 Frank의 강박 지침 효과적인 국제 우편 주소
지정


답변

“half-numbers”또는 “129A”와 같은 내 현재 주소와 같은 특수한 경우 때문에 집 번호를 숫자가 아닌 문자 필드로 저장하는 것을 확실히 고려해야합니다. 그러나 A는 아파트로 간주되지 않습니다. 배달 서비스 번호.


답변

저는이 작업을 수행했으며 (데이터베이스에서 주소 구조를 엄격하게 모델링), 다시는하지 않을 것입니다. 일반적으로 고려해야 할 예외가 얼마나 미친 지 상상할 수 없습니다.

나는 노르웨이 우편 번호 (내 생각에)와 관련된 문제를 모호하게 기억한다. (내 생각에는) 18 개 정도의 오슬로를 제외하고 모두 4 개 위치였다.

나는 우리가 모든 국가 주소에 대해 지리적으로 정확한 우편 번호를 사용하기 시작한 순간부터 꽤 많은 사람들이 그들의 우편물이 너무 늦게 도착했다고 불평하기 시작했다고 확신합니다. 그 사람들은 우편 지역 사이의 경계선 근처에 살고 있었고 누군가가 실제로 우편 지역 (예 : 1600)에 살았음에도 불구하고 실제로 그의 우편물은 우편 지역 1610으로 발송되어야합니다. 왜냐하면 실제로는 이웃 우편 지역 이었기 때문입니다. 우편물을 올바른 우편 지역으로 보내면 우편물을 잘못된 우편 지역으로 전달하기 위해 올바른 우체국에서 원치 않는 개입이 필요했기 때문에 우편물이 도착하는 데 며칠 더 걸릴 것입니다.

(우리는 ISO 코드 ‘ZZ’로 국가에 해외 주소를 가진 사람들을 등록했습니다.)


답변

이것이 관계형 데이터베이스에서 주소 정보를 모델링하는 좋은 방법입니까? “를 반드시 참조해야 하지만 귀하의 질문은 그것과 직접적으로 중복되지 않습니다.

분명히 많은 기존 답변이 있습니다 (예 를 들어 DatabaseAnswers 에서 예제 데이터 모델 확인 ). 기존 답변의 대부분은 일부 상황에서 결함이 있습니다 (DB Answers를 전혀 선택하지 않음).

고려해야 할 한 가지 주요 문제는 주소 범위입니다. 데이터베이스가 국제 주소를 처리해야하는 경우 한 국가의 주소 만 처리해야하는 경우보다 더 유연해야합니다.

제 생각에는 주소의 ‘주소 라벨 이미지’를 기록하고 콘텐츠를 개별적으로 분석하는 것이 종종 ( 항상 그런 것은 아닙니다 ) 현명합니다. 이를 통해 우편 번호 배치 간의 차이 (예 : 다른 국가 간의 차이)를 처리 할 수 ​​있습니다. 물론, 다른 국가의 편심을 처리하는 분석기와 포맷터를 작성할 수 있습니다 (예를 들어 미국 주소에는 2 줄 또는 3 줄이 있고, 반대로 영국 주소에는 상당히 더 많을 수 있습니다. 주기적으로 쓰는 주소에는 9 줄이 있습니다). 그러나 사람이 분석 및 서식을 지정하고 DBMS가 데이터를 저장하도록하는 것이 더 쉬울 수 있습니다.


답변

거리 번호 나 우편 번호에 대한 수학을하지 않는 한, 숫자로 저장하여 미래의 고통을 불러 일으키는 것입니다.

여기저기서 몇 바이트를 절약하고 더 빠른 색인을 얻을 수 있지만 미국 우편 또는 귀하가 거래하는 다른 국가에서 코드에 알파를 도입 할 때 어떻게해야합니까?

디스크 공간의 비용은 나중에 고치는 비용보다 훨씬 저렴할 것입니다 … y2k 누구?