# 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 변환