만일 실물을 택배로 배송해야 할 경우 주소지 입력하는 방법이 궁금해서요.
39
작성한 질문수 19
바이브 플러그님. 복습하다가 이런저런 질문이 생겨서요.
지금 예제 강의는 디지털상품이라 배송이 필요가 없는데, 만일 실제 물건을 보내야 하는 상황이면 구매자가 받을 주소를 입력할 창이 필요할 텐데, 좋은 방법이 있을까요?
실무에서는 보통 어떤 방법을 쓰시나요?
제 생각에는 택배보낼 곳 DB에는
기존에 이름과, 결재승인여부는 이미 확인했고(다른 테이블에서)
전화번호, 우편번호, 받을 주소 3개의 컬럼을 추가하면 될 것 같은데.
택배 배송을 위한 테이블만들 때 특별한 팁이 있나요? 왜 궂이 물어보냐하면,
우편번호는 우체국에 DB가 있을 것같고, 주소에 몇글자만 타이핑하면 우편번호와 기본주소를 가져오고, 세부주소를 타이핑하는거라서 좀 더 쉽게 하는 방법이 없나 해서요.
답변 4
2
실무에서는 보통 주소 전체를 사용자가 직접 입력하게 하기보다는 주소 검색 API를 사용합니다.
국내 서비스라면 카카오(다음) 우편번호 서비스를 많이 사용합니다.
사용자가 주소 검색 버튼을 누르면 주소 검색창이 뜨고,
주소 검색
우편번호와 기본주소 자동 입력
상세주소(동/호수 등)만 직접 입력
하는 방식으로 구현하는 경우가 많습니다.
DB는 말씀하신 구조와 비슷하지만, 보통 배송 정보를 별도로 관리합니다.
예를 들면
수령인 이름
전화번호
우편번호
기본주소
상세주소
정도를 저장할 수 있습니다.
여기서 한 가지 주의할 점은 회원의 주소와 실제 주문의 배송지를 분리하는 것입니다.
회원이 자주 사용하는 배송지를 저장해둘 수는 있지만, 주문이 완료되면 그 시점의 배송 정보를 주문에 별도로 저장해두는 편이 좋습니다.
예를 들어 주문 후 회원이 주소를 변경하더라도 이미 주문한 상품의 배송지가 변경되면 안 되기 때문입니다.
그래서 대략적으로는
회원 → 주문 → 주문 배송정보
같은 구조로 두고, 주문 배송정보에 당시 입력한 수령인/전화번호/우편번호/주소를 저장하는 방식으로 구현할 수 있습니다.
주소 검색 자체를 직접 우편번호 DB를 구축해서 구현할 수도 있겠지만, 국내 서비스에서는 굳이 주소 데이터를 직접 관리하기보다는 이미 제공되는 주소 검색 서비스를 이용하는 것이 훨씬 편합니다.
1
오.. 바이브플러그님. 자세한 설명 감사합니다. 많은 도움이 되었습니다.. 정말 경우의 수가 많군요. 생각해보니 저도 쿠팡에 배송지가 여러개가 되는군요. 제 이름으로 다른 사람에게 보낼 경우도 있구요. 공부하고 또 문의 드리겠습니다.
0
안녕하세요, 좋은하루님!
열심히 수강해주시고 이렇게 좋은 질문 남겨주셔서 감사합니다 😊
좋은 질문이에요!
답변이 조금 늦었는데 먼저 자세하게 답변 남겨주신 eggmun님께도 감사드립니다. 말씀해주신 내용이 정확합니다 😊
구현
주소 입력은 보통 직접 타이핑하게 하기보다는 카카오(Daum) 우편번호 서비스 같은 주소 검색 API를 사용합니다.
카카오에서 제공하는 JavaScript를 사이트에 불러온 뒤 주소 검색 버튼과 연결하는 방식이에요. 버튼을 누르면 아래처럼 주소검색 팝업이 열리고,

사용자가 주소를 선택하면 우편번호와 기본주소 필드(직접 타이핑 불가 처리)가 자동으로 채워지게 하고, 그 밑에 상세주소 필드만 직접 입력하는 방식으로 구현하면 됩니다.
공식 가이드에 예제 코드까지 잘 나와 있어서 Claude Code에 “Kakao 우편번호 서비스 공식 가이드를 기준으로 배송지 추가 화면에 주소검색 기능을 연동해줘”라고 요청하면 충분합니다. 모바일까지 고려한다면 새 창 팝업보다는 모달 안에 embed 방식으로 띄우도록 요청하는 것도 좋습니다.
DB
DB 구조에서 중요한 부분은 eggmum님이 답변해주신것처럼 회원이 현재 저장해둔 주소와 실제 주문 당시의 배송지를 구분하는 것입니다.
주문 후 나중에 회원정보에 저장된 주소를 변경하더라도 이미 완료된 주문의 배송 주소까지 같이 바뀌면 안되기 때문에 주문이 발생할 때는 보통
수령인 이름
연락처
우편번호
기본주소
상세주소
그리고 추가로 배송메모(선택 입력) 정도를 주문 당시의 배송정보로 저장합니다.
현재처럼 주문 1건당 배송지 1곳인 일반적인 구조라면 굳이 배송지 테이블을 따로 만들기보다는 orders 테이블에 배송 관련 컬럼을 추가하는 방식으로도 충분합니다.
예를 들면,
users → 회원 기본정보orders → 주문정보 + 주문 당시 배송정보
처럼 구성하고, orders에 recipient_name, recipient_phone, shipping_postcode, shipping_address, shipping_address_detail 같은 컬럼을 추가하면 됩니다.
다만 서비스가 복잡해져서 한 주문의 상품을 여러 주소로 나눠 보내야 한다거나, 주문 하나가 여러 배송 건으로 분리되는 경우에는 그때 order_shipping_addresses나 shipments 같은 별도 테이블로 분리하는 구조를 고려할 수 있습니다. 그런데 처음부터 꼭 그렇게 복잡하게 만들 필요는 없어요.
만약 쿠팡처럼 사용자가 여러 배송지를 미리 저장하고 선택하는 기능까지 만들고 싶다면 user_addresses 같은 별도 테이블을 추가할 수도 있습니다. 이 경우에도 주문이 확정되는 순간 선택한 주소를 orders에 주문 당시 배송정보로 복사해서 저장하는 것이 안전합니다.
UI/UX
UI/UX적으로는 최근 쇼핑몰들은 회원가입할 때부터 주소를 필수로 받기보다는, 실제 첫 주문 단계에서 배송지 추가를 통해 주소를 등록하는 방식을 많이 씁니다. 처음 등록한 주소는 기본 배송지로 설정하고, 이후 주문부터는 기본 배송지를 바로 보여주면서 변경하거나 새 배송지를 추가할 수 있게 만드는 식입니다.
예를 들면 세르지오 타키니 홈페이지를 참고해볼수도 있을 것 같아요 :) 여기도 이런 방식으로 구현되어있습니다.
정리하면,
주소 입력 → 카카오 주소검색 API 활용
배송정보 → 주문 시점의 주소를 orders에 저장
복잡한 배송 구조가 필요해질 때만 별도 테이블 분리
이 정도로 생각하시면 됩니다 😊
이런 식으로 실제 서비스를 운영했을 때 필요한 기능까지 생각해보시는 게 정말 좋은 접근이에요. 만일 주소 구현하시다가 DB 구조나 주소 API 연결 부분에서 막히는 게 있으면 언제든 편하게 질문 남겨주세요!!
10강 스킬파일 문의드립니다.
0
15
1
api 키 생성 버튼 비활성화
0
13
1
개인적인 질문인데요..
0
20
1
local3000 쿠키 삭제했는데 인덱스페이지로 이동
0
10
0
수업자료 보러가기 + 프로젝트 파일 다운로드 누르니 zip파일이 없는데요?
0
16
2
shrimp task manager 사용 관련 질문입니다.
0
17
1
도메인 바꾸는 버튼이 없어요.
0
17
2
title, description 값이 NULL 입니다
0
24
2
저는 상품을 파는게 아니라 병원인데 이런 경우엔 자산을 어떻게 기록하면 될까요
0
24
1
리액트 타입스크립트 설정 시 에러
0
18
1
제가 잘 몰라서 그러는데. 깃허브에 주소 강의소스 코드말인데요.
0
18
1
18강 "[원하시는 분들만] Git 강의 무료 / 할인가에 듣기" 강의 내용이 표시되지 않습니다
0
23
1
강의 제목과 시간이 같아요
0
22
1
47강에 비회원 주문관련 질문이 있어서요.
0
22
1
검색 대상 종목 선정
1
32
2
각 기능별 에이전트 세션을 다시 찾기 쉽나요?
0
22
0
섹션2 - 4강. Context harness 설계 관련 질문
0
25
1
메모리 , rule
0
34
2
디비를 조작하는데 사용하는 명령어가 ORM인가요?
0
24
2
커서 기본 세팅 질문
0
22
1
클로드 코드로 제작된 앱 검증
0
38
2
31강 학습자료에 프롬프트가 엉뚱한것이 있어요
1
42
1
강의 소스 코드는 어디서 볼수 있나여?
1
53
1
17강 강의에 목데이터 첨부파일이 없습니다.
2
69
2





