
SQLD 1과목 데이터 모델링 핵심 개념 총정리 | 엔티티부터 정규화까지
SQLD 1과목이 어려운 이유
SQLD 1과목은 학생들이 가장 어려워하는 부분입니다. 2과목의 SQL 문법과 달리 1과목은 개념을 이해해야 문제를 풀 수 있기 때문입니다. 특히 처음 배우는 사람들은 "엔티티가 뭐야?", "정규화는 왜 해야 돼?" 같은 기본 의문에서 막힙니다.
그런데 원리를 한 번 이해하면 달라집니다. 표로 정리된 데이터를 보면 문제가 무엇을 묻는지 바로 보이고, 답도 빠르게 찾을 수 있게 됩니다. 이 글에서는 SQLD 1과목의 핵심 개념 5가지를 실제 시험 유형과 함께 정리합니다.
1. 엔티티, 속성, 관계 - 데이터 세계의 문법
데이터 모델링은 현실 세계를 표(테이블)로 옮기는 작업입니다. 이때 기본이 되는 세 가지가 엔티티, 속성, 관계입니다.
엔티티(Entity): 데이터로 표현하려는 대상. 학생, 강좌, 주문처럼 독립적으로 존재하는 것들입니다.
속성(Attribute): 엔티티의 특징. 학생이라면 학번, 이름, 입학일 같은 정보들입니다.
관계(Relationship): 엔티티들 사이의 연결. 학생이 강좌를 수강한다, 강좌는 교수가 담당한다 같은 것들입니다.
핵심: 엔티티는 테이블이 되고, 속성은 컬럼이 되고, 관계는 외래키(Foreign Key)가 됩니다.
2. ERD 읽기 - 시험에 자주 나오는 그림
ERD(Entity Relationship Diagram)는 데이터 관계를 그림으로 나타낸 것입니다. 시험에서 ERD를 보고 "이것이 맞는 구조인가?" 또는 "이 구조에서 무엇이 문제인가?"를 묻습니다.
ERD에서 확인해야 할 세 가지:
- 카디널리티(1:1, 1:N, M:N): 한 학생은 여러 강좌를 수강할 수 있나? (1:N) 아니면 정확히 하나만? (1:1)
- 선택성(필수/선택): 모든 학생이 반드시 강좌를 수강해야 하나? (필수) 아니면 안 해도 되나? (선택)
- 식별/비식별 관계: 자식 엔티티가 부모의 기본키를 자신의 기본키 일부로 가지나? (식별) 아니면 별도의 기본키를 가지나? (비식별)
시험 예시: "학생과 강좌 사이의 관계가 M:N이면 어떻게 모델링해야 할까?" → 답: 교집합 엔티티를 만들어서 1:N, N:1로 분해합니다.
3. 정규화 - 데이터 중복을 줄이는 원리
정규화는 복잡하게 들리지만, 핵심은 간단합니다. 한 칸에 여러 값이 들어가면 안 된다, 한 테이블에 여러 주제가 섞여 있으면 안 된다는 원칙입니다.
1정규형(1NF): 한 칸에 한 개의 값만 들어갑니다.
| 문제 | 예시 | 해결 |
|---|---|---|
| 한 칸에 여러 값 | 수강한강좌: "SQL, Python, JavaScript" | 강좌 테이블을 별도로 만들기 |
2정규형(2NF): 기본키가 아닌 속성이 기본키 일부에만 의존하면 안 됩니다.
예시: 학생(학번, 강좌코드, 교수이름) 테이블에서 교수이름은 학번과 관계없이 강좌코드만으로 결정됩니다. 이는 부분 함수종속이므로 교수 테이블로 분리해야 합니다.
3정규형(3NF): 기본키가 아닌 속성들이 서로 종속 관계가 있으면 안 됩니다.
예시: 주문(주문번호, 고객ID, 고객주소) 테이블에서 고객주소는 고객ID에 의존하지만, 고객ID도 별도의 주제입니다. 고객 테이블로 분리해야 합니다.
시험 팁: 정규화 문제는 "이 테이블 구조에 문제가 있나?"를 묻습니다. 데이터 중복이나 이상 현상(삽입 이상, 삭제 이상)이 생기는지 확인하세요.
4. 반정규화 - 정규화가 전부는 아니다
여기서 헷갈리는 부분입니다. SQLD 1과목에서는 정규화를 배우지만, 실무에서는 때로 반정규화를 합니다. 왜일까요?
정규화가 과하면 조회할 때 너무 많은 테이블을 JOIN해야 하고, 성능이 떨어집니다. 따라서 의도적으로 데이터를 중복 저장하거나 계산된 값을 미리 저장해두는 것이 반정규화입니다.
반정규화의 예:
- 학생 테이블에 "총수강강좌수"를 컬럼으로 추가 (계산 결과를 미리 저장)
- 주문 테이블에 "고객이름"을 중복 저장 (조회 성능 향상)
시험에서는 "언제 반정규화를 해야 하나?"를 묻습니다. 답: 조회 성능이 중요할 때, 데이터 일관성 유지가 가능할 때입니다.
5. 식별/비식별 관계 - 기본키 설계의 핵심
이것도 많은 학생이 헷갈리는 부분입니다. 간단히 정리하면:
식별 관계: 자식 엔티티의 기본키에 부모의 기본키가 포함됩니다.
- 예: 주문(주문번호 PK) → 주문상품(주문번호+상품번호 PK)
- 주문이 없으면 주문상품도 존재할 이유가 없습니다.
- ERD에서 실선으로 표시합니다.
비식별 관계: 자식 엔티티가 별도의 기본키를 가집니다.
- 예: 부서(부서번호 PK) → 사원(사원번호 PK, 부서번호 FK)
- 부서가 없어져도 사원 정보는 남을 수 있습니다.
- ERD에서 점선으로 표시합니다.
선택 팁: "자식이 부모 없이 독립적으로 존재할 수 있나?" → YES면 비식별, NO면 식별입니다.
SQLD 62회 시험 일정과 1과목 준비
SQLD 62회는 접수가 2026년 7월 20일~7월 24일이고, 시험은 8월 22일(토)입니다. 1과목(10문제, 20점)은 8점 이상 획득이 필수입니다. 1과목에서 떨어지면 2과목 점수와 관계없이 불합격입니다.
1과목은 암기가 아니라 이해가 핵심입니다. 위에서 설명한 5가지 개념—엔티티/속성/관계, ERD 읽기, 정규화(1NF/2NF/3NF), 반정규화, 식별/비식별 관계—을 정확히 이해하면 대부분의 문제를 풀 수 있습니다.
지금 시작하는 가장 빠른 방법
1과목 개념을 혼자 정리하려면 많은 시간이 걸립니다. 알고런의 SQLD 올인원 강의는 1과목의 핵심 개념을 명확하게 설명하고, 실제 시험 유형과 함께 연습할 수 있습니다. 현재 정가 15만 원에서 59,000원으로 할인 중입니다.
1과목 개념을 단단히 다지고, 시험 전까지 176문제를 풀고 싶다면 노랭이 176제도 함께 활용할 수 있습니다. (정가 99,000원 → 39,000원)
AlgoLearn Team
IT 교육 콘텐츠 에디터
