-- ============================================================================ -- Project: NE1aW 온압센서 -- Document: dbo.EOL Table Schema (Latest Version) -- Author: Antigravity AI -- Date: 2026-06-24 -- Description: 개편된 로그인 사양 및 16개 컬럼 결과 저장 구조에 맞춘 스키마. -- 제품 일련번호(IC_SN)를 주 식별자로 사용하며, -- 동일 제품 재검사 시 MERGE 문을 이용해 UPSERT 처리됩니다. -- ============================================================================ -- 1. 데이터베이스 존재 여부 확인 및 자동 생성 IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'NE1aW_PT_SENSOR') BEGIN CREATE DATABASE [NE1aW_PT_SENSOR]; PRINT 'Database [NE1aW_PT_SENSOR] created successfully.'; END GO USE [NE1aW_PT_SENSOR]; GO -- 2. 기존 테이블이 존재할 경우 삭제 IF OBJECT_ID('dbo.EOL', 'U') IS NOT NULL BEGIN DROP TABLE dbo.EOL; PRINT 'Existing [dbo].[EOL] table dropped.'; END GO -- 3. 개편된 테이블 생성 CREATE TABLE [dbo].[EOL] ( [IC_SN] NVARCHAR(10) NOT NULL, -- 제품의 최종 조합 ID (ProductId) (기본키) [PCB_Barcode] NVARCHAR(10) NOT NULL, -- 고유 식별용 바코드 정보 (UK) [Maker] NVARCHAR(10) NULL, -- 로그인 메이커 정보 [Model] NVARCHAR(10) NULL, -- 로그인 모델 정보 [Variant_1] NVARCHAR(10) NULL, -- 로그인 변형1 정보 [Variant_2] NVARCHAR(10) NULL, -- 로그인 변형2 정보 [Operator] NVARCHAR(10) NOT NULL, -- 로그인 검사자 ID [Production_Date] DATETIME2(0) NOT NULL DEFAULT GETDATE(), -- 검사 일시 [Line] NVARCHAR(5) NULL, -- 로그인 작업 라인 [Lot_No] NVARCHAR(8) NULL, -- 로그인 Lot 번호 [Jig_No] NVARCHAR(10) NULL, -- 로그인 지그 번호 [Channel] NVARCHAR(5) NOT NULL, -- 검증 수행 채널 (LEFT / RIGHT) [Spec_UL] DECIMAL(3,2) NOT NULL, -- 스펙 상한값 [Spec_LL] DECIMAL(3,2) NOT NULL, -- 스펙 하한값 [Leak_Value] DECIMAL(5,4) NOT NULL, -- 측정된 누설량 [Result] NVARCHAR(5) NOT NULL, -- 합격 여부 판정 (OK / NG) CONSTRAINT [PK_EOL_IC_SN] PRIMARY KEY CLUSTERED ([IC_SN] ASC), CONSTRAINT [UQ_EOL_PCB_Barcode] UNIQUE ([PCB_Barcode] ASC) ); GO PRINT 'Table [dbo].[EOL] created successfully with latest 16 columns and IC_SN as Primary Key.'; GO -- ============================================================================ -- [부록] 테스트 시나리오 SQL 예시 (신규 개편 버전) -- ============================================================================ /* -- 1. 테스트용 기본 데이터 INSERT (정상 삽입) INSERT INTO [dbo].[EOL] ( [IC_SN], [PCB_Barcode], [Maker], [Model], [Variant_1], [Variant_2], [Operator], [Production_Date], [Line], [Lot_No], [Jig_No], [Channel], [Spec_UL], [Spec_LL], [Leak_Value], [Result] ) VALUES ( 'SN00000001', 'SN00000001', 'MAKER_A', 'MODEL_X', 'V1', 'V2', 'OP_01', '2026-06-24 11:00:00', 'L1', 'LOT00001', 'JIG01', 'LEFT', 1.00, -1.00, 0.1250, 'OK' ); -- 데이터 확인 SELECT * FROM [dbo].[EOL]; -- 2. 동일 IC_SN 재검사 시 MERGE 문을 이용한 UPSERT 테스트 (정상 업데이트 확인) -- 예상 결과: 기존 'SN00000001' 레코드의 Leak_Value가 '0.0980'으로 업데이트되고, Production_Date 등이 갱신됨 MERGE INTO [dbo].[EOL] AS Target USING (SELECT 'SN00000001' AS IC_SN) AS Source ON (Target.IC_SN = Source.IC_SN) WHEN MATCHED THEN UPDATE SET Target.PCB_Barcode = 'SN00000001', Target.Maker = 'MAKER_A', Target.Model = 'MODEL_X', Target.Variant_1 = 'V1', Target.Variant_2 = 'V2', Target.Operator = 'OP_01', Target.Production_Date = '2026-06-24 11:05:00', Target.Line = 'L1', Target.Lot_No = 'LOT00001', Target.Jig_No = 'JIG01', Target.Channel = 'LEFT', Target.Spec_UL = 1.00, Target.Spec_LL = -1.00, Target.Leak_Value = 0.0980, -- 업데이트될 새 값 Target.Result = 'OK' WHEN NOT MATCHED THEN INSERT (IC_SN, PCB_Barcode, Maker, Model, Variant_1, Variant_2, Operator, Production_Date, Line, Lot_No, Jig_No, Channel, Spec_UL, Spec_LL, Leak_Value, Result) VALUES ('SN00000001', 'SN00000001', 'MAKER_A', 'MODEL_X', 'V1', 'V2', 'OP_01', '2026-06-24 11:05:00', 'L1', 'LOT00001', 'JIG01', 'LEFT', 1.00, -1.00, 0.0980, 'OK'); -- 데이터 확인 (값 업데이트 확인) SELECT * FROM [dbo].[EOL]; */