Files
sam-docs/projects/5130-migration/phase-2-target-analysis/sam-item-schema.md
kent e217266376 docs: 5130 → SAM 품목 마이그레이션 문서 추가
- 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>
2025-12-21 13:49:28 +09:00

10 KiB

SAM 품목 테이블 스키마 분석

분석일: 2025-12-21 DB: samdb (MySQL 8.0)


1. 테이블 구조 개요

1.1 품목 관련 테이블

테이블 설명
items 품목 기본 정보 (통합 테이블)
item_details 품목 상세 정보
item_sections 섹션 정의 (UI 그룹핑)
item_fields 필드 정의 (동적 속성)
item_pages 페이지 정의 (품목 유형별)
item_bom_items BOM 구성 품목
item_id_mappings 레거시 ID 매핑
entity_relationships 엔티티 간 관계

1.2 Multi-tenant 구조

모든 테이블에 tenant_id 필드로 테넌트 분리


2. 테이블 상세 스키마

2.1 items (품목 기본 정보)

필드 타입 NULL 설명
id bigint unsigned NO PRI 품목 ID
tenant_id bigint unsigned NO MUL 테넌트 ID
item_type varchar(15) NO 품목 유형 (FG/PT/SM/RM/CS)
code varchar(100) NO 품목 코드
name varchar(255) NO 품목명
unit varchar(20) YES 단위
category_id bigint unsigned YES 카테고리 ID
bom json YES BOM 정보 (JSON)
attributes json YES 동적 속성 (JSON)
attributes_archive json YES 속성 이력
options json YES 옵션
description text YES 설명
is_active tinyint(1) NO 활성 여부
created_by bigint unsigned YES 생성자
updated_by bigint unsigned YES 수정자
deleted_by bigint unsigned YES 삭제자
created_at timestamp YES 생성일
updated_at timestamp YES 수정일
deleted_at timestamp YES 삭제일 (Soft Delete)

item_type 값:

  • FG: Finished Goods (완제품)
  • PT: Parts (부품)
  • SM: Semi-finished (반제품)
  • RM: Raw Materials (원자재)
  • CS: Consumables (소모품)

2.2 item_details (품목 상세)

필드 타입 NULL 설명
id bigint unsigned NO ID
item_id bigint unsigned NO 품목 ID (FK)
is_sellable tinyint(1) NO 판매 가능
is_purchasable tinyint(1) NO 구매 가능
is_producible tinyint(1) NO 생산 가능
safety_stock int YES 안전 재고
lead_time int YES 리드 타임
is_variable_size tinyint(1) NO 가변 사이즈
product_category varchar(50) YES 제품 분류
part_type varchar(50) YES 부품 유형
bending_diagram varchar(255) YES 벤딩 도면
bending_details json YES 벤딩 상세
specification_file varchar(255) YES 규격서 파일
certification_file varchar(255) YES 인증서 파일
certification_number varchar(255) YES 인증 번호
certification_start_date date YES 인증 시작일
certification_end_date date YES 인증 종료일
is_inspection varchar(1) NO 검사 대상 여부
item_name varchar(255) YES 품목명 (검색용)
specification varchar(255) YES 규격
search_tag text YES 검색 태그
remarks text YES 비고

2.3 item_bom_items (BOM 구성)

필드 타입 NULL 설명
id bigint unsigned NO ID
tenant_id bigint unsigned NO 테넌트 ID
group_id int unsigned NO 그룹 ID
item_code varchar(100) YES 품목 코드
item_name varchar(255) NO 품목명
quantity decimal(15,4) NO 수량
unit varchar(50) YES 단위
unit_price decimal(15,2) YES 단가
total_price decimal(15,2) YES 합계
spec text YES 규격
note text YES 비고

2.4 item_sections (섹션 정의)

필드 타입 NULL 설명
id bigint unsigned NO ID
tenant_id bigint unsigned NO 테넌트 ID
group_id int unsigned NO 그룹 ID
title varchar(255) NO 섹션 제목
type enum('fields','bom') NO 섹션 유형
order_no int NO 정렬 순서
is_template tinyint(1) NO 템플릿 여부
is_default tinyint(1) NO 기본 여부
description text YES 설명

2.5 item_fields (필드 정의)

필드 타입 NULL 설명
id bigint unsigned NO ID
tenant_id bigint unsigned NO 테넌트 ID
group_id int unsigned NO 그룹 ID
field_name varchar(255) NO 필드명
field_key varchar(100) YES 필드 키
field_type enum(...) NO 필드 유형
order_no int NO 정렬 순서
is_required tinyint(1) NO 필수 여부
default_value text YES 기본값
validation_rules json YES 검증 규칙
options json YES 선택 옵션
storage_type enum('column','json') NO 저장 방식
json_path varchar(200) YES JSON 경로
is_common tinyint(1) NO 공통 필드 여부
is_active tinyint(1) NO 활성 여부

field_type 값:

  • textbox, number, dropdown, checkbox, date, textarea

2.6 item_pages (페이지 정의)

필드 타입 NULL 설명
id bigint unsigned NO ID
tenant_id bigint unsigned NO 테넌트 ID
group_id int unsigned NO 그룹 ID
page_name varchar(255) NO 페이지명
item_type enum('FG','PT','SM','RM','CS') NO 품목 유형
source_table varchar(100) YES 소스 테이블
absolute_path varchar(500) YES 절대 경로
is_active tinyint(1) NO 활성 여부

2.7 item_id_mappings (레거시 매핑)

필드 타입 NULL 설명
id bigint unsigned NO ID
source_table varchar(20) NO 소스 테이블
source_id bigint unsigned NO 소스 ID
item_id bigint unsigned NO SAM 품목 ID

마이그레이션 추적용 테이블 - 5130 원본 ID와 SAM ID 매핑

2.8 entity_relationships (엔티티 관계)

필드 타입 NULL 설명
id bigint unsigned NO ID
tenant_id bigint unsigned NO 테넌트 ID
group_id int unsigned NO 그룹 ID
parent_type varchar(50) NO 부모 엔티티 유형
parent_id bigint unsigned NO 부모 ID
child_type varchar(50) NO 자식 엔티티 유형
child_id bigint unsigned NO 자식 ID
order_no int NO 정렬 순서
metadata json YES 메타데이터

3. 관계도

┌─────────────────────────────────────────────────────────────┐
│                         items                                │
│  (통합 품목 테이블: FG/PT/SM/RM/CS)                           │
│                                                              │
│  id, tenant_id, item_type, code, name, attributes(JSON)     │
└──────────────────────┬───────────────────────────────────────┘
                       │
           ┌───────────┼───────────┬────────────────┐
           │           │           │                │
           ▼           ▼           ▼                ▼
    ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐
    │  item_   │ │  item_   │ │  item_   │ │    entity_    │
    │ details  │ │bom_items │ │id_mappings│ │ relationships │
    │          │ │          │ │          │ │               │
    │ 1:1 관계  │ │ BOM 구성  │ │ 레거시    │ │ 일반 관계     │
    │          │ │          │ │ ID 매핑  │ │ (N:N 가능)    │
    └──────────┘ └──────────┘ └──────────┘ └───────────────┘

┌─────────────────────────────────────────────────────────────┐
│                     메타데이터 테이블                         │
├─────────────────┬─────────────────┬─────────────────────────┤
│  item_sections  │   item_fields   │      item_pages         │
│  (섹션 정의)     │   (필드 정의)    │     (페이지 정의)        │
│  UI 그룹핑 용도  │  동적 속성 정의  │   품목 유형별 페이지     │
└─────────────────┴─────────────────┴─────────────────────────┘

4. 5130 → SAM 매핑 전략

4.1 테이블 매핑

5130 테이블 SAM 테이블 item_type
models items FG (완제품)
parts items PT (부품)
parts_sub items RM (원자재)

4.2 관계 매핑

5130 관계 SAM 구현
parts.model_id → models entity_relationships (parent=FG, child=PT)
parts_sub.part_id → parts entity_relationships (parent=PT, child=RM)
또는 item_bom_items로 BOM 구성

4.3 필드 매핑

5130 필드 SAM 필드
model_name / part_name / subpart_name items.name
spec item_details.specification
unit items.unit
quantity item_bom_items.quantity
material items.attributes.material
major_category items.attributes.major_category
finishing_type items.attributes.finishing_type

4.4 ID 추적

item_id_mappings 테이블 활용:

-- 마이그레이션 후 매핑 저장
INSERT INTO item_id_mappings (source_table, source_id, item_id)
VALUES ('models', 12, 1001);  -- models.model_id=12 → items.id=1001