- MASTER_PLAN.md: 마이그레이션 전체 계획 - PROGRESS.md: 진행 상황 및 최종 결과 - phase-1: 5130 소스 스키마 분석 - phase-2: SAM 타겟 스키마 분석 - phase-3: 필드 매핑 설계 마이그레이션 결과: - 총 425건 품목 이관 완료 (models 18, parts 36, parts_sub 117, BDmodels 59, BOM 195) - tenant_id: 287 (경동기업) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
186 lines
5.9 KiB
Markdown
186 lines
5.9 KiB
Markdown
# 5130 품목 테이블 스키마 분석
|
|
|
|
> 분석일: 2025-12-21
|
|
> DB: chandj (MySQL 8.0)
|
|
|
|
---
|
|
|
|
## 1. 테이블 구조 개요
|
|
|
|
### 1.1 품목 관련 테이블
|
|
| 테이블 | 레코드 수 | 설명 |
|
|
|--------|----------|------|
|
|
| `models` | 18 | 제품 모델 (KSS01, KSE01 등) |
|
|
| `parts` | 37 | 모델별 부품 |
|
|
| `parts_sub` | 134 | 부품별 세부 자재 |
|
|
| `item_list` | 9 | 품목 목록 (별도 용도) |
|
|
|
|
### 1.2 계층 구조
|
|
```
|
|
models (제품 모델)
|
|
└─ parts (부품) - model_id 참조
|
|
└─ parts_sub (세부 자재) - part_id 참조
|
|
```
|
|
|
|
---
|
|
|
|
## 2. 테이블 상세 스키마
|
|
|
|
### 2.1 models (제품 모델)
|
|
|
|
| 필드 | 타입 | NULL | 키 | 설명 |
|
|
|------|------|------|-----|------|
|
|
| model_id | int | NO | PRI | 모델 ID |
|
|
| model_name | varchar(255) | NO | | 모델명 (KSS01, KSE01 등) |
|
|
| major_category | enum('스크린','스라트') | NO | | 대분류 |
|
|
| finishing_type | enum('SUS마감','EGI마감') | NO | | 마감 유형 |
|
|
| description | text | YES | | 설명 |
|
|
| guiderail_type | varchar(20) | YES | | 가이드레일 유형 |
|
|
| is_deleted | tinyint(1) | NO | | 삭제 여부 |
|
|
| update_log | text | YES | | 변경 이력 |
|
|
| created_at | datetime | YES | | 생성일 |
|
|
| updated_at | datetime | YES | | 수정일 |
|
|
|
|
**샘플 데이터:**
|
|
```
|
|
model_id=12, model_name='KSS01', major_category='스크린', finishing_type='SUS마감'
|
|
model_id=14, model_name='KSE01', major_category='스크린', finishing_type='SUS마감'
|
|
```
|
|
|
|
### 2.2 parts (부품)
|
|
|
|
| 필드 | 타입 | NULL | 키 | 설명 |
|
|
|------|------|------|-----|------|
|
|
| part_id | int | NO | PRI | 부품 ID |
|
|
| model_id | int | NO | MUL | 모델 ID (FK → models) |
|
|
| part_name | varchar(30) | NO | | 부품명 |
|
|
| spec | varchar(50) | YES | | 규격 (120*70 등) |
|
|
| unit | varchar(15) | YES | | 단위 (SET 등) |
|
|
| quantity | int | NO | | 수량 |
|
|
| unitprice | varchar(15) | YES | | 단가 |
|
|
| memo | text | YES | | 메모 |
|
|
| img_url | text | YES | | 이미지 URL |
|
|
| is_deleted | tinyint(1) | YES | | 삭제 여부 |
|
|
| created_at | datetime | YES | | 생성일 |
|
|
| updated_at | datetime | YES | | 수정일 |
|
|
|
|
**샘플 데이터:**
|
|
```
|
|
part_id=49, model_id=12, part_name='상부브라켓', spec='120*70', unit='SET', quantity=1
|
|
part_id=50, model_id=12, part_name='하부브라켓', spec='60*40', unit='SET', quantity=2
|
|
```
|
|
|
|
### 2.3 parts_sub (세부 자재)
|
|
|
|
| 필드 | 타입 | NULL | 키 | 설명 |
|
|
|------|------|------|-----|------|
|
|
| subpart_id | int | NO | PRI | 세부 자재 ID |
|
|
| part_id | int | NO | MUL | 부품 ID (FK → parts) |
|
|
| subpart_name | varchar(255) | NO | | 자재명 |
|
|
| quantity | int | NO | | 수량 |
|
|
| material | varchar(255) | YES | | 재질 (SUS 1.2T 등) |
|
|
| bendSum | varchar(15) | YES | | 벤딩 합계 |
|
|
| plateSum | varchar(15) | YES | | 판재 합계 |
|
|
| finalSum | varchar(15) | YES | | 최종 합계 |
|
|
| unitPrice | varchar(15) | YES | | 단가 |
|
|
| computedPrice | varchar(15) | YES | | 계산 단가 |
|
|
| lineTotal | varchar(15) | YES | | 라인 합계 |
|
|
| image_url | varchar(255) | YES | | 이미지 URL |
|
|
| is_deleted | tinyint(1) | YES | | 삭제 여부 |
|
|
| created_at | datetime | YES | | 생성일 |
|
|
| updated_at | datetime | YES | | 수정일 |
|
|
|
|
**샘플 데이터:**
|
|
```
|
|
subpart_id=64, part_id=49, subpart_name='1차(전면)', quantity=1, material='SUS 1.2T'
|
|
subpart_id=65, part_id=49, subpart_name='2차(후면)', quantity=2, material='EGI 1.55T'
|
|
```
|
|
|
|
### 2.4 item_list (품목 목록)
|
|
|
|
| 필드 | 타입 | NULL | 키 | 설명 |
|
|
|------|------|------|-----|------|
|
|
| num | int | NO | PRI | 번호 |
|
|
| item_name | varchar(100) | NO | | 품목명 |
|
|
| col13 | decimal(10,2) | YES | | 가격 |
|
|
| col60~col80 | varchar(50) | YES | | 추가 속성들 |
|
|
|
|
> ⚠️ 컬럼명이 col60~col80으로 되어 있어 의미 파악 필요
|
|
|
|
---
|
|
|
|
## 3. 관계도
|
|
|
|
```
|
|
┌─────────────────┐
|
|
│ models │
|
|
│ (18 레코드) │
|
|
│ │
|
|
│ model_id (PK) │
|
|
│ model_name │
|
|
│ major_category │
|
|
│ finishing_type │
|
|
└────────┬────────┘
|
|
│ 1:N
|
|
▼
|
|
┌─────────────────┐
|
|
│ parts │
|
|
│ (37 레코드) │
|
|
│ │
|
|
│ part_id (PK) │
|
|
│ model_id (FK) ──┤
|
|
│ part_name │
|
|
│ spec │
|
|
└────────┬────────┘
|
|
│ 1:N
|
|
▼
|
|
┌─────────────────┐
|
|
│ parts_sub │
|
|
│ (134 레코드) │
|
|
│ │
|
|
│ subpart_id (PK) │
|
|
│ part_id (FK) ───┤
|
|
│ subpart_name │
|
|
│ material │
|
|
└─────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 4. 데이터 특성
|
|
|
|
### 4.1 major_category (대분류)
|
|
- `스크린` (Screen)
|
|
- `스라트` (Slat)
|
|
|
|
### 4.2 finishing_type (마감 유형)
|
|
- `SUS마감` (스테인리스)
|
|
- `EGI마감` (아연도금)
|
|
|
|
### 4.3 material (재질) - parts_sub
|
|
- `SUS 1.2T`, `SUS 1.5T` (스테인리스)
|
|
- `EGI 1.55T` (아연도금)
|
|
|
|
---
|
|
|
|
## 5. 마이그레이션 고려사항
|
|
|
|
### 5.1 구조적 차이
|
|
| 5130 | SAM | 비고 |
|
|
|------|-----|------|
|
|
| 3단계 계층 (models→parts→parts_sub) | items + item_bom_items | 구조 변환 필요 |
|
|
| 단순 FK 관계 | entity_relationships 사용 | 관계 정의 방식 다름 |
|
|
| 고정 컬럼 | JSON attributes | 유연한 속성 저장 |
|
|
|
|
### 5.2 매핑 방향
|
|
1. **models** → `items` (item_type='FG', 완제품)
|
|
2. **parts** → `items` (item_type='PT', 부품)
|
|
3. **parts_sub** → `items` (item_type='RM', 원자재)
|
|
4. **parts → models 관계** → `item_bom_items` 또는 `entity_relationships`
|
|
5. **parts_sub → parts 관계** → `item_bom_items` 또는 `entity_relationships`
|
|
|
|
### 5.3 데이터 변환 필요 항목
|
|
- `major_category` → `attributes.category` 또는 별도 분류
|
|
- `finishing_type` → `attributes.finishing_type`
|
|
- `material` → `attributes.material`
|
|
- 가격 필드들 (varchar) → decimal 변환 |