SQL에서 가장 중요한 것은 문법이 아니라 “테이블 단위(레벨, grain)”를 잡는 것이다.
쿼리를 작성하기 전에 반드시 먼저 해야 할 질문은 이것이다.
“이 테이블에서 1행은 무엇을 의미하는가?”
이 질문에 답하지 않고 JOIN이나 집계를 시작하면,
결과는 거의 항상 행이 뻥튀기되거나 / 누락되거나 / 해석 불가능해진다.
때문에 쿼리 작성 전에 데이터 딕셔너리부터 정리하는 습관이 중요하다.
데이터 딕셔너리란?
데이터 딕셔너리는 단순한 “컬럼 설명 목록”이 아닌
각 테이블의 역할과 관계를 명확히 정의한 설계 문서에 가깝다.
떄문에 딕셔너리를 볼때 다음 3가지를 중점으로 생각해야 한다.
- 이 테이블의 행 단위(grain)
- 어떤 테이블과 어떻게 JOIN되는지
- 이 테이블을 어떤 목적의 쿼리에서 써야 하는지
SQL 관점에서 중요한 데이터 딕셔너리 작성 순서
1. 테이블 요약 (가장 중요)
ex.
- students (학생 마스터)
- 1행 = 학생 1명
2. 테이블 설명
- 이벤트성 테이블인지?
- 마스터 테이블인지?
- 변하지 않는 정보인지?
를 명확히 한다.
3. PK (Primary Key)
- 이 테이블의 행을 유일하게 식별하는 컬럼
- “이 테이블의 주민등록번호”
4. 주요 JOIN 키 (관계 명시)
여기서 중요한 건:
- 누가 1이고 누가 N인가
- 이 JOIN이 행 수를 늘릴 수 있는지
를 바로 판단할 수 있어야 한다는 점.
5. 컬럼 정의 (필요한 만큼)
SQL에서 데이터 딕셔너리는 곧 설계도다
SQL은 “쿼리를 잘 짜는 기술”이 아니라 “데이터 구조를 이해하고 결과를 설계하는 기술”이다.
데이터 딕셔너리를 먼저 쓰면...
- 최종 결과의 행 단위(grain) 를 명확히 선언할 수 있다
- JOIN 전에 집계가 필요한지 판단할 수 있다
- JOIN 결과를 보고 정상/비정상을 바로 구분할 수 있다
한 줄 요약
쿼리를 쓰기 전에 각 테이블에서 1행이 무엇을 의미하는지 먼저 정의하자.
'A.Today I Learne > SQL' 카테고리의 다른 글
| [TIL] SQL 라이브세션 6회차 (0) | 2025.12.31 |
|---|---|
| [TIL] SQL 라이브세션 5회차 (0) | 2025.12.30 |
| [TIL] SQL 라이브세션 4회차 (1) | 2025.12.29 |
| 포메팅 습관 (0) | 2025.12.28 |
