리크 테스트 gui
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
4.7 KiB

2 months ago
-- ============================================================================
-- Project: NE1aW 온압센서
-- Document: dbo.EOL Table Schema (Latest Version)
2 months ago
-- Author: Antigravity AI
-- Date: 2026-06-24
-- Description: 개편된 로그인 사양 및 16개 컬럼 결과 저장 구조에 맞춘 스키마.
-- 제품 일련번호(IC_SN)를 주 식별자로 사용하며,
-- 동일 제품 재검사 시 MERGE 문을 이용해 UPSERT 처리됩니다.
2 months ago
-- ============================================================================
-- 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. 개편된 테이블 생성
2 months ago
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(), -- 검사 일시
1 month ago
[Line] NVARCHAR(30) 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)
2 months ago
CONSTRAINT [PK_EOL_IC_SN] PRIMARY KEY CLUSTERED ([IC_SN] ASC),
CONSTRAINT [UQ_EOL_PCB_Barcode] UNIQUE ([PCB_Barcode] ASC)
2 months ago
);
GO
PRINT 'Table [dbo].[EOL] created successfully with latest 16 columns and IC_SN as Primary Key.';
2 months ago
GO
-- ============================================================================
-- [부록] 테스트 시나리오 SQL 예시 (신규 개편 버전)
2 months ago
-- ============================================================================
/*
-- 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]
2 months ago
)
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'
2 months ago
);
-- 데이터 확인
SELECT * FROM [dbo].[EOL];
-- 2. 동일 IC_SN 재검사 시 MERGE 문을 이용한 UPSERT 테스트 (정상 업데이트 확인)
-- 예상 결과: 기존 'SN00000001' 레코드의 Leak_Value가 '0.0980'으로 업데이트되고, Production_Date 등이 갱신됨
2 months ago
MERGE INTO [dbo].[EOL] AS Target
USING (SELECT 'SN00000001' AS IC_SN) AS Source
ON (Target.IC_SN = Source.IC_SN)
2 months ago
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',
2 months ago
Target.Channel = 'LEFT',
Target.Spec_UL = 1.00,
Target.Spec_LL = -1.00,
Target.Leak_Value = 0.0980, -- 업데이트될 새 값
Target.Result = 'OK'
2 months ago
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');
2 months ago
-- 데이터 확인 (값 업데이트 확인)
SELECT * FROM [dbo].[EOL];
*/