CertNote/ 출퇴근 학습 노트
로드맵
SQLD · 개발자SQL 개발자 (SQLD)
  • Week 1
    • 1.데이터 모델링 개요
    • 2.3단계 스키마와 모델링 단계
    • 3.엔터티
    • 4.속성
    • 5.관계
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
    • 1.함정 정리 1 (NULL 과 COUNT)
    • 2.함정 정리 2 (실행 순서와 조인)
    • 3.Oracle 과 SQL Server 차이
    • 4.1과목 총정리
    • 5.2과목 총정리
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← SQLD/Week 8/Day 4

기준: SQLD 출제 기준·오류 제보

SQLD· AssociateWeek 8 · Day 4읽기 약 16분
핵심 정리
  • 1과목은 10문항 20점이고, 8점(4문항) 미만이면 총점이 60점을 넘어도 과락이다.
  • 모델링 단계는 개념·논리·물리, 3단계 스키마는 외부·개념·내부다. 논리적 독립성은 개념 스키마 변경, 물리적 독립성은 내부 스키마 변경을 견딘다.
  • 엔터티는 유무형으로 유형·개념·사건, 발생 시점으로 기본·중심·행위로 나눈다. 두 축은 서로 대응하지 않는다.
  • 정규화 판정은 "원자값인가 → 키 일부에 종속되나 → 일반 속성끼리 종속되나 → 후보키 아닌 결정자가 있나" 순서로 묻는다.
  • 반정규화는 조사 → 다른 방법 검토 → 적용 순서이고, 인조식별자는 키를 단순하게 하는 대신 중복과 추가 인덱스를 부른다.

Day 4 - 1과목 총정리

1과목이 합격을 가르는 방식

SQLD 는 50문항 중 1과목이 10문항(20점)이다. 비중은 작지만 과목별로 40% 미만이면 과락이라, 1과목에서 8점(4문항)을 채우지 못하면 2과목 점수와 관계없이 불합격이다(출처: 이 트랙 README 의 시험 정보, dataq.or.kr 2026-11-03 확인).

과목문항배점과락선 (40% 미만)
1과목 데이터 모델링의 이해10208점 미만 (4문항 미만)
2과목 SQL 기본 및 활용408032점 미만 (16문항 미만)
  • 1과목 범위는 W1(모델링·엔터티·속성·관계)과 W2(식별자·정규화·반정규화·조인과 트랜잭션·NULL·인조식별자) 열 편이다.
  • 아래는 그 내용을 다시 늘어놓지 않고, 보기에서 서로 바꿔치기되기 쉬운 짝과 판정 순서로 묶었다.

모델링의 성격: 셋씩 묶인 목록 넷

W1 Day 1 에는 "세 가지"로 묶이는 목록이 넷 나온다. 묶음 이름과 원소를 섞은 보기가 오답이 된다.

묶음원소섞이기 쉬운 지점
특징추상화 · 단순화 · 명확화단순화는 쉽게, 명확화는 한 가지 뜻으로 표현하는 것
관점데이터(What) · 프로세스(How) · 상관(Interaction)상관 관점의 영문이 Interaction 이다
중요성파급 효과(Leverage) · 간결한 표현(Conciseness) · 데이터 품질(Data Quality)지켜야 할 것
유의점중복(Duplication) · 비유연성(Inflexibility) · 비일관성(Inconsistency)피해야 할 것
  • 데이터 모델의 3요소는 엔터티(Things)·속성(Attributes)·관계(Relationships)다.
  • 개별 단위를 부르는 이름도 짝으로 묻는다. 엔터티의 개별은 인스턴스(어커런스), 속성의 개별은 속성값, 관계의 개별은 페어링이다.

모델링 3단계와 3단계 스키마

두 개념 모두 "추상에서 구체로" 세 칸이라 한 문항에 함께 나오기 좋다. 나누는 대상부터 다르다.

비교모델링 단계 (W1 Day 2)3단계 스키마 (W1 Day 2)
무엇을 나누나설계 과정완성된 DB 를 보는 층
이름개념적 → 논리적 → 물리적외부 · 개념 · 내부
나누는 목적단계별 구체화데이터 독립성
개수단계마다 산출물 하나외부는 여럿, 개념·내부는 하나
모델링 단계                       3단계 스키마
개념적  핵심 엔터티·관계, EA       외부  사용자·응용별 뷰 (여럿)
  ↓                                 │  외부/개념 사상 → 논리적 독립성
논리적  키·속성·관계 확정, 정규화   개념  조직 전체 통합 구조 (하나)
  ↓                                 │  개념/내부 사상 → 물리적 독립성
물리적  테이블·타입·인덱스·성능     내부  저장 구조·인덱스 (하나)
  • "논리 스키마", "외부 모델링"은 두 목록을 섞어 만든 말이다. 모델링 단계에는 외부가 없고, 스키마에는 논리가 없다.
  • 정규화는 논리 모델링, 성능·저장 방식과 반정규화 검토는 물리 모델링의 일이다.

독립성은 "무엇이 바뀌고, 무엇이 보호받나"로 판정한다.

독립성바뀌는 쪽보호받는 쪽쇼핑몰 예
논리적개념 스키마외부 스키마고객 테이블에 칼럼을 추가해도 배송 화면은 그대로
물리적내부 스키마개념 스키마인덱스를 만들고 디스크를 옮겨도 테이블 구조와 SQL 은 그대로

⚠️ 함정: "논리적 독립성 = 외부 스키마가 바뀌어도…"로 시작하는 보기는 틀린다. 논리적 독립성에서 바뀌는 것은 개념 스키마이고, 외부 스키마는 보호받는 쪽이다.

엔터티: 조건 여섯과 분류 두 축

엔터티가 되기 위한 조건

W1 Day 3 의 여섯 특징을 "하나라도 빠지면 엔터티가 아니다"로 뒤집어 보면 판정이 빠르다.

조건탈락하는 경우
업무에서 필요한 정보업무와 무관한 집합
유일한 식별자로 식별인스턴스를 구분할 방법이 없다
인스턴스가 두 개 이상회사 정보처럼 한 건뿐이다
업무 프로세스가 이용어떤 업무도 생성·조회·수정·삭제하지 않는다
속성을 포함설명할 속성이 없다
관계가 하나 이상어떤 엔터티와도 연결되지 않는다
  • 관계 조건의 예외는 통계성·코드성·시스템 처리용 내부 엔터티(트랜잭션 로그 등)다. 관계를 생략해 그리기도 한다.
  • 프로세스가 쓰지 않는 엔터티는 업무 분석에서 프로세스가 빠졌다는 신호로 읽는다.

분류 두 축

흔히 "유형/무형"으로 줄여 말하지만, 이 트랙(W1 Day 3)은 교재대로 유형·개념·사건 세 가지로 나눈다. 무형에 드는 것이 개념과 사건이다.

축분류판정 질문쇼핑몰 예
유무형유형물리적 형태가 있나고객, 상품, 창고
개념형태 없이 정해 두고 쓰는 정보인가회원등급, 상품카테고리, 보험상품
사건업무 수행 중에 발생하나주문, 결제, 배송
발생 시점기본(키)다른 엔터티 없이 독립적으로 생기나고객, 상품, 사원, 부서
중심기본 엔터티에서 생겨 업무의 중심이 되나주문, 결제
행위두 개 이상의 부모에서 생기나주문상품, 주문변경이력
  • 한 엔터티는 두 축에서 각각 이름을 받는다. 주문상품은 사건이면서 행위, 회원등급은 개념이면서 기본이다.
  • "사건 엔터티 = 중심 엔터티"처럼 축을 이어 붙인 보기는 틀린다.
  • 행위 엔터티는 상세 설계나 프로세스와의 상관 모델링 단계에서 드러나는 경우가 많다.
  • 이름은 현업 용어·약어 없이·단수 명사로, 모델 전체에서 유일하게 짓는다.

속성: 분류 세 축과 도메인

속성은 의미상 더 쪼갤 수 없는 최소 단위이고, 한 인스턴스에서 속성값을 하나만 가진다(W1 Day 4).

축분류판정 질문예
특성기본업무에서 바로 나온 원래 속성인가상품명, 주문수량
설계설계하며 새로 만든 코드·일련번호인가주문상태코드, 주문상품 일련번호
파생다른 속성에서 계산되나주문총금액, 누적구매액
엔터티 구성PK인스턴스를 식별하나주문의 주문번호
FK다른 엔터티와의 관계로 들어왔나주문의 고객번호
일반PK·FK 가 아닌가주문일자, 결제금액
쪼갤 수 있나단순형(단일)더 나눌 수 없나주문수량
복합여러 의미 단위로 나뉘나주소(시·구·동), 고객명(성·이름)
값이 몇 개인가단일값인스턴스당 하나인가생년월일
다중값여럿일 수 있나고객의 여러 배송지
  • "단일 속성"과 "단일값 속성"은 다른 축이다. 앞은 쪼갤 수 있는지, 뒤는 값이 몇 개인지를 묻는다.
  • 다중값 속성은 별도 엔터티로 분리한다. 이 판단이 1NF 로 이어진다.
  • 파생 속성은 원천이 바뀔 때 함께 갱신하지 않으면 값이 어긋난다. 그래서 가능한 한 적게 정의한다.
  • 같은 고객번호도 고객 엔터티에서는 PK, 주문 엔터티에서는 FK 속성이다. 어느 엔터티에서 보느냐가 분류를 정한다.

도메인은 속성이 가질 수 있는 값의 범위로, 데이터 타입·크기·제약 조건을 함께 담는다. 주문일자·배송일자·결제일자가 "날짜" 도메인 하나를 공유하는 식이고, 물리 모델에서는 칼럼 타입과 CHECK·NOT NULL 로 구현된다.

관계: 종류, 표기 요소, 두 표기법

짝구분예
존재 / 행위존재만으로 연결되나, 어떤 행위를 해야 생기나사원은 부서에 소속된다 / 고객이 주문을 한다
ERD / UMLERD 는 둘을 구분하지 않는다. UML 은 연관(실선)·의존(점선)으로 구분한다
차수 / 선택성상대 인스턴스 몇 개(1:1, 1:M, M:N)인가 / 반드시 참여하나고객–주문 1:M, 고객 쪽 선택
  • 표기의 세 요소는 관계명(Membership)·관계 차수(Cardinality)·관계 선택 사양(Optionality)이다.
  • 관계명은 애매한 동사("관계된다")를 피하고 현재형으로 쓴다. 양쪽 끝에서 각각 하나씩 붙는다.
  • M:N 은 관계형 DB 에서 직접 구현하지 못해 교차 엔터티(주문상품)로 1:M 두 개로 푼다.
  • 읽는 순서는 기준 엔터티("각각의") → 상대 개수 → 선택 사양("항상/때때로") → 관계명이다.
IE      고객 ┼──────────O< 주문    선택성 기호(O, |)는 상대편 끝에 붙는다
Barker  고객 - - - -─────< 주문    선택성은 자기 쪽 절반의 실선(필수)·점선(선택)
  • 같은 관계라도 IE 의 원 O 는 대상 쪽 끝, Barker 의 점선은 기준 쪽 절반에 있다.
  • Barker 는 속성 앞에 #(식별자)·*(필수)·o(선택)를 붙인다.

식별자: 분류 네 기준과 주식별자 특성

기준짝가르는 질문
대표성주 / 보조다른 엔터티와 참조 관계를 맺는 데 쓰나
생성 여부내부 / 외부스스로 만들었나, 관계를 통해 받아 왔나
속성 수단일 / 복합속성 하나인가, 둘 이상인가
대체 여부본질 / 인조업무가 만들었나, 인위적으로 만들었나

W2 Day 1 의 EMP 대입 예를 그대로 쓰면 EMP.EMPNO 는 주·내부·단일·본질식별자이고, EMP.DEPTNO 는 DEPT 에서 받아 온 외부식별자다. 사원 엔터티의 주민등록번호는 구분은 되지만 참조에 쓰지 않는 보조식별자다.

주식별자의 네 특성은 위반 사례로 기억하면 보기를 가르기 쉽다.

특성지켜야 할 것위반 예
유일성모든 인스턴스를 유일하게 구분지금 이름이 겹치지 않는다는 이유로 ENAME 을 고른다
최소성유일성에 필요한 만큼만 속성을 쓴다(EMPNO, ENAME)
불변성값이 자주 바뀌지 않는다부서 이동 때 바뀌는 값을 키로 쓴다
존재성값이 반드시 있다(NOT NULL)사번 없는 사원 행
  • 최소성은 "속성이 하나"라는 뜻이 아니다. 주문상품의 (주문번호, 상품번호) 는 둘이 최소다.
  • 고를 때는 조회에 많이 쓰는 속성을 택하고, 명칭·내역 같은 이름 속성은 피한다.

식별 관계와 비식별 관계

비교식별 관계비식별 관계
부모 PK 가 자식에서주식별자의 일부일반 속성
부모 없이 자식이존재할 수 없다존재할 수 있다(선택 관계일 때)
IE 표기실선점선
예주문 → 주문상품DEPT → EMP
한쪽만 고집하면자식 키가 계속 길어진다상위 값을 얻으려 조인이 늘어난다
  • 부모 PK 가 자식 PK 의 전부가 되면 1:1 관계다.
  • 관계가 약하거나, 자식 키를 독립적으로 만들 수 있거나, 자식이 부모보다 먼저 생길 수 있으면 비식별 관계를 검토한다.

정규화 판정 순서

정규형은 함수 종속(X → Y, X 가 결정자)의 모양으로 가린다(W2 Day 2). 아래 질문을 위에서부터 던져 처음 "예"가 나오는 곳이 위반 정규형이다.

① 한 칸에 값이 여럿(다중값·반복 그룹)인가?          예 → 1NF 위반
② 일반 속성이 복합 주식별자의 "일부"에만 종속되나?   예 → 2NF 위반 (부분 함수 종속)
③ 일반 속성이 다른 일반 속성에 종속되나?            예 → 3NF 위반 (이행 함수 종속)
④ 후보키가 아닌 결정자가 있나?                      예 → BCNF 위반
   모두 아니오 → BCNF 만족 (4NF 다치 종속, 5NF 조인 종속은 이름과 대상만)
엔터티 (주식별자)함수 종속판정
주문상품 (ORDER_NO, PROD_NO) + PROD_NAMEPROD_NO → PROD_NAME키 일부에 종속 → 2NF 위반, 상품으로 분리
EMP·DEPT 합친 표 (EMPNO)EMPNO → DEPTNO, DEPTNO → DNAME, LOC이행 종속 → 3NF 위반, DEPT 로 분리
수강 (학번, 과목) + 교수(학번, 과목) → 교수, 교수 → 과목3NF 이지만 결정자 교수가 후보키 아님 → BCNF 위반
  • 주식별자가 단일 속성이면 ②는 성립할 수 없다. 2NF 위반은 복합 주식별자에서만 생긴다.
  • BCNF 예는 (교수, 과목) 과 (학번, 교수) 로 나눠 해결한다.
  • 정규화하지 않으면 삽입·갱신·삭제 이상이 생긴다. 주문 없이 상품을 못 넣고(삽입), 한 행만 고쳐 이름이 갈리고(갱신), 주문 삭제로 상품 정보가 사라진다(삭제).
  • 정규화 뒤 입력·수정·삭제는 좋아지지만, 조회는 조인이 늘어 느려질 수도, 테이블이 작아져 빨라질 수도 있다. "조회가 반드시 느려진다"는 틀린 서술이다.

반정규화: 순서와 기법

반정규화는 정규화를 끝낸 모델에 조회 성능을 위해 일부러 중복을 들이는 일이다(W2 Day 3). 그 대가는 무결성 위험이다.

순서단계내용
①대상 조사범위 처리 빈도, 대량 범위 처리, 통계성 프로세스, 조인 개수
②다른 방법 유도 검토뷰, 클러스터링, 인덱스 조정, 응용 애플리케이션 처리
③반정규화 적용테이블 · 칼럼 · 관계
갈래기법목적으로 구분
테이블 병합1:1, 1:M, 슈퍼/서브타입 병합늘 함께 보는 테이블의 조인 제거
테이블 분할수직 분할(칼럼 단위), 수평 분할(행 단위)접근 범위에 맞춰 나누기
테이블 추가중복·통계·이력·부분 테이블복제, 미리 집계, 이력 보관
칼럼중복 칼럼, 파생 칼럼, 이력 테이블 칼럼 추가, PK 에 의한 칼럼, 오작동 대비 칼럼중복 칼럼은 조인 감소, 파생 칼럼은 계산 감소
관계중복 관계 추가조인 경로 단축
  • 수직 분할로 나온 두 테이블은 같은 주식별자를 공유하는 1:1 관계다. 수평 분할은 파티셔닝으로 구현하는 경우가 많다.
  • ②의 대안은 모델에 중복을 만들지 않는다. 그래서 적용보다 먼저 본다.

데이터 모델과 SQL: 관계·트랜잭션·NULL

모델에서SQL 에서근거 노트
관계(1:M)FK, 조인 조건 E.DEPTNO = D.DEPTNOW2 Day 4
선택 관계(사원 없는 부서)부서를 모두 보려면 OUTER JOINW2 Day 4
계층형 데이터 모델(자기 참조)셀프 조인, 계층형 질의W2 Day 4
상호배타적(아크) 관계구분 칼럼 값에 따라 조인 대상이 달라진다W2 Day 4
양쪽 필수 관계두 INSERT 를 한 트랜잭션으로 묶어 함께 COMMITW2 Day 4
Null 허용 속성연산 결과 NULL, 비교 결과 UNKNOWNW2 Day 5
  • 계층형 데이터 모델은 하나의 엔터티 안의 상하 관계다. EMP 의 MGR → EMPNO 가 그 예이고, 최상위 KING 의 MGR 은 NULL 이다.
  • 관계가 없어도 조인은 된다. EMP 와 SALGRADE 는 급여 범위(Non-EQUI)로 잇는다.
  • 주문과 주문상품처럼 서로 없이는 의미가 없는 엔터티는 필수 관계로 그린다. 선택으로 잘못 그리면 주문만 들어간 데이터가 남을 수 있다.

NULL 은 "정해지지 않음"이라 0·공백과 다르다. 1과목에서 묻는 동작은 다섯 가지로 정리된다.

상황결과EMP 로 본 값
SAL + COMM (COMM 이 NULL)NULLBLAKE, JAMES 의 합계가 빈다
WHERE COMM = NULL오류 없이 0건NULL 사원은 IS NULL 로 10명
COUNT(*) / COUNT(COMM)행 전체 / NULL 제외14 / 4
AVG(COMM) / AVG(NVL(COMM, 0))분모가 다르다550 / 157.142857
대상 값이 전부 NULL 인 SUM·AVGNULL (0 아님)10·20번 부서의 SUM(COMM)
  • Oracle 은 정렬에서 NULL 을 가장 큰 값처럼 다뤄 오름차순 맨 뒤에 둔다.

본질식별자 vs 인조식별자

비교본질식별자인조식별자
만든 주체업무 (원조식별자라고도 한다)설계자가 인위적으로 (일련번호 등)
키 모양복합이 되기 쉽다단일 칼럼
중복 방지PK 가 직접 막는다본질 칼럼에 별도 제약이 없으면 중복 허용
인덱스PK 하나PK + 본질 칼럼 UNIQUE, 둘
자식 상속여러 칼럼이 내려간다칼럼 하나만 내려간다
  • W2 Day 5 에서 ITEM_ID PK 만 둔 테이블은 같은 (1001, 'P1') 행을 두 번 받았고, 본질식별자를 PK 로 둔 테이블은 ORA-00001 로 거부했다.
  • 정리하면 본질식별자가 복잡하지 않으면 그대로 쓰고, 속성이 지나치게 많을 때 인조식별자를 검토한다.

내일은 2과목 SQL 기본 및 활용을 같은 방식으로 정리한다.

📖 용어

  • 과락 : 과목 점수가 배점의 40% 미만이라 총점과 관계없이 불합격이 되는 것. 1과목은 8점 미만이다.
  • 데이터 독립성 : 한 층의 스키마가 바뀌어도 다른 층이 영향을 받지 않는 성질. 논리적·물리적 두 가지다.
  • 페어링 : 관계에 참여한 인스턴스 한 쌍의 연결. 관계의 개별 단위다.
  • 행위 엔터티 : 두 개 이상의 부모 엔터티에서 생기는 엔터티. 주문상품이 예다.
  • 도메인 : 속성이 가질 수 있는 값의 범위. 타입·크기·제약 조건을 포함한다.
  • 결정자 : 함수 종속 X → Y 에서 값을 정하는 쪽 X. BCNF 는 모든 결정자가 후보키일 것을 요구한다.
  • 수직 분할 / 수평 분할 : 칼럼 단위 / 행 단위로 테이블을 나누는 반정규화 기법.
  • 인조식별자 : 업무에는 없지만 키를 단순하게 하려고 만든 식별자. 본질 칼럼에 별도 제약이 필요하다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

3단계 스키마와 데이터 독립성에 대한 설명으로 옳은 것은?

문제 2

쇼핑몰 모델에서 주문상품 엔터티는 주문과 상품 두 부모로부터 생긴다. 주문상품을 발생 시점 기준으로 분류하면?

문제 3

수강성적 엔터티의 주식별자는 (학번, 과목코드) 이고, 모든 속성은 원자값이다. 함수 종속이 (학번, 과목코드) → 성적 과 과목코드 → 과목명 일 때, 이 엔터티가 만족하지 못하는 가장 낮은 정규형은?

문제 4

인조식별자에 대한 설명으로 옳지 않은 것은?

문제 5

반정규화에 대한 설명으로 옳은 것은?

이전Oracle 과 SQL Server 차이Week 8 · Day 3다음 2과목 총정리Week 8 · Day 5

참고 공식 자료

  • SQLD 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 1과목이 합격을 가르는 방식
  • 모델링의 성격: 셋씩 묶인 목록 넷
  • 모델링 3단계와 3단계 스키마
  • 엔터티: 조건 여섯과 분류 두 축
  • 엔터티가 되기 위한 조건
  • 분류 두 축
  • 속성: 분류 세 축과 도메인
  • 관계: 종류, 표기 요소, 두 표기법
  • 식별자: 분류 네 기준과 주식별자 특성
  • 식별 관계와 비식별 관계
  • 정규화 판정 순서
  • 반정규화: 순서와 기법
  • 데이터 모델과 SQL: 관계·트랜잭션·NULL
  • 본질식별자 vs 인조식별자
  • 용어
  • 연습 문제