Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
- H/F/I/O SS304/GRAPHITE/CS/CS 패턴에서 4개 구성요소 모두 표시 - 기존 SS304 + GRAPHITE → SS304/GRAPHITE/CS/CS로 완전한 구성 표시 - 외부링/필러/내부링/추가구성 모든 정보 포함 - 구매수량 계산 모달에서 정확한 재질 정보 확인 가능
184 lines
7.8 KiB
SQL
184 lines
7.8 KiB
SQL
-- ================================
|
|
-- Tubing 제품 관리 시스템
|
|
-- 실행일: 2025.08.01
|
|
-- ================================
|
|
|
|
-- 1. Tubing 카테고리 테이블 (일반, VCR, 기타 등)
|
|
CREATE TABLE IF NOT EXISTS tubing_categories (
|
|
id SERIAL PRIMARY KEY,
|
|
category_code VARCHAR(20) UNIQUE NOT NULL,
|
|
category_name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 2. Tubing 규격 마스터 테이블
|
|
CREATE TABLE IF NOT EXISTS tubing_specifications (
|
|
id SERIAL PRIMARY KEY,
|
|
category_id INTEGER REFERENCES tubing_categories(id),
|
|
spec_code VARCHAR(50) UNIQUE NOT NULL,
|
|
spec_name VARCHAR(200) NOT NULL,
|
|
|
|
-- 물리적 규격
|
|
outer_diameter_mm DECIMAL(8,3), -- 외경 (mm)
|
|
wall_thickness_mm DECIMAL(6,3), -- 두께 (mm)
|
|
inner_diameter_mm DECIMAL(8,3), -- 내경 (mm, 계산 또는 실측)
|
|
|
|
-- 재질 정보
|
|
material_grade VARCHAR(100), -- SS316, SS316L, Inconel625 등
|
|
material_standard VARCHAR(100), -- ASTM A269, JIS G3463 등
|
|
|
|
-- 압력/온도 등급
|
|
max_pressure_bar DECIMAL(8,2), -- 최대 압력 (bar)
|
|
max_temperature_c DECIMAL(6,2), -- 최대 온도 (°C)
|
|
min_temperature_c DECIMAL(6,2), -- 최소 온도 (°C)
|
|
|
|
-- 표준 규격
|
|
standard_length_m DECIMAL(8,3), -- 표준 길이 (m)
|
|
bend_radius_min_mm DECIMAL(8,2), -- 최소 벤딩 반경 (mm)
|
|
|
|
-- 기타 정보
|
|
surface_finish VARCHAR(100), -- 표면 마감 (BA, #4, 2B 등)
|
|
hardness VARCHAR(50), -- 경도
|
|
notes TEXT,
|
|
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 3. 제조사 정보 테이블
|
|
CREATE TABLE IF NOT EXISTS tubing_manufacturers (
|
|
id SERIAL PRIMARY KEY,
|
|
manufacturer_code VARCHAR(20) UNIQUE NOT NULL,
|
|
manufacturer_name VARCHAR(200) NOT NULL,
|
|
country VARCHAR(100),
|
|
website VARCHAR(500),
|
|
contact_info JSONB, -- 연락처 정보 (JSON)
|
|
quality_certs JSONB, -- 품질 인증서 정보 (ISO, API 등)
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 4. 제조사별 제품 테이블 (품목번호 매핑)
|
|
CREATE TABLE IF NOT EXISTS tubing_products (
|
|
id SERIAL PRIMARY KEY,
|
|
specification_id INTEGER REFERENCES tubing_specifications(id),
|
|
manufacturer_id INTEGER REFERENCES tubing_manufacturers(id),
|
|
|
|
-- 제조사 품목번호 정보
|
|
manufacturer_part_number VARCHAR(200) NOT NULL, -- 제조사 품목번호
|
|
manufacturer_product_name VARCHAR(300), -- 제조사 제품명
|
|
|
|
-- 가격/공급 정보
|
|
list_price DECIMAL(12,2), -- 정가
|
|
currency VARCHAR(10) DEFAULT 'KRW', -- 통화
|
|
lead_time_days INTEGER, -- 리드타임 (일)
|
|
minimum_order_qty DECIMAL(10,3), -- 최소 주문 수량
|
|
standard_packaging_qty DECIMAL(10,3), -- 표준 포장 수량
|
|
|
|
-- 가용성 정보
|
|
availability_status VARCHAR(50), -- 재고 상태
|
|
last_price_update DATE, -- 마지막 가격 업데이트
|
|
|
|
-- 추가 정보
|
|
datasheet_url VARCHAR(500), -- 데이터시트 URL
|
|
catalog_page VARCHAR(100), -- 카탈로그 페이지
|
|
notes TEXT,
|
|
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
-- 유니크 제약 (같은 규격의 같은 제조사 제품은 하나만)
|
|
UNIQUE(specification_id, manufacturer_id, manufacturer_part_number)
|
|
);
|
|
|
|
-- 5. BOM에서 사용되는 Tubing 매핑 테이블
|
|
CREATE TABLE IF NOT EXISTS material_tubing_mapping (
|
|
id SERIAL PRIMARY KEY,
|
|
material_id INTEGER REFERENCES materials(id) ON DELETE CASCADE,
|
|
tubing_product_id INTEGER REFERENCES tubing_products(id),
|
|
|
|
-- 매핑 정보
|
|
confidence_score DECIMAL(3,2), -- 매핑 신뢰도 (0.00-1.00)
|
|
mapping_method VARCHAR(50), -- 매핑 방법 (auto/manual)
|
|
mapped_by VARCHAR(100), -- 매핑한 사용자
|
|
mapped_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
-- 수량 정보
|
|
required_length_m DECIMAL(10,3), -- 필요 길이 (m)
|
|
calculated_quantity DECIMAL(10,3), -- 계산된 주문 수량
|
|
|
|
-- 검증 정보
|
|
is_verified BOOLEAN DEFAULT FALSE,
|
|
verified_by VARCHAR(100),
|
|
verified_at TIMESTAMP,
|
|
|
|
notes TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ================================
|
|
-- 인덱스 생성
|
|
-- ================================
|
|
|
|
-- Tubing 규격 관련 인덱스
|
|
CREATE INDEX idx_tubing_specs_category ON tubing_specifications(category_id);
|
|
CREATE INDEX idx_tubing_specs_material ON tubing_specifications(material_grade);
|
|
CREATE INDEX idx_tubing_specs_diameter ON tubing_specifications(outer_diameter_mm, wall_thickness_mm);
|
|
|
|
-- 제품 관련 인덱스
|
|
CREATE INDEX idx_tubing_products_spec ON tubing_products(specification_id);
|
|
CREATE INDEX idx_tubing_products_manufacturer ON tubing_products(manufacturer_id);
|
|
CREATE INDEX idx_tubing_products_part_number ON tubing_products(manufacturer_part_number);
|
|
|
|
-- 매핑 관련 인덱스
|
|
CREATE INDEX idx_material_tubing_mapping_material ON material_tubing_mapping(material_id);
|
|
CREATE INDEX idx_material_tubing_mapping_product ON material_tubing_mapping(tubing_product_id);
|
|
|
|
-- ================================
|
|
-- 기초 데이터 입력
|
|
-- ================================
|
|
|
|
-- Tubing 카테고리 기초 데이터
|
|
INSERT INTO tubing_categories (category_code, category_name, description) VALUES
|
|
('GENERAL', '일반 Tubing', '일반적인 스테인리스 스틸 튜빙'),
|
|
('VCR', 'VCR Tubing', 'VCR (Vacuum Coupling Radiation) 연결용 튜빙'),
|
|
('SANITARY', 'Sanitary Tubing', '위생용 튜빙 (식품, 제약 등)'),
|
|
('HVAC', 'HVAC Tubing', '공조용 튜빙'),
|
|
('HYDRAULIC', 'Hydraulic Tubing', '유압용 튜빙'),
|
|
('PNEUMATIC', 'Pneumatic Tubing', '공압용 튜빙'),
|
|
('PROCESS', 'Process Tubing', '공정용 특수 튜빙'),
|
|
('EXOTIC', 'Exotic Material', '특수 재질 튜빙 (Hastelloy, Inconel 등)')
|
|
ON CONFLICT (category_code) DO NOTHING;
|
|
|
|
-- 주요 제조사 기초 데이터
|
|
INSERT INTO tubing_manufacturers (manufacturer_code, manufacturer_name, country) VALUES
|
|
('SWAGELOK', 'Swagelok Company', 'USA'),
|
|
('PARKER', 'Parker Hannifin', 'USA'),
|
|
('HAM_LET', 'Ham-Let Group', 'Israel'),
|
|
('SUPERLOK', 'Superlok USA', 'USA'),
|
|
('FITOK', 'Fitok Group', 'China'),
|
|
('DK_LOK', 'DK-Lok Corporation', 'South Korea'),
|
|
('GYROLOK', 'Gyrolok (Oliver Valves)', 'UK'),
|
|
('AS_ONE', 'AS ONE Corporation', 'Japan')
|
|
ON CONFLICT (manufacturer_code) DO NOTHING;
|
|
|
|
-- 기본 스테인리스 스틸 튜빙 규격 예시
|
|
INSERT INTO tubing_specifications (
|
|
category_id, spec_code, spec_name,
|
|
outer_diameter_mm, wall_thickness_mm, inner_diameter_mm,
|
|
material_grade, material_standard,
|
|
max_pressure_bar, max_temperature_c, min_temperature_c,
|
|
standard_length_m
|
|
) VALUES
|
|
(1, 'SS316-6MM-1MM', '6mm OD x 1mm WT SS316 Tubing', 6.0, 1.0, 4.0, 'SS316', 'ASTM A269', 413, 815, -196, 6.0),
|
|
(1, 'SS316-8MM-1MM', '8mm OD x 1mm WT SS316 Tubing', 8.0, 1.0, 6.0, 'SS316', 'ASTM A269', 310, 815, -196, 6.0),
|
|
(1, 'SS316-10MM-1MM', '10mm OD x 1mm WT SS316 Tubing', 10.0, 1.0, 8.0, 'SS316', 'ASTM A269', 248, 815, -196, 6.0),
|
|
(1, 'SS316-12MM-1.5MM', '12mm OD x 1.5mm WT SS316 Tubing', 12.0, 1.5, 9.0, 'SS316', 'ASTM A269', 310, 815, -196, 6.0),
|
|
(1, 'SS316L-6MM-1MM', '6mm OD x 1mm WT SS316L Tubing', 6.0, 1.0, 4.0, 'SS316L', 'ASTM A269', 413, 815, -196, 6.0)
|
|
ON CONFLICT (spec_code) DO NOTHING; |