Sparta Java 단기 심화 - 3TM 프로젝트 설계

송형근·2024년 9월 5일
0

TIL

목록 보기
30/43
post-thumbnail

물류 관리 및 배송 MSA 프로젝트

프로젝트 개요

  • 이번 프로젝트는 B2B 물류 관리 및 배송 시스템 입니다. B2B는 Business to Business의 약자로, 기업 간 거래를 의미합니다.
  • 스파르타 물류는 각 지역에 허브센터를 가지고 있으며 각 허브 센터는 여러 업체의 물건을 보관합니다.
  • 업체의 상품은 허브에서 필요한 경우 바로 허브로 전달됩니다.
  • 해당 상품의 배송 요청이 들어오면 목적지 허브로 물품을 이동시켜 목적지에 배송합니다.

테이블 명세 및 ERD

테이블 명세

  • 사용자 테이블(p_users)

    필드 이름데이터 타입설명
    idLongPK, AI
    user_idVARCHAR(10)사용자 ID, Primary Key / 최소 4자 이상 10자 이하의 알파벳 소문자(a~z)와 숫자(0~9)로 구성
    user_nameVARCHAR(20)사용자 이름
    passwordVARCHAR(15)사용자 비밀번호 / 최소 8자 이상 15자 이하의 알파벳 대소문자(a~z, A~Z)와 숫자(0~9), 특수문자로 구성
    phone_numberVARCHAR(13)사용자 전화번호
    user_roleENUM사용자 역할(SHIPPER, HUB_ADMIN, COMPANY, MASTER)
    is_deleteboolean삭제 여부 Column
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 허브 테이블(p_hubs)

    필드 이름데이터 타입설명
    idLongPrimary Key
    hub_nameVARCHAR(100)허브 이름
    addressString허브 주소
    latitudeDouble허브 주소 위치 위도
    longitudeDouble허브 주소 위치 경도
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 허브 이동 정보 테이블(p_hub_movement_infos)

    필드 이름데이터 타입설명
    idLong허브 이동 정보 테이블 ID
    start_hubLong출발 허브 ID
    end_hubLong도착 허브 ID
    estimated_timeTime예상 소요 시간
    estimated_distanceDouble예상 소요 거리
    is_deleteboolean삭제 여부
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 배송 담당자 테이블(p_delivery_managers)

    필드 이름데이터 타입설명
    idLongPrimary Key
    user_idLongUser_id
    hub_idLongHub id (허브 이동 담당자 : 임의로 0 삽입)
    slack_idStringslack Id
    manager_typeENUM허브 이동 담당자, 업체 배송 담당자
    is_deleteis_delete삭제 여부
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 업체 테이블(p_companies)

    필드 이름데이터 타입설명
    idLongPrimary Key
    hub_idLong업체를 담당하고 있는 Hub_id ( 현재 1:1 매칭 담당 가정 )
    nameString업체명
    typeENUM공급 업체, 수령 업체
    addressString업체 주소
    is_deleteis_delete삭제 여부
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 상품 테이블(p_products)

    필드 이름데이터 타입설명
    idLongPK, AI
    company_idLong업체 ID, FK
    hub_idLong허브 ID, FK
    product_nameVARCHAR(100)상품 명
    quantityINTEGER상품 수량
    is_deleteBoolean삭제 여부 Column
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 주문 테이블(p_orders)

    필드 이름데이터 타입설명
    idLongPK, AI
    supply_company_idLong공급업체 ID, FK
    demand_company_idLong수령업체 ID, FK
    product_idLong상품 ID, FK
    amountINTEGER주문 수량
    delivery_idLong주문 ID, FK
    is_deleteBoolean삭제 여부 Column
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 배송 테이블(p_deliveries)

    필드 이름데이터 타입설명
    idLong배송 ID
    order_idLong주문 ID
    delivery_statusENUM현재상태(허브 대기중, 허브 이동중, 목적지 허브 도착, 배송중 등)
    start_hubLong시작 허브 ID
    end_hubLong도착 허브 ID
    addressString배송지 주소
    recipientString수령인
    recipient_slackString수령인 slack ID
    is_deleteboolean삭제 여부
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 배송 경로 기록 테이블(p_delivery_routes)

    필드 이름데이터 타입설명
    idLong배송 경로 기록 ID
    delivery_idLong배송 ID
    hub_movement_infoLong허브 이동경로 ID
    sequenceLong배송 순서
    distanceDouble실제 걸린 거리
    duration_timeTime실제 걸린 시간
    route_statusENUM현재상태(허브 대기중, 허브 이동중, 목적지 허브 도착, 배송중 등)
    is_deleteboolean삭제여부
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)
  • 슬랙 메시지 테이블(p_slack_message)

    필드 이름데이터 타입설명
    idLongPrimary Key
    receiver_idLong수신자 User Id
    messageString메시지 내용
    send_timeTIMESTAMP보낸 시각
    created_atTIMESTAMP레코드 생성 시간
    created_byVARCHAR(100)레코드 생성자 (username)
    updated_atTIMESTAMP레코드 수정 시간
    updated_byVARCHAR(100)레코드 수정자 (username)
    deleted_atTIMESTAMP레코드 삭제 시간
    deleted_byVARCHAR(100)레코드 삭제자 (username)

ERD

API 명세서

인프라 설계서

profile
기록을 남겨보자

0개의 댓글