# 데이터베이스 구조 (2025-06-30 정리) ## 개요 양구청춘약국 시스템은 3개의 데이터베이스를 사용합니다: | DB | 용도 | 위치 | |----|------|------| | **MSSQL (PM_DRUG)** | POS 제품/재고/판매 | localhost (팜IT3000) | | **MSSQL (PM_PRES)** | 처방전/조제 | localhost (팜IT3000) | | **PostgreSQL** | 동물약 상세 정보 (RAG) | 192.168.0.87:5432 | | **SQLite** | 마일리지 시스템 | backend/db/mileage.db | --- ## MSSQL 테이블 구조 (PM_DRUG) ### 핵심 테이블 관계 ``` ┌─────────────────────────────────────────────────────────────┐ │ CD_GOODS (제품 마스터) - 178,182개 │ │ └── DrugCode (PK): LB000003157 │ │ │ │ │ ┌─────────┴─────────────┬──────────────────────────┐ │ │ ▼ ▼ ▼ │ │ CD_SALEGOODS CD_ITEM_UNIT_MEMBER CD_BARCODE│ │ (대표 바코드) (바코드 N개) ★ (인체용) │ │ 3,053개 N:1 관계 306,565개│ └─────────────────────────────────────────────────────────────┘ ``` ### CD_GOODS (제품 마스터) 팜IT3000 전체 제품 DB. 약국이 개별 등록한 제품은 `LB`, `S`로 시작. | 컬럼 | 타입 | 설명 | |------|------|------| | DrugCode | nvarchar | PK. `LB000003157` (약국등록), `050000010` (표준) | | GoodsName | nvarchar | 제품명 | | Saleprice | decimal | 판매가 | | BARCODE | nvarchar | (보통 비어있음 - CD_SALEGOODS 사용) | | POS_BOON | nvarchar | 분류코드. `010103` = 동물약 | | GoodsSelCode | nvarchar | `B` = 판매용 | ### CD_SALEGOODS (판매용 제품) 약국에서 실제 판매하는 제품. **대표 바코드 1개** 저장. | 컬럼 | 타입 | 설명 | |------|------|------| | DrugCode | nvarchar | FK → CD_GOODS | | GoodsName | nvarchar | 제품명 | | BARCODE | nvarchar | **대표 바코드** (자체생성: `999000000xxxx`) | | SplCode | nvarchar | 공급처 코드 | | SplName | nvarchar | 공급처명 | ### CD_ITEM_UNIT_MEMBER (바코드 N개) ★ **한 제품에 여러 바코드** 저장. APC 코드는 여기에 저장됨! | 컬럼 | 타입 | 설명 | |------|------|------| | DRUGCODE | nvarchar | FK → CD_GOODS.DrugCode | | CD_CD_BARCODE | nvarchar | **바코드** (APC: `0230237810109`) | | CD_CD_UNIT | nvarchar | 단위코드 (13, 015 등) | | CD_MY_UNIT | decimal | 판매가 | | CD_IN_UNIT | decimal | 입고가 | | CHANGE_DATE | nvarchar | 변경일 (YYYYMMDD) | | SN | bigint | 일련번호 | ### CD_BARCODE (인체용 표준) 식약처 인체용 의약품 표준 바코드. **동물약은 없음!** | 컬럼 | 타입 | 설명 | |------|------|------| | DRUGCODE | nvarchar | 제품코드 | | BARCODE | nvarchar | 표준 바코드 | | BASECODE | nvarchar | 표준코드 | | ETCNAME | nvarchar | 제품명 | | CL_GUBUN | nvarchar | 구분 (전문의약품 등) | --- ## PostgreSQL 구조 (apdb_master) 동물약품 상세 정보. 농림축산검역본부 데이터 + LLM 가공. ### apc 테이블 (핵심) | 컬럼 | 타입 | 설명 | |------|------|------| | apc | varchar | **PK**. `0230237810109` | | product_name | varchar | 제품명 | | company_name | varchar | 제조사 | | main_ingredient | varchar | 주성분 | | efficacy_effect | text | 효능/효과 (HTML) | | dosage_instructions | text | 용법/용량 (HTML) | | precautions | text | 주의사항 (HTML) | | **llm_pharm** | jsonb | **LLM 가공 정보** ★ | | image_url1 | varchar | 앞면 이미지 | | image_url2 | varchar | 뒷면 이미지 | | weight_min_kg | float | 최소 체중 | | weight_max_kg | float | 최대 체중 | ### llm_pharm JSON 구조 (핵심!) ```json { "사용가능 동물": "개, 고양이", "분류": "내부구충제", "성분1": "메벤다졸", "성분2": "프라지콴텔", "체중/부위": "체중 5~9kg: 1정, 10~19kg: 2정...", "기간/용법": "1일 1회, 1~2일간 경구투여", "월령금기": "생후 1주 미만 사용 금지", "반려인주의": "사람이 복용 시 즉시 의사의 조치 필요", "앞이미지": "https://...", "뒤이미지": "https://..." } ``` --- ## 바코드 체계 | 패턴 | 설명 | 예시 | |------|------|------| | `023xxxxxxxx` | **APC (동물약 표준)** | `0230237810109` | | `999000000xxxx` | 약국 자체 생성 | `9990000001134` | | `880xxxxxxxxx` | 일반 GS1 바코드 | `8809989000009` | --- ## 연결 예시 **안텔민킹(5kg이상) 조회:** ```sql -- MSSQL: 바코드 조회 SELECT CD_CD_BARCODE FROM CD_ITEM_UNIT_MEMBER WHERE DRUGCODE = 'LB000003157' AND CD_CD_BARCODE LIKE '023%'; -- → 0230237810109 -- PostgreSQL: 상세 정보 조회 SELECT llm_pharm->>'사용가능 동물', efficacy_effect FROM apc WHERE apc = '0230237810109'; -- → 개, 고양이 ``` --- ## 이미지 URL 규칙 ``` https://ani.0bin.in/img/{APC}_F.jpg # 앞면 https://ani.0bin.in/img/{APC}_B.jpg # 뒷면 https://ani.0bin.in/img/{APC}_D.jpg # 상세 ``` 예: `https://ani.0bin.in/img/0230237810109_F.jpg`