SQLD 는 50문항 중 1과목이 10문항(20점)이다. 비중은 작지만 과목별로 40% 미만이면 과락이라, 1과목에서 8점(4문항)을 채우지 못하면 2과목 점수와 관계없이 불합격이다(출처: 이 트랙 README 의 시험 정보, dataq.or.kr 2026-11-03 확인).
과목 문항 배점 과락선 (40% 미만) 1과목 데이터 모델링의 이해 10 20 8점 미만 (4문항 미만) 2과목 SQL 기본 및 활용 40 80 32점 미만 (16문항 미만)
1과목 범위는 W1(모델링·엔터티·속성·관계)과 W2(식별자·정규화·반정규화·조인과 트랜잭션·NULL·인조식별자) 열 편이다.
아래는 그 내용을 다시 늘어놓지 않고, 보기에서 서로 바꿔치기되기 쉬운 짝과 판정 순서로 묶었다.
W1 Day 1 에는 "세 가지"로 묶이는 목록이 넷 나온다. 묶음 이름과 원소를 섞은 보기가 오답이 된다.
묶음 원소 섞이기 쉬운 지점 특징 추상화 · 단순화 · 명확화 단순화는 쉽게 , 명확화는 한 가지 뜻으로 표현하는 것 관점 데이터(What) · 프로세스(How) · 상관(Interaction) 상관 관점의 영문이 Interaction 이다 중요성 파급 효과(Leverage) · 간결한 표현(Conciseness) · 데이터 품질(Data Quality) 지켜야 할 것 유의점 중복(Duplication) · 비유연성(Inflexibility) · 비일관성(Inconsistency) 피해야 할 것
데이터 모델의 3요소는 엔터티(Things)·속성(Attributes)·관계(Relationships)다.
개별 단위를 부르는 이름도 짝으로 묻는다. 엔터티의 개별은 인스턴스(어커런스), 속성의 개별은 속성값, 관계의 개별은 페어링 이다.
두 개념 모두 "추상에서 구체로" 세 칸이라 한 문항에 함께 나오기 좋다. 나누는 대상부터 다르다.
비교 모델링 단계 (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 / UML ERD 는 둘을 구분하지 않는다. 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_NAME PROD_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 에서 근거 노트 관계(1:M) FK, 조인 조건 E.DEPTNO = D.DEPTNO W2 Day 4 선택 관계(사원 없는 부서) 부서를 모두 보려면 OUTER JOIN W2 Day 4 계층형 데이터 모델(자기 참조) 셀프 조인, 계층형 질의 W2 Day 4 상호배타적(아크) 관계 구분 칼럼 값에 따라 조인 대상이 달라진다 W2 Day 4 양쪽 필수 관계 두 INSERT 를 한 트랜잭션으로 묶어 함께 COMMIT W2 Day 4 Null 허용 속성 연산 결과 NULL, 비교 결과 UNKNOWN W2 Day 5
계층형 데이터 모델은 하나의 엔터티 안 의 상하 관계다. EMP 의 MGR → EMPNO 가 그 예이고, 최상위 KING 의 MGR 은 NULL 이다.
관계가 없어도 조인은 된다. EMP 와 SALGRADE 는 급여 범위(Non-EQUI)로 잇는다.
주문과 주문상품처럼 서로 없이는 의미가 없는 엔터티는 필수 관계로 그린다. 선택으로 잘못 그리면 주문만 들어간 데이터가 남을 수 있다.
NULL 은 "정해지지 않음"이라 0·공백과 다르다. 1과목에서 묻는 동작은 다섯 가지로 정리된다.
상황 결과 EMP 로 본 값 SAL + COMM (COMM 이 NULL)NULL BLAKE, 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·AVG NULL (0 아님) 10·20번 부서의 SUM(COMM)
Oracle 은 정렬에서 NULL 을 가장 큰 값처럼 다뤄 오름차순 맨 뒤에 둔다.
비교 본질식별자 인조식별자 만든 주체 업무 (원조식별자라고도 한다) 설계자가 인위적으로 (일련번호 등) 키 모양 복합이 되기 쉽다 단일 칼럼 중복 방지 PK 가 직접 막는다 본질 칼럼에 별도 제약이 없으면 중복 허용 인덱스 PK 하나 PK + 본질 칼럼 UNIQUE, 둘 자식 상속 여러 칼럼이 내려간다 칼럼 하나만 내려간다
W2 Day 5 에서 ITEM_ID PK 만 둔 테이블은 같은 (1001, 'P1') 행을 두 번 받았고, 본질식별자를 PK 로 둔 테이블은 ORA-00001 로 거부했다.
정리하면 본질식별자가 복잡하지 않으면 그대로 쓰고, 속성이 지나치게 많을 때 인조식별자를 검토한다.
내일은 2과목 SQL 기본 및 활용을 같은 방식으로 정리한다.
과락 : 과목 점수가 배점의 40% 미만이라 총점과 관계없이 불합격이 되는 것. 1과목은 8점 미만이다.
데이터 독립성 : 한 층의 스키마가 바뀌어도 다른 층이 영향을 받지 않는 성질. 논리적·물리적 두 가지다.
페어링 : 관계에 참여한 인스턴스 한 쌍의 연결. 관계의 개별 단위다.
행위 엔터티 : 두 개 이상의 부모 엔터티에서 생기는 엔터티. 주문상품이 예다.
도메인 : 속성이 가질 수 있는 값의 범위. 타입·크기·제약 조건을 포함한다.
결정자 : 함수 종속 X → Y 에서 값을 정하는 쪽 X. BCNF 는 모든 결정자가 후보키일 것을 요구한다.
수직 분할 / 수평 분할 : 칼럼 단위 / 행 단위로 테이블을 나누는 반정규화 기법.
인조식별자 : 업무에는 없지만 키를 단순하게 하려고 만든 식별자. 본질 칼럼에 별도 제약이 필요하다.
📝 연습 문제 선택지를 클릭하면 정답·해설이 펼쳐집니다.
3단계 스키마와 데이터 독립성에 대한 설명으로 옳은 것은?
A 논리적 독립성은 내부 스키마가 바뀌어도 개념 스키마가 영향을 받지 않는 성질이다 B 외부 스키마는 조직 전체를 통합한 구조라 데이터베이스마다 하나만 있다 C 정규화는 3단계 스키마 가운데 내부 스키마를 설계할 때 하는 작업이다 D 물리적 독립성은 내부 스키마가 바뀌어도 개념 스키마가 영향을 받지 않는 성질이다 쇼핑몰 모델에서 주문상품 엔터티는 주문과 상품 두 부모로부터 생긴다. 주문상품을 발생 시점 기준으로 분류하면?
A 기본 엔터티 B 행위 엔터티 C 중심 엔터티 D 사건 엔터티 수강성적 엔터티의 주식별자는 (학번, 과목코드) 이고, 모든 속성은 원자값이다. 함수 종속이 (학번, 과목코드) → 성적 과 과목코드 → 과목명 일 때, 이 엔터티가 만족하지 못하는 가장 낮은 정규형은?
인조식별자에 대한 설명으로 옳지 않은 것은?
A 인조식별자를 PK 로 두면 본질 칼럼에 제약이 없어도 같은 데이터의 중복 입력이 막힌다 B 복합 본질식별자를 칼럼 하나로 대신하므로 자식으로 상속되는 칼럼이 줄어든다 C 중복을 막으려고 본질 칼럼에 UNIQUE 인덱스를 두면 테이블의 인덱스가 둘이 된다 D 업무적으로는 존재하지 않지만 일련번호처럼 인위적으로 만든 식별자다 반정규화에 대한 설명으로 옳은 것은?
A 수평 분할은 자주 쓰는 칼럼과 드물게 쓰는 칼럼을 나눠 칼럼 단위로 테이블을 자른다 B 반정규화를 먼저 적용한 뒤 성능이 부족하면 인덱스 조정·뷰 같은 대안을 검토한다 C 수직 분할로 나뉜 두 테이블은 같은 주식별자를 공유하는 1:1 관계가 된다 D 정규화 단계를 건너뛰고 처음부터 중복을 허용해 설계하는 기법이다