피드로 돌아가기
The Orphaned ID Bug from My First Job (And What It Taught Me About Being a Junior Dev)
Dev.toDev.to
Database

SQL 기반 Orphaned ID 식별을 통한 LMS 데이터 무결성 복구

The Orphaned ID Bug from My First Job (And What It Taught Me About Being a Junior Dev)

Bradley Matera2026년 4월 28일10beginner

Context

jQuery 및 AJAX 기반의 구형 LMS 시스템에서 데이터 삭제 후 UI에 빈 행이 노출되는 현상 발생. Frontend의 단순 렌더링 이슈가 아닌, Database 내 부모 레코드 없이 잔존하는 Orphaned ID로 인한 데이터 정합성 결여 상태임.

Technical Solution

  • LEFT JOIN을 활용해 assigned_trainingscompleted_trainings 간 매칭되지 않는 고립 행 식별
  • trainings 테이블과의 조인을 통해 메타데이터가 소실된 Stale Data 탐지 쿼리 수행
  • 비즈니스 로직상 유효하지 않은 데이터에 대한 Targeted Cleanup 작업 수행으로 UI 무결성 확보
  • 단순 UI 필터링 대신 데이터 소스 단계에서의 정제(Data Sanitization)를 통한 근본적 해결책 적용
  • Foreign Key Constraint 및 ON DELETE CASCADE 도입 검토를 통한 자동화된 무결성 유지 구조 설계 제안

- 데이터 삭제/업데이트 시 연관된 자식 테이블의 Lifecycle 및 Cascade 전략 정의 여부 확인 - UI 렌더링 전 API 응답 데이터의 Null/Undefined 필드에 대한 Validation 레이어 구축 - 데이터 정합성 문제 발생 시 Frontend 증상이 아닌 Database의 Referential Integrity 우선 검증 - 시스템 도입 단계에서 Data Contract(스키마 정의 및 비즈니스 제약 조건)의 문서화 수준 점검

원문 읽기