<aside> 💡
테이블 명명 규칙: 모든 테이블에 p_ 접두사 사용
UUID 사용: postgres의 경우, 모든 주요 엔티티의 식별자는 UUID를 사용 (유저는 예외) 그 외 데이터베이스는 자율.
분산 데이터베이스: 마이크로서비스별 독립된 데이터베이스를 사용하며, 필요한 경우 분산 데이터베이스 및 데이터 복제를 통해 가용성과 성능을 보장합니다.
Audit 필드: 모든 테이블에 created_at, created_by, updated_at, updated_by, deleted_at, deleted_by 필드를 추가하여 데이터 감사 로그 기록
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| 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) |
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| 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) |
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| user_id | Long | 사용자 관리 엔티티의 사용자와 동일해야 함 |
| slack_id | UUID | slack_id |
| driver_type | VARCHAR(100) | 배송 담당자 타입 |
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| company_id | UUID | 업체 식별 ID, PK |
| company_name | VARCHAR(100) | 업체 이름 |
| company_type | VARCHAR(100) | 업체 타입 |
| 필드 이름 | 데이터 타입 | 설명 |
|---|---|---|
| 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) |