이미 다 알고 있고 할 줄 아니까, 이제 진짜 프로젝트에서 네 지식을 써볼 시간이야. 보통 실제 프로젝트의 데이터베이스는 이렇게 나뉘어:
- 작은 거 - 100개 이하 테이블
- 중간 - 100~1000개 테이블
- 큰 거 - 1000개 이상 테이블
경험 없으면 100개 넘는 테이블이 왜 필요한지 감이 안 올 수도 있어. 그래서 오늘 그런 기회를 줄게 :)
내가 e-commerce 플랫폼용 리얼한 관계형 데이터베이스 (Marketplace)를 줄 거야. 이 데이터베이스는 스키마로 나뉘어 있고, 각 스키마는 사용자, 상품, 주문, 물류, 마케팅, 고객지원 등 특정 도메인 영역을 담당해.
이 프로젝트는 109개 테이블로 구성되어 있고, 11개 스키마로 나뉘어 있어. 각 테이블은 외래키도 달려 있고, 레퍼런스 테이블이나 시스템 테이블로 확장도 쉽게 할 수 있게 준비되어 있어.
데이터베이스 구조
스키마 user — 사용자와 활동
user 스키마에는 계정, 프로필, 연락처 정보, 로그인 로그, 리뷰, 소셜 연결 테이블이 있어.
테이블 예시:
account— 가입 정보profile— 개인 정보review,comment— 리뷰와 댓글
스키마 product — 상품과 카탈로그
product 스키마에는 상품 설명, 옵션, 속성, 이미지, 상태, 변경 이력 등이 들어 있어.
테이블 예시:
product,variant— 상품과 변형attribute,tag— 속성과 태그supplier,composition— 제조사와 구성
스키마 order — 주문과 장바구니
주문 생성, 추적, 상태, 반품, 결제 기능이 들어 있어.
테이블 예시:
order,order_itemstatus_log,return,cancellationinvoice,discount
스키마 logistics — 창고, 배송, 경로
창고 재고, 이동, 배송, 경로 관리를 담당해.
테이블 예시:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
스키마 payment — 결제와 트랜잭션
결제 시스템, 트랜잭션, 지갑, 환불 정보를 저장해.
테이블 예시:
payment,transaction,refundwallet,wallet_transactiongateway,method
스키마 marketing — 프로모션과 광고
프로모션 코드, 배너, 추천 프로그램, 추천 상품 테이블이 있어.
테이블 예시:
campaign,promo_code,discountreferral_program,featured_product
스키마 support — 고객지원
티켓 시스템, 메시지, 상태, 지원 피드백 테이블이야.
테이블 예시:
ticket,ticket_message,ticket_statusagent,feedback
스키마 analytics — 메트릭과 행동
세션, 사용자 행동, 전환, 메트릭 추적용 테이블이야.
테이블 예시:
event,session,click,page_viewgoal,metric_snapshot
스키마 admin — 관리와 운영
관리자, 역할, 감사 로그, 시스템 설정 테이블이야.
테이블 예시:
admin,admin_roleaudit_log,setting,api_token
스키마 content — 정적 페이지와 블록
CMS용 콘텐츠: 페이지, 메뉴, 번역, 버전 테이블이야.
테이블 예시:
page,block,menu,translation,version
스키마 ref — 레퍼런스와 메타 테이블
타입, 상태, 국가, 반품 사유 등등이 들어 있어.
테이블 예시:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
테이블 만들기
너 편하게 하라고, 내가 모든 테이블 만드는 스크립트도 줄 거야.
그냥 SQL 스크립트 받아서 실행만 하면 돼.
- PostgreSQL에서 빈 데이터베이스를 생성합니다.
- 스키마를 다운로드합니다.
- 데이터베이스 구조 가져오기:
psql -U postgres -d marketplace_db < init_schema.sql
데이터 로딩
또한 모든 테이블의 데이터.
GO TO FULL VERSION