리크 테스트 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.
 
 
 
 
 

5.6 KiB

[2단계] 데이터베이스 설계 (DB Design & ERD)

본 문서는 누수 시험 시스템에서 취급하는 계측 데이터 및 로그인 사용자 계정 정보를 관리하기 위한 MSSQL 데이터베이스 설계를 정의합니다.


1. 개체 및 관계 정의 (Entity Relationship Summary)

본 시스템은 단독 장비가 아닌 다수 지그(Jig)와 채널(Left/Right)에서 생산되는 검사 데이터를 수집하므로, 다음의 핵심 엔티티를 관리합니다.

  • Users (사용자 계정): 장비를 조작하는 작업자(Operator) 또는 관리자 계정 정보.
  • EOL (검사 결과 이력): 제품의 누수 시험 최종 결과 데이터로, ZMDI/ADLINK 센서로부터 읽어들인 IC_SN을 주 식별자로 사용합니다.
  • SystemConfigs (장비 설정 캐시): 프로그램의 상/하한 스펙(SpecUL/LL) 및 통신 포트 옵션 이력.

2. 테이블 명세서 (Table Specification)

2.1 Users (사용자 정보 테이블)

  • 설명: 장비 로그인 및 조작을 인가받은 사용자 계정을 저장합니다.
  • 테이블명: [dbo].[Users]
컬럼명 데이터 타입 Null 여부 제약조건 설명
OperatorId VARCHAR(50) NOT NULL PK 작업자 고유 식별 아이디 (로그인 ID)
Password VARCHAR(256) NOT NULL - 단방향 해시화된 비밀번호 (또는 레거시 대조용 암호)
OperatorName NVARCHAR(50) NULL - 작업자 실명
Role VARCHAR(20) NOT NULL DEFAULT 'OPERATOR' 사용자 권한 (ADMIN, OPERATOR, DEVELOPER)
CreatedAt DATETIME NOT NULL DEFAULT GETDATE() 계정 등록 일시

2.2 EOL (검사 데이터 저장 테이블)

  • 설명: 최종 EOL(End of Line) 누수 검사 결과를 기록합니다. 제품 바코드(IC_SN)를 기준으로 UPSERT(MERGE) 처리됩니다.
  • 테이블명: [dbo].[EOL]
컬럼명 데이터 타입 Null 여부 제약조건 설명
IC_SN VARCHAR(50) NOT NULL PK 센서에서 판독한 16자리 제품 고유 시리얼 번호
PCB_Barcode VARCHAR(50) NOT NULL - 인쇄 회로 기판(PCB) 바코드 (식별 불가 시 - 처리)
Maker NVARCHAR(50) NULL - 제조사 식별 정보
Model NVARCHAR(50) NULL - 검사 대상 모델 코드
Variant_1 NVARCHAR(50) NULL - 파생 기종 식별 속성 1
Variant_2 NVARCHAR(50) NULL - 파생 기종 식별 속성 2
Operator VARCHAR(50) NOT NULL FK (Users.OperatorId) 검사를 진행한 로그인 작업자 ID
Production_Date DATETIME NOT NULL DEFAULT GETDATE() 검사 수행 완료 일시
Line NVARCHAR(30) NULL - 생산 라인 번호 / 명칭
Lot_No NVARCHAR(50) NULL - 작업 지시 묶음 번호 (Lot Number)
Jig_No NVARCHAR(20) NULL - 검사에 사용된 지그(Jig) 번호
Channel VARCHAR(10) NOT NULL - 검사 물리 채널 명칭 (LEFT, RIGHT)
Spec_UL DECIMAL(10, 4) NOT NULL - 합격 스펙 상한치 (Upper Limit)
Spec_LL DECIMAL(10, 4) NOT NULL - 합격 스펙 하한치 (Lower Limit)
Leak_Value DECIMAL(10, 4) NOT NULL - 센서에서 최종 파싱된 실측 누설값
Result VARCHAR(5) NOT NULL CHECK (in ('OK', 'NG')) 합격(OK) 또는 불합격(NG) 판정

3. 엔티티 관계도 (Entity Relationship Diagram - ERD)

EOL 검사 이력은 Users 테이블의 작업자 고유 ID(OperatorId)를 외래키(Operator)로 참조하여, 어떤 작업자가 어떤 검사 이력을 남겼는지에 대한 일대다(1:N) 식별 및 추적이 가능합니다.

erDiagram
    USERS {
        VARCHAR_50 OperatorId PK "작업자 ID"
        VARCHAR_256 Password "비밀번호"
        NVARCHAR_50 OperatorName "작업자 실명"
        VARCHAR_20 Role "권한 (ADMIN/OPERATOR)"
        DATETIME CreatedAt "계정 생성일시"
    }

    EOL {
        VARCHAR_50 IC_SN PK "제품 시리얼 번호"
        VARCHAR_50 PCB_Barcode "PCB 바코드"
        NVARCHAR_50 Maker "제조사"
        NVARCHAR_50 Model "모델명"
        NVARCHAR_50 Variant_1 "속성 1"
        NVARCHAR_50 Variant_2 "속성 2"
        VARCHAR_50 Operator FK "작업자 ID"
        DATETIME Production_Date "검사 완료일시"
        NVARCHAR_30 Line "생산 라인"
        NVARCHAR_50 Lot_No "로트 번호"
        NVARCHAR_20 Jig_No "지그 번호"
        VARCHAR_10 Channel "채널 (LEFT/RIGHT)"
        DECIMAL Spec_UL "스펙 상한치"
        DECIMAL Spec_LL "스펙 하한치"
        DECIMAL Leak_Value "실측 누출량"
        VARCHAR_5 Result "판정 (OK/NG)"
    }

    USERS ||--o{ EOL : "performs"

4. 데이터 정합성 유지 전략 (Data Integrity & Optimization)

  • UPSERT 쿼리 이중화: 제품 시리얼 IC_SN은 고유하므로, 동일 제품이 재검사(Retest)되거나 지연 전송되었을 경우 중복 릴레이션이 맺어지지 않도록 MERGE 구문을 활용해 기존 검사 행을 업데이트(UPDATE)하고 신규일 때만 신규 행을 삽입(INSERT)합니다.
  • 인덱스(Index) 설계 전략:
    • Clustered Index: 데이터가 생성순서에 따라 밀집되도록 Production_Date를 포함하거나 주 키인 IC_SN에 적용합니다.
    • Non-Clustered Index: 작업 이력 대량 조회(DataView)의 검색 속도 최적화를 위해 복합 인덱스 IX_EOL_Search (Production_Date, Result, Lot_No) 구성을 제안합니다.