SQL Noir는 80년대 누아르 분위기의 탐정 서사와 SQL 쿼리 학습을 결합한 인터렉티브 교육 플랫폼입니다. 사용자는 단순한 학습자가 아닌 탐정이 되어, 데이터베이스 속에 숨겨진 단서를 찾아내고 복잡한 사건을 해결하게 됩니다. 이 가이드에서는 로컬 환경 구축부터 첫 번째 사건을 프로그래밍 방식으로 해결하는 과정까지 상세히 안내합니다.
1. 환경 구축 및 프로젝트 실행
SQL Noir는 최신 웹 기술 스택을 기반으로 구축되었습니다. 로컬 머신에 프로젝트를 복제하고 실행하기 위해 다음 단계를 수행하십시오.
저장소 복제 및 의존성 설치
먼저 터미널을 열고 Git을 이용해 소스 코드를 내려받습니다. 이후 패키지 매니저를 통해 필요한 라이브러리를 설치합니다.
# 리포지토리 클론
git clone https://gitcode.com/gh_mirrors/sq/SQLNoir
cd SQLNoir
# 의존 패키지 설치
npm install
개발 서버 가동
설치가 완료되면 다음 명령어를 입력하여 로컬 개발 서버를 실행합니다.
npm run dev
서버가 구동되면 브라우저에서 http://localhost:3000에 접속하여 게임 인터페이스가 정상적으로 로드되는지 확인합니다.
2. 인터페이스 구성 분석
사건 현장에 투입되면 화면은 크게 네 가지 영역으로 구분됩니다.
- 사건 보고서(Case Files): 해결해야 할 과제와 배경 스토리가 서술됩니다.
- 데이터 스키마(Schema): 현재 조회 가능한 테이블 구조와 컬럼 정보(타입, 제약 조건 등)를 제공합니다.
- 쿼리 에디터(SQL Editor): SQL 문을 작성하고 실행하는 메인 작업 공간입니다.
- 증거 패널(Evidence Panel): 실행된 쿼리의 결과 데이터와 수집된 단서들이 표시됩니다.
3. 첫 번째 사건 해결을 위한 실전 쿼리
입문용 시나리오인 'case-001'을 해결하기 위해 필요한 기초적인 쿼리 작성법을 살펴보겠습니다. 데이터베이스 내부의 용의자 명단과 알리바이를 대조하는 과정이 핵심입니다.
용의자 데이터 탐색
먼저 전체적인 인물 정보를 파악하기 위해 특정 컬럼을 필터링하여 조회합니다.
-- 인물들의 이름과 특징을 가나다순으로 정렬하여 확인
SELECT
name AS suspect_name,
physical_description
FROM suspect_list
ORDER BY name ASC;
조건부 증거 분석
특정 유형의 단서만 추출하여 범행 현장의 흔적을 추적합니다.
-- 지문 증거 데이터 중 신뢰도가 높은 항목만 추출
SELECT *
FROM evidence_logs
WHERE category = 'fingerprint'
AND reliability_score > 80;
테이블 결합을 통한 알리바이 검증
용의자 테이블과 진술서 테이블을 조인하여 모순점을 찾아냅니다.
-- 현장 발견 시각과 진술이 일치하지 않는 용의자 식별
SELECT
p.full_name,
s.location_reported,
s.is_verified
FROM person_of_interest p
INNER JOIN statements s ON p.id = s.subject_id
WHERE s.location_reported = 'downtown_bank'
AND s.is_verified = FALSE;
4. 단계별 학습 로드맵
SQL Noir는 사건의 난이도가 높아짐에 따라 자연스럽게 고급 SQL 기술을 요구합니다.
- 기초 단계:
SELECT,WHERE,LIMIT를 활용한 단순 데이터 추출 - 데이터 분석 단계:
GROUP BY와HAVING을 이용한 증거 통계 분석 - 고급 관계 단계: 다양한
JOIN전략을 활용한 복합 데이터 매핑 - 심화 분석 단계:
RANK(),ROW_NUMBER()등 윈도우 함수를 이용한 행동 패턴 추적
이제 모든 준비가 끝났습니다. 사건 목록 페이지로 이동하여 당신의 첫 번째 수사를 시작하십시오. 데이터 속에 숨겨진 진실은 오직 정확한 쿼리만이 밝혀낼 수 있습니다.