SQLD를 처음 공부했을 때 가장 먼저 들었던 생각은 딱 하나였다.
“이거 생각보다 너무 낯설다…”
나는 개발 전공자도 아니었고, 데이터베이스를 제대로 다뤄본 경험도 거의 없었다. 그런데 SQLD를 준비하려고 책을 펼치자마자 처음 보는 용어들이 한꺼번에 쏟아졌다.
테이블, 컬럼, PK, FK, 정규화, 조인, 트랜잭션…
단어 하나하나가 전부 외계어처럼 느껴졌다.
특히 SQLD는 단순히 SQL 문법만 외운다고 끝나는 시험이 아니었다. 데이터베이스 구조와 개념 자체를 이해해야 문제를 풀 수 있는 경우가 많았다. 그래서 처음 공부를 시작했을 때는 “이걸 내가 이해할 수 있을까?” 하는 막막함이 정말 컸다.
오늘은 비전공자인 내가 SQLD 공부를 시작하면서 가장 헷갈렸던 부분들과, 어떻게 이해하기 시작했는지를 정리해보려고 한다.
지금 SQLD를 처음 시작한 사람이라면 아마 비슷한 고민을 하고 있을지도 모른다.
SELECT는 알겠는데 FROM과 JOIN은 왜 이렇게 어려울까?
처음 SQL을 배울 때 SELECT 문은 비교적 이해하기 쉬웠다.
SELECT 이름
FROM 학생;
이 정도는 “학생 테이블에서 이름 가져오기”라고 생각하면 바로 이해가 된다.
문제는 JOIN부터였다.
SELECT 학생.이름, 강의.강의명
FROM 학생
JOIN 강의
ON 학생.강의ID = 강의.강의ID;
처음 봤을 때는 솔직히 문장이 너무 길고 복잡해 보였다.
왜 테이블을 두 개나 연결해야 하는지도 잘 이해가 안 됐다.
비전공자인 내가 가장 헷갈렸던 건 “테이블을 왜 나누는가?”였다.
그런데 공부를 계속하다 보니 데이터베이스는 하나의 거대한 엑셀 파일처럼 만드는 것이 아니라, 데이터를 목적별로 나눠서 관리한다는 개념이라는 걸 알게 됐다.
예를 들어 학생 정보와 강의 정보를 하나의 테이블에 전부 넣으면 데이터가 계속 중복된다.
학생명 강의명
| 민수 | SQLD |
| 민수 | 데이터모델링 |
| 지영 | SQLD |
이런 식으로 계속 데이터가 반복된다.
그래서 학생 테이블과 강의 테이블을 따로 만들고, 필요한 순간에 JOIN으로 연결하는 방식이 훨씬 효율적인 구조였다.
이 개념을 이해하고 나서야 JOIN이 조금씩 읽히기 시작했다.
그전까지는 그냥 “시험에 나오는 문법”으로 외우려고 했는데, 실제로는 데이터 구조를 이해해야 SQL도 이해된다는 걸 뒤늦게 깨달았다.
정규화는 암기하려고 할수록 더 헷갈렸다
SQLD를 공부하면서 가장 많이 들었던 단어 중 하나가 바로 “정규화”였다.
처음엔 정말 이게 너무 어려웠다.
1정규화, 2정규화, 3정규화…
이름도 비슷하고 설명도 전부 비슷하게 느껴졌다.
특히 책에서 설명하는 내용을 처음 읽으면 이런 느낌이었다.
- 함수 종속성
- 부분 함수 종속 제거
- 이행 함수 종속 제거
솔직히 비전공자 입장에서는 단어 자체가 너무 어렵다.
그래서 처음에는 그냥 무작정 외우려고 했다.
하지만 그렇게 외운 내용은 문제를 조금만 꼬아도 바로 헷갈렸다.
나중에 공부 방법을 바꿨다.
“왜 정규화를 하는가?”를 먼저 이해하려고 했다.
결국 정규화의 핵심은 데이터 중복을 줄이고, 수정할 때 오류가 생기지 않도록 구조를 정리하는 과정이었다.
예를 들어 어떤 학생의 전화번호가 여러 테이블에 중복 저장되어 있다면, 번호가 바뀔 때마다 전부 수정해야 한다. 그런데 하나라도 수정이 누락되면 데이터 오류가 발생한다.
즉, 정규화는 단순 암기 과목이 아니라 “데이터를 깔끔하게 관리하기 위한 방법”이었다.
이렇게 흐름 중심으로 이해하기 시작하니까 정규화가 이전보다 훨씬 덜 어렵게 느껴졌다.
오히려 시험 문제에서도 단순 정의 암기보다 “왜 이런 구조가 문제인지”를 이해하는 게 더 중요했다.
SQLD는 문법 시험이 아니라 ‘개념 이해 시험’에 가까웠다
처음 SQLD를 준비할 때 나는 SQL 문법 위주로 공부하면 될 줄 알았다.
그래서 SELECT, WHERE, GROUP BY 같은 문법을 먼저 외우기 시작했다. 그런데 문제를 풀어보니 생각보다 데이터 모델링과 개념 문제가 훨씬 중요했다.
특히 이런 부분들이 계속 헷갈렸다.
- 후보키와 기본키 차이
- 식별자와 비식별자 관계
- 엔터티 종류
- 카디널리티
- 트랜잭션 특성
문법만 공부했을 때는 문제를 거의 감으로 풀게 되는 경우가 많았다.
그런데 SQLD는 단순 코딩 시험이 아니라 “데이터베이스를 이해하고 있는가?”를 묻는 시험에 가까웠다.
그래서 공부 방식도 달라져야 했다.
나는 이후부터 단순 암기 대신 직접 예시를 만들어가며 공부했다.
예를 들어 쇼핑몰 데이터를 떠올리면서:
- 회원 테이블
- 주문 테이블
- 상품 테이블
이렇게 직접 관계를 그려보니 PK와 FK 개념도 훨씬 쉽게 이해됐다.
비전공자일수록 처음에는 용어 때문에 압도당하기 쉽다.
하지만 실제 서비스나 익숙한 상황에 연결해서 공부하면 이해 속도가 확실히 빨라진다.
지금 SQLD를 공부하면서 어렵다고 느끼는 사람도 아마 많을 것이다.
그런데 대부분의 비전공자는 처음에 다 비슷하게 헷갈린다.
중요한 건 처음부터 완벽하게 이해하려고 하기보다, 반복하면서 흐름을 익히는 것이다.
나 역시 처음에는 문제 하나 읽는 데도 오래 걸렸지만, 계속 보다 보니 조금씩 용어가 익숙해지기 시작했다.
SQLD는 처음 진입장벽이 높게 느껴질 뿐, 흐름이 보이기 시작하면 오히려 재미가 생기는 자격증이었다.
