- HNS_SUBSTANCE 테이블 마이그레이션 SQL 추가 (002_hns_substance.sql) - HNS 검색/상세 API 구현 (hnsRouter, hnsService) - HNS 시드 스크립트 추가 (seedHns.ts, 20종 물질 데이터) - 프론트엔드 HNSSubstanceView: 정적 HNS_SEARCH_DB → API 호출 전환 - HNSSearchSubstance 타입 common/types/hns.ts로 분리 - Mock 데이터 이동: data/ → common/mock/ (vesselMockData, backtrackMockData) - layerDatabase.ts → common/services/layerService.ts 이동 - layerData.ts → common/data/layerData.ts 이동 - scat/index.ts 누락 수정 + .gitignore scat 규칙 수정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
47 lines
2.7 KiB
SQL
47 lines
2.7 KiB
SQL
-- ================================================================
|
|
-- 002: HNS 물질정보 테이블 (프론트엔드 정적 데이터 → DB 이전)
|
|
-- ================================================================
|
|
-- 검색용 컬럼 + 상세 데이터 JSONB 구조
|
|
-- pg_trgm 인덱스로 한글/영문 물질명 검색 지원
|
|
-- ================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS HNS_SUBSTANCE (
|
|
SBST_SN SERIAL NOT NULL, -- 물질순번
|
|
ABBREVIATION VARCHAR(50), -- 약자/제품명
|
|
NM_KR VARCHAR(200) NOT NULL, -- 국문명
|
|
NM_EN VARCHAR(200), -- 영문명
|
|
UN_NO VARCHAR(10), -- UN번호
|
|
CAS_NO VARCHAR(20), -- CAS번호
|
|
SEBC VARCHAR(50), -- SEBC 거동분류
|
|
DATA JSONB NOT NULL, -- 전체 상세 데이터
|
|
USE_YN CHAR(1) NOT NULL DEFAULT 'Y', -- 사용여부
|
|
REG_DTM TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 등록일시
|
|
CONSTRAINT PK_HNS_SUBSTANCE PRIMARY KEY (SBST_SN),
|
|
CONSTRAINT CK_HNS_SBST_USE CHECK (USE_YN IN ('Y', 'N'))
|
|
);
|
|
|
|
COMMENT ON TABLE HNS_SUBSTANCE IS 'HNS물질정보 (1,316종)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.SBST_SN IS '물질순번';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.ABBREVIATION IS '약자/제품명 (화물적부도 코드)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.NM_KR IS '국문명';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.NM_EN IS '영문명';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.UN_NO IS 'UN번호 (위험물 식별번호)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.CAS_NO IS 'CAS번호 (화학물질등록번호)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.SEBC IS 'SEBC 거동분류 (G/GD/E/ED/FE/FED/F/FD/D/S/SD)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.DATA IS '전체 상세 데이터 (JSONB)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.USE_YN IS '사용여부 (Y:사용, N:미사용)';
|
|
COMMENT ON COLUMN HNS_SUBSTANCE.REG_DTM IS '등록일시';
|
|
|
|
-- 텍스트 검색 인덱스 (pg_trgm)
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_NM_KR ON HNS_SUBSTANCE USING GIN(NM_KR gin_trgm_ops);
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_NM_EN ON HNS_SUBSTANCE USING GIN(NM_EN gin_trgm_ops);
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_ABBR ON HNS_SUBSTANCE USING GIN(ABBREVIATION gin_trgm_ops);
|
|
|
|
-- 코드 검색 인덱스
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_UN ON HNS_SUBSTANCE(UN_NO);
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_CAS ON HNS_SUBSTANCE(CAS_NO);
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_SEBC ON HNS_SUBSTANCE(SEBC);
|
|
|
|
-- JSONB 내 cargoCodes 검색용 인덱스
|
|
CREATE INDEX IF NOT EXISTS IDX_HNS_SBST_DATA ON HNS_SUBSTANCE USING GIN(DATA jsonb_path_ops);
|