<aside> 💡

테이블 명명 규칙: 모든 테이블에 p_ 접두사 사용

UUID 사용: postgres의 경우, 모든 주요 엔티티의 식별자는 UUID를 사용 (유저는 예외) 그 외 데이터베이스는 자율.

분산 데이터베이스: 마이크로서비스별 독립된 데이터베이스를 사용하며, 필요한 경우 분산 데이터베이스 및 데이터 복제를 통해 가용성과 성능을 보장합니다.

Audit 필드: 모든 테이블에 created_at, created_by, updated_at, updated_by, deleted_at, deleted_by 필드를 추가하여 데이터 감사 로그 기록

허브 테이블 (p_hubs)

필드 이름 데이터 타입 설명
hub_id UUID 허브 id, Primary Key
name VARCHAR(30) 허브 이름
address VARCHAR(100) 주소
latitude GEOGRAPHY / Double 위도
longitude GEOGRAPHY / Double 경도
is_deleted BOOLEAN 논리적 삭제 관리
created_at TIMESTAMP 레코드 생성 시간
created_by VARCHAR(100) 레코드 생성자 (username)
updated_at TIMESTAMP 레코드 수정 시간
updated_by VARCHAR(100) 레코드 수정자 (username)
deleted_at TIMESTAMP 레코드 삭제 시간
deleted_by VARCHAR(100) 레코드 삭제자 (username)

허브 간 이동정보 관리 테이블 (p_hub_paths)

필드 이름 데이터 타입 설명
hub_paths_id UUID PK
start_hub_id Hub 출발 허브 ID
end_hub_id Hub 도착 허브 ID
duration LocalTime 소요 시간
path String 이동 경로 (허브-허브)
is_deleted BOOLEAN 논리적 삭제 관리
created_at TIMESTAMP 레코드 생성 시간
created_by VARCHAR(100) 레코드 생성자 (username)
updated_at TIMESTAMP 레코드 수정 시간
updated_by VARCHAR(100) 레코드 수정자 (username)
deleted_at TIMESTAMP 레코드 삭제 시간
deleted_by VARCHAR(100) 레코드 삭제자 (username)

배송 담당자 테이블 (p_delivery_drivers)

필드 이름 데이터 타입 설명
user_id Long 사용자 관리 엔티티의 사용자와 동일해야 함
slack_id UUID slack_id
driver_type VARCHAR(100) 배송 담당자 타입

업체 테이블 (p_companies)

필드 이름 데이터 타입 설명
company_id UUID 업체 식별 ID, PK
company_name VARCHAR(100) 업체 이름
company_type VARCHAR(100) 업체 타입

상품 테이블 (p_products)

필드 이름 데이터 타입 설명
product_id UUID 상품 식별 ID, PK
product_name VARCHAR(100) 상품 이름
company_id UUID 업체 ID, FK
hub_id UUID 상품 관리 허브 ID, FK
stock int 상품 재고 개수
is_deleted BOOLEAN 논리적 삭제 관리
created_at TIMESTAMP 레코드 생성 시간
created_by VARCHAR(100) 레코드 생성자 (username)
updated_at TIMESTAMP 레코드 수정 시간
updated_by VARCHAR(100) 레코드 수정자 (username)
deleted_at TIMESTAMP 레코드 삭제 시간
deleted_by VARCHAR(100) 레코드 삭제자 (username)