SQL을 공부하면서 많은 사람이 문법을 먼저 외운다.
하지만 실제로 잘 작동하는 SQL을 작성하려면 문법보다 먼저 데이터 구조 자체를 이해하는 능력이 필요하다.

 

이때 가장 중요한 개념이 데이터 딕셔너리(Data Dictionary)라 할수 있다.
데이터 딕셔너리는 단순히 “컬럼 이름과 설명 목록”이 아닌,
테이블의 역할, 한 행이 무엇을 의미하는지, 그리고 다른 테이블과의 관계까지를 정의한 설계 문서에 가깝다.


데이터 딕셔너리가 필요한 이유

SQL은 단순한 조회 문법이 아니다. 데이터를 조합하고 해석해서 의미 있는 결과를 만드는 도구에 가깝다.
그런데 쿼리를 작성할 때 가장 먼저 해야 할 질문은 다음과 같다.

“이 테이블에서 한 행(Row)은 무엇을 의미하는가?”

이 질문에 답하지 않은 채로 추후에 공부하게될 JOIN같은 문법을 사용하면,
결과가 의도와 다르게 늘어나거나, 줄어들거나, 해석이 불가능해지는 경우가 많다.
이것이 바로 데이터 딕셔너리가 필요한 이유다.


데이터 딕셔너리에 담겨야 할 핵심 요소

데이터 딕셔너리를 작성할 때는 다음 항목들을 중심으로 정리하는 것이 좋다.

1. 테이블 요약

먼저 테이블이 어떤 용도의 테이블인지 정의한다.

예)

  • students — 학생 마스터 테이블
    한 행 = 한 학생 정보

테이블 요약은 “한 행의 의미”를 정확히 이해하기 위한 출발점이다.


2. 테이블 설명

이 테이블이 어떤 성격인지 구체화한다.

  • 이벤트성 테이블인가?
  • 마스터 테이블인가?
  • 시간이 지나도 변하지 않는 정보인가?

이 질문에 답할 수 있으면 쿼리 작성 시 의도와 결과 사이의 괴리를 줄일 수 있다.


3. PK (Primary Key)

테이블에서 행을 고유하게 식별하는 컬럼을 정의한다.

예)

  • users 테이블의 user_id
  • orders 테이블의 order_id

Primary Key는 마치 그 테이블의 “주민등록번호”와 같다. 


4. 주요 JOIN 키

다른 테이블과 어떻게 연결되는지를 적는다.

이때 중요한 것은 다음 두 가지다.

  • 어떤 컬럼이 FK(외래키)로서 JOIN 키인지
  • 이 관계가 1:1인지, 1:N인지

이 정보는 JOIN 결과에서 행 수가 늘어나는 이유, 줄어드는 이유를 판단하는 데 필수적이다.


5. 컬럼 정의

각 컬럼이 어떤 의미를 갖는지, 값의 범위는 어떤지 등을 정리한다.

많은 사람들이 이 단계만 보고 데이터 딕셔너리라고 생각하지만,
사실 이 부분은 전체 딕셔너리에서 일부에 불과하다.


데이터 딕셔너리가 SQL 작성에 미치는 영향

SQL을 단순히 문법으로 이해하는 것은 한계가 있다.
하지만 데이터 딕셔너리를 먼저 정리하면 다음과 같은 이점이 생긴다.

  • 쿼리의 결과 한 행이 무엇을 의미하는지 명확해진다.
  • JOIN을 하기 전에 집계가 먼저 필요한지 판단할 수 있다.
  • JOIN 결과를 보고 정상/비정상을 바로 구분할 수 있다.

즉, SQL은 “쿼리를 잘 쓰는 기술”이 아니라, “데이터 구조를 이해하고 그 결과를 설계하는 기술”이라고 할 수 있다.


데이터 딕셔너리는 어떻게 만들까? (실습 관점)

-이런 느낌이구나 하고 짚고 넘어가기-

예시 테이블 — users

테이블 이름: users
한 행의 의미: 가입한 한 명의 사용자 정보
PK: user_id
주요 컬럼: user_id, name, email, created_at 

이렇게 정리하면
쿼리를 작성할 때 “users 테이블에서 한 사람이 어떤 의미인가”가 곧바로 떠오른다.

 

예시 테이블 — orders 

테이블 이름: orders
한 행의 의미: 한 건의 주문 정보
PK: order_id FK: user_id
주요 컬럼: order_id, user_id, total_amount, status, created_at
JOIN 관계: users.user_id = orders.user_id

이렇게 정리하면

users와 orders를 JOIN할 때 “각 주문이 어떤 사용자와 연결되는지”가 곧바로 보인다.


오늘 학습한 내용 정리

이번 글에서는 데이터 딕셔너리의 필요성과 그 구조를 어떻게 정리해야 하는지를 복습했다.

  • 데이터 딕셔너리는 단순 컬럼 설명 목록이 아니다
  • 한 행의 의미(Grain)를 먼저 정의해야 한다
  • PK와 JOIN 키를 알면 JOIN 결과를 해석할 수 있다
  • 딕셔너리가 SQL 작성의 설계도 역할을 한다

데이터 딕셔너리를 먼저 작성하는 습관은
SQL 쿼리를 정확하게 해석하고 안정적으로 작성하는 능력으로 이어진다.

+ Recent posts