DB 이론 — 키 · 무결성 · 정규화 · 관계대수 · 트랜잭션 E10

11회 전부에 나온 묶음이다. 용어의 정의를 정확한 낱말로 적고, 표를 보고 정규형과 연산 결과를 판정한다

왜 이 장을 하나
DB 이론은 정의를 묻는 문제와 판정을 묻는 문제로 나뉜다. 정의는 낱말을 정답표 그대로 적어야 하고, 판정(정규형 · 관계대수 · 무결성 위반)은 절차가 있다. 이 장은 용어 40개를 한 벌로 묶고 판정 절차 셋을 세운다.
다루는 것키 · 무결성 · 정규화 · 관계대수 · 트랜잭션 · 회복
문항기출 20 · 예상 4 · 훈련 5
끝나면표를 보고 정규형을 판정한다

01왜 이 장인가

왜 이걸 하나 — 11회 중 11회 전부에 나왔다. 빠진 적이 없는 묶음은 이것뿐이다.

11회분 220문항 중 이 장의 기출은 20문항이다. 회차마다 1~3문항, 2025년 2회에는 3문항이 나왔다. SQL 조회 13 · 정의 6 과 합치면 SQL·DB 묶음 39문항이 된다.

몇 문항무엇을 적나보기
용어 정의 · 매칭13튜플 · 카디널리티 · 외부 스키마 · 참조 무결성 · 후보키 같은 낱말2023-1회 12번 · 2024-3회 10번 · 2025-1회 8번
순서 나열2설계 4단계2023-2회 3번 · 2026-1회 4번
관계대수3기호 · π 결과 · ÷ 결과2023-3회 19번 · 2025-2회 20번 · 2025-3회 16번
정규형 판정2표를 보고 3NF 인지2024-1회 6번 · 2026-2회 20번

→ 20문항 중 13문항이 낱말 문제다. 같은 것을 다른 말로 묻는다 — 「행에 해당하는 것」은 튜플, 「튜플의 개수」는 카디널리티, 「속성의 개수」는 디그리(차수). 2023년 1회 12번과 2025년 3회 18번은 같은 문제다.

판정 문제는 3종뿐이고 전부 절차가 있다. 정규형은 검문 3개를 차례로 통과시키고, 관계대수는 연산 기호가 행을 고르는지 열을 고르는지를 보고, 무결성 위반은 기본키 · 외래키 · 값의 범위 셋을 따로 검사한다. 03절이 그 절차다.

문항 수는 이 노트의 문제 데이터에서 ch=E10 인 것을 센 값이다(2026-09-14). 2024-1회 6번 · 2025-2회 20번 · 2025-3회 16번의 표는 grandlife.co.kr 복원에서 옮겼다.

02한눈에

왜 이걸 하나 — 낱말 문제 13개는 이 절의 카드에서 나온다. 답안 표기 그대로 적었다.

릴레이션 용어튜플 = 행. 속성(attribute) = 열. 도메인 = 속성이 가질 수 있는 값의 범위. 디그리(차수) = 속성의 개수. 카디널리티 = 튜플의 개수. 릴레이션 스키마 = 구조, 릴레이션 인스턴스 = 실제 값들의 집합.
키 5종슈퍼키 = 유일성만. 후보키 = 유일성 + 최소성. 기본키 = 후보키 중 고른 하나(NULL 불가). 대체키 = 후보키 중 기본키가 아닌 것. 외래키 = 다른 릴레이션의 기본키를 참조.
무결성 3종개체 무결성 = 기본키는 NULL · 중복 불가. 참조 무결성 = 외래키는 부모의 기본키 값이거나 NULL. 도메인 무결성 = 속성 값은 정의된 범위 안. (키 무결성 · NULL 무결성도 있다.)
스키마 3계층외부 스키마 = 사용자 · 응용 프로그램 관점(뷰). 개념 스키마 = 조직 전체의 논리 구조(하나). 내부 스키마 = 물리적 저장 구조.
설계 순서요구사항 분석 → 개념적 설계(E-R) → 논리적 설계(테이블 · 정규화) → 물리적 설계(저장 구조 · 인덱스) → 구현.
관계대수 8연산σ 셀렉트(행) · π 프로젝트(열) · ⋈ 조인 · ÷ 디비전 — 순수 관계 연산. ∪ 합집합 · ∩ 교집합 · − 차집합 · × 카티션 곱 — 일반 집합 연산. 결과는 집합이라 중복이 없다.
조인 종류세타 조인 = 비교 연산자(= > <) 아무거나. 동등 조인 = = 만. 자연 조인 = 동등 조인에서 중복 속성 제거. 외부 조인 = 짝 없는 튜플도 NULL 로 남김. 세미 조인 · 내추럴 조인이 짝으로 나온다.
정규화 검문1NF 원자값 → 2NF 부분 함수 종속 제거 → 3NF 이행 함수 종속 제거 → BCNF 모든 결정자가 후보키 → 4NF 다치 종속 제거 → 5NF 조인 종속 제거. 「도 · 부 · 이 · 결 · 다 · 조」.
이상 3종 · 반정규화삽입 이상 · 삭제 이상 · 갱신 이상 — 중복이 만드는 병. 반정규화 = 성능을 위해 일부러 중복 · 통합 · 분리(비정규화 · 역정규화).
트랜잭션 ACID원자성(전부 아니면 전무) · 일관성(규칙 유지) · 고립성(서로 간섭 없음) · 지속성(확정된 것은 남는다). 상태는 활동 → 부분 완료 → 완료 / 실패 → 철회.
회복 · 병행REDO = 커밋된 것 다시 실행, UNDO = 커밋 못 한 것 되돌림. 즉시 갱신은 REDO · UNDO 둘 다, 지연 갱신은 REDO 만. 검사점 = 로그를 어디부터 볼지. 로킹 단위가 크면 로크 수 ↓ 병행성 ↓ 오버헤드 ↓. 2단계 로킹(2PL) = 확장 단계 뒤 축소 단계.
인덱스 · 뷰 · 시스템 카탈로그인덱스 = 검색을 빠르게 하는 별도 구조(색인). 뷰 = 저장되지 않는 가상 테이블. 시스템 카탈로그 = 스키마 정보를 담은 시스템 테이블(데이터 사전).

03밑바닥

왜 이걸 하나 — 낱말은 02절로 되지만 판정 3종은 절차가 있어야 표가 바뀌어도 푼다.

3-1. 정규형은 검문소를 차례로 통과시킨다

정규화는 한 표에 섞인 사실을 떼어 내는 일이고, 정규형 판정은 그 표가 어느 검문소까지 통과했나를 보는 일이다. 검문소는 순서가 있어 앞을 통과하지 못하면 뒤는 볼 필요가 없다.

검문무엇을 보나통과 못 하는 표
1NF모든 값이 원자값인가(한 칸에 값 하나)한 칸에 「영어, 수학」처럼 둘
2NF기본키가 복합키일 때, 키의 일부에만 매달린 속성이 없나(부분 함수 종속)(학번, 과목코드) 가 키인데 학생이름이 학번에만 종속
3NF키 아닌 속성끼리 A → B → C 로 이어진 것이 없나(이행 함수 종속)학번 → 학과 → 학과장
BCNF모든 결정자가 후보키인가강사번호 → 강좌명 인데 강사번호가 후보키가 아님

2026년 2회 20번(2024년 1회 6번과 같은 표)을 이 순서로 통과시켜 보자. 값은 전부 원자값이라 1NF 통과, 기본키 (고객아이디, 강좌명) 의 일부에만 매달린 속성이 없어 2NF 통과, 키 아닌 속성이 강사번호 하나뿐이라 이행 종속이 없어 3NF 통과. 그런데 표에서 강사번호 → 강좌명 이 성립하고(P001 은 늘 영어회화) 강사번호는 후보키가 아니므로 BCNF 에서 막힌다. 그래서 답은 제3정규형이다.

→ 판정의 핵심은 표에서 함수 종속을 읽어 내는 것이다. X 의 값이 같은 행끼리 Y 도 늘 같으면 X → Y 다. 강사번호 P001 인 두 행의 강좌명이 둘 다 영어회화라 강사번호 → 강좌명, 반대로 영어회화인 세 행의 강사번호가 P001 · P001 · P003 이라 강좌명 → 강사번호 는 아니다.

훈련 1번은 2NF 에서 막히는 표다. (학번, 과목코드) 가 키인데 학생이름은 학번에만, 과목명은 과목코드에만 매달린다. 이것이 부분 함수 종속이고, 답은 「1NF, 부분 함수 종속을 제거」다.

3-2. 관계대수는 행을 고르나 열을 고르나

여덟 연산 중 시험에 나오는 것은 넷이다. σ(셀렉트)는 조건에 맞는 을, π(프로젝트)는 지정한 을 고른다. ⋈(조인)은 두 릴레이션을 공통 속성으로 잇고, ÷(디비전)은 「S 의 값을 전부 가진 것」만 남긴다.

결과는 언제나 집합이다. 그래서 π 직급 (employee) 에서 대리가 두 번 있어도 한 번만 남고(2025년 2회 20번), SQL 로 옮기면 SELECT DISTINCT 가 된다. 이 「중복 제거」를 빠뜨리면 행이 하나 많아져 틀린다.

÷ 은 말로 풀면 「모든 …을 가진」이다. R(A, B) ÷ S(B) 는 S 의 B 값 전부와 짝지어진 A 만 남기고, 결과 열은 R 의 열에서 S 의 열을 뺀 A 다. 2025년 3회 16번에서 a1 은 b1 · b2 를 다 갖고 a2 는 b1 만 가져 a1 만 남는다. SQL 로는 NOT EXISTS 두 겹으로 쓴다.

기호 문제(2023년 3회 19번)는 넷을 그림으로 외운다. σ 는 시그마 s 로 select, π 는 파이 p 로 project, ⋈ 는 나비넥타이 모양의 join, ÷ 은 나눗셈 division. 집합 연산 ∪ ∩ − × 는 수학 기호 그대로다.

3-3. 무결성 위반은 셋을 따로 검사한다

무결성은 「표가 지켜야 할 약속」이고, 위반 판정은 약속 셋을 각각 대조한다. 기본키 열에 NULL 이나 중복이 있으면 개체 무결성 위반, 외래키 값이 부모 표에 없으면 참조 무결성 위반, 값이 정의된 범위 밖이면 도메인 무결성 위반이다. 한 표에 셋이 동시에 있을 수 있어(훈련 3번) 하나 찾았다고 멈추지 않는다.

정의 문제는 낱말의 짝을 잡는다. 「NULL · 중복 불가」가 보이면 개체, 「참조 · 일치 · 부모」가 보이면 참조, 「범위 · 형식 · 도메인」이 보이면 도메인이다. 2024년 3회 13번과 2025년 1회 2번이 이 낱말 그대로 나왔다.

3-4. 회복은 커밋 기록 하나로 갈린다

장애가 나면 로그를 보고 트랜잭션마다 둘 중 하나를 한다. 커밋 기록이 있으면 디스크에 못 썼을 수 있으니 로그대로 다시 실행(REDO), 커밋 기록이 없으면 반쯤 쓴 것을 되돌린다(UNDO). 즉시 갱신 기법은 커밋 전에도 디스크에 쓰므로 둘 다 필요하고, 지연 갱신은 커밋 뒤에만 쓰므로 REDO 만 필요하다.

병행 제어의 로킹 단위는 크기와 비용의 저울이다. 단위가 크면(테이블 단위) 로크 수가 적고 관리가 쉽지만 여러 트랜잭션이 동시에 못 들어와 병행성이 떨어진다. 단위가 작으면(행 단위) 반대다. 예상 2회 13번이 이 저울을 빈칸으로 물었다.

통과 기준은 넷이다. 첫째, 표를 주면 함수 종속을 읽어 정규형을 검문 순서대로 판정한다. 둘째, σ · π · ⋈ · ÷ 의 결과를 표로 그리고 중복을 지운다. 셋째, 무결성 3종을 표에서 각각 찾는다. 넷째, 02절 카드의 낱말 40개를 정답표 표기 그대로 적는다.
3NF 를 만족하면 BCNF 도 만족한다.BCNF 가 더 엄격하다. 3NF 는 키 아닌 속성 사이의 이행 종속만 막지만, BCNF 는 「모든 결정자가 후보키」를 요구한다. 강사번호 → 강좌명처럼 키 아닌 속성이 키의 일부를 결정하면 3NF 이면서 BCNF 가 아니다. 2026년 2회 20번이 정확히 이 경계를 물었다.
카디널리티는 열의 개수다.카디널리티는 튜플(행)의 개수, 디그리(차수)는 속성(열)의 개수다. 2024년 2회 4번은 「튜플 5개, 속성 4개」를 주고 카디널리티 5 · 디그리 4 를 물었다. 둘을 바꿔 적으면 5점이 통째로 나간다.

04기출

왜 이걸 하나 — 낱말 문제는 정답표 표기로 적는 연습이고, 판정 문제는 03절 절차를 대 보는 연습이다.

낱말 문제는 답을 한글 정식 명칭으로 적는다(영문을 요구하면 영문). 「튜플」을 「행」이라 적거나 「카디널리티」를 「튜플 수」라 적으면 틀렸다를 누른다.

2023-1회 · 12번DB

관계형 DB 용어: ① 릴레이션의 행(Row)에 해당하는 것 ② 실제 저장된 값(튜플)들의 집합 ③ 튜플의 개수

정답① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티
엑셀로 비유하면 튜플=한 줄(행), 릴레이션 인스턴스=데이터가 채워진 시트, 카디널리티=행 개수, 디그리=열 개수. "카디널리티=행 수, 디그리=열 수"는 2024 2회에도 재출제!
2023-1회 · 18번DB

스키마 3계층: ① 사용자 관점의 뷰 ② 조직 전체의 논리적 구조 ③ 물리적 저장 구조

정답① 외부 스키마 ② 개념 스키마 ③ 내부 스키마
아파트로 비유: 외부=각 세대에서 보는 우리 집 구조, 개념=전체 설계도, 내부=배관·전기 배선도. "외개내" 순서로 암기.
2023-2회 · 3번DB

데이터베이스 설계 4단계를 순서대로 나열하시오: (개념적 설계 / 물리적 설계 / 논리적 설계 / 요구사항 분석)

정답요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 (→ 구현)
집 짓기 순서: 무엇이 필요한지 듣기(요구) → 스케치(개념, ERD) → 도면(논리, 테이블) → 시공 상세(물리, 저장구조). 2026년 1회에 그대로 재출제!
2023-3회 · 19번DB

관계대수 연산 기호 매칭: ① Join ② Project ③ Select ④ Division

정답① ⋈ ② π ③ σ ④ ÷
σ(시그마)=Select=행 고르기, π(파이)=Project=열 뽑기 — "시그마는 셀렉트, 파이는 프로젝트" 발음 첫 글자로 연결. Join은 나비넥타이(⋈) 모양.
2023-3회 · 20번DB

외래키의 값은 참조하는 릴레이션의 기본키 값과 일치하거나 NULL이어야 한다는 무결성 제약조건은?

정답참조 무결성
"존재하지 않는 학과에 학생을 배정할 수 없다". 기본키의 NULL·중복 금지는 개체 무결성, 속성 값 범위 제한은 도메인 무결성 — 3형제 세트 암기.
2024-1회 · 6번DB

다음 릴레이션이 만족하는 제1~제3정규형 중 가장 높은 정규형을 쓰시오. 기본키는 (고객아이디, 강좌명)이며, 강사번호는 기본키 전체에만 함수 종속된다고 가정한다.

강좌신청

고객아이디강좌명강사번호
apple영어회화P001
banana기초토익P002
carrot영어회화P001
carrot기초토익P004
orange영어회화P003
orange기초토익P004
정답제3정규형
검문 순서는 1NF 원자값 → 2NF 부분 함수 종속 없음 → 3NF 이행 함수 종속 없음. 값은 전부 원자값이고, 문제가 「강사번호는 기본키 전체에만 종속」이라 했으니 부분 종속이 없어 2NF, 일반 속성이 강사번호 하나뿐이라 이행 종속도 없어 3NF. 2026년 2회 20번이 같은 표로 다시 나왔고 그때는 보기에 BCNF 가 있었다 — 강사번호 → 강좌명 때문에 BCNF 는 아니므로 답은 역시 제3정규형. 복원 출처는 grandlife.co.kr 회차별 복원 페이지(2026-09-14 대조). 공식 원문이 아니라 문장·값이 실제와 다를 수 있고, 문항 번호도 복원본마다 다르다.
2024-1회 · 8번DB

조인 유형 매칭: ① 비교 연산자(=, >, < 등)를 사용하는 일반 조인 ② =만 사용하는 조인 ③ 동등 조인에서 중복 속성을 제거한 조인

정답① 세타 조인 ② 동등 조인 ③ 자연 조인
포함 관계로 기억: 세타(모든 비교) ⊃ 동등(=만) ⊃ 자연(=이고 중복 열 제거). 자연 조인이 가장 "깔끔하게 정리된" 형태.
2024-2회 · 2번DB

정규화된 데이터 모델을 성능 향상을 위해 의도적으로 통합·중복·분리하는 데이터 모델링 기법은?

정답반정규화 (비정규화, 역정규화)
정규화가 "옷장 완벽 정리"라면, 반정규화는 "자주 입는 옷은 일부러 현관에도 걸어두기" — 중복을 감수하고 속도를 얻는 트레이드오프.
2024-2회 · 4번DB

튜플 5개, 속성 4개인 릴레이션의 카디널리티와 디그리는?

정답카디널리티 5, 디그리 4
카디널리티 = 행(튜플) 수, 디그리(차수) = 열(속성) 수. "카드는 세로로 쌓고(행), 학위(degree)는 옆으로 나열(열)"로 연상.
2024-3회 · 10번DB

키 매칭: ① 다른 릴레이션의 기본키를 참조 ② 유일성+최소성을 만족 ③ 후보키 중 기본키를 제외한 나머지 ④ 유일성만 만족하는 속성 집합

정답① 외래키 ② 후보키 ③ 대체키 ④ 슈퍼키
"유일성만 = 슈퍼(불필요한 것 포함), 유일성+최소성 = 후보, 후보 중 대표 = 기본, 나머지 = 대체, 남의 기본키 = 외래". 개념 3-1 표 그대로.
2024-3회 · 13번DB

"기본키는 NULL 값을 가질 수 없고 중복될 수 없다"는 무결성 제약조건은?

정답개체 무결성
"학번 없는 학생, 학번이 같은 두 학생은 있을 수 없다". 외래키 규칙은 참조 무결성 — 짝으로 암기 (참조 무결성은 2023년 3회 기출).
2025-1회 · 2번DB

무결성 3종 빈칸: ① 속성 값은 정의된 범위의 값이어야 한다 ② 기본키는 NULL·중복 불가 ③ 외래키는 참조하는 기본키와 일치하거나 NULL

정답① 도메인 무결성 ② 개체 무결성 ③ 참조 무결성
"나이 칸에 -5 금지(도메인) / 학번 없는 학생 금지(개체) / 없는 학과 배정 금지(참조)". 무결성 3형제 완전 세트 출제.
2025-1회 · 8번DB

관계형 DB 용어 매칭: ① 속성의 개수 ② 튜플의 개수 ③ 다른 릴레이션의 기본키를 참조하는 키 ④ 속성이 가질 수 있는 값들의 범위 (영문으로)

정답① degree ② cardinality ③ foreign key ④ domain
2023년 1회·2024년 2회에 이어 또 출제된 개념 — 이번엔 영문 표기 요구. 한글·영문 양쪽으로 답할 수 있게 준비하세요.
2025-2회 · 1번DB

테이블의 레코드를 빠르게 검색·접근하기 위해 별도로 구성하는 데이터 구조(색인)는?

정답인덱스 (Index)
"책 뒤의 찾아보기" — 전체를 뒤지지 않고 원하는 페이지로 직행. 검색은 빨라지지만 삽입·수정 시 유지 비용이 드는 트레이드오프까지 알아두세요.
2025-2회 · 2번DB

데이터베이스에서 개체(Entity)의 특성이나 상태를 나타내는 구성 요소는? (영문)

정답attribute (속성)
개체=학생, 속성=이름·학번·학년. ERD 3요소: 개체(사각형)-속성(타원)-관계(마름모)와 세트로 암기.
2025-2회 · 20번DB

다음 employee 릴레이션에 관계대수의 프로젝트 연산 π를 적용해 직급 열을 추출한 결과 릴레이션을 테이블 형태로 쓰시오.

employee

사번이름직급
101김하늘부장
102이바다대리
103박노을과장
104최새벽차장
105정구름대리
π 직급 (employee)
정답직급
부장
대리
과장
차장
π(프로젝트)는 열을 고르는 연산이다. 직급 열만 남고, 관계대수의 결과는 집합이라 중복 튜플이 사라져 대리가 한 번만 남는다. SQL 의 SELECT 직급 은 중복을 남기지만 SELECT DISTINCT 직급 이 이 연산과 같다. 열 이름 직급을 머리에 적고 4행. 복원 출처는 grandlife.co.kr 회차별 복원 페이지(2026-09-14 대조). 공식 원문이 아니라 문장·값이 실제와 다를 수 있고, 문항 번호도 복원본마다 다르다.
2025-3회 · 16번DB

다음 관계대수 연산의 결과 릴레이션을 테이블 형태로 쓰시오. 관계 R과 S가 다음과 같을 때 R ÷ S의 결과를 구하시오.

R

AB
a1b1
a1b2
a2b1

S

B
b1
b2
R ÷ S
정답A
a1
나눗셈 ÷ 은 「S 의 값을 전부 가진 A」만 남긴다. a1 은 b1 · b2 를 둘 다 갖고, a2 는 b1 만 가지므로 a1 만 남는다. 결과 릴레이션의 열은 R 에서 S 의 열을 뺀 A 하나다. SQL 로는 NOT EXISTS (S EXCEPT R 의 그 A 가 가진 B) 로 쓰고, sqlite 로 돌려 a1 을 확인했다. 복원 출처는 grandlife.co.kr 회차별 복원 페이지(2026-09-14 대조). 공식 원문이 아니라 문장·값이 실제와 다를 수 있고, 문항 번호도 복원본마다 다르다.
2025-3회 · 18번DB

관계형 DB 용어: ① 행에 해당 ② 실제 값들의 집합 ③ 튜플의 개수

정답① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티
2023년 1회와 완전 동일 문제 재출제! 기출을 풀었다면 그냥 주는 5점이었습니다.
2026-1회 · 4번DB

데이터베이스 설계 순서를 나열하시오 (요구사항 분석 / 구현 / 논리적 설계 / 개념적 설계 / 물리적 설계)

정답요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
2023년 2회와 완전 동일 문제 재출제! "듣기→스케치(ERD)→도면(테이블)→시공(저장구조)→입주".
2026-2회 · 20번DB

관계형 데이터 모델에서는 데이터 중복으로 인한 이상 현상을 방지하고 데이터의 일관성과 정확성을 유지하기 위해 정규화를 수행한다. 속성명 아래에 밑줄이 그어진 고객아이디와 강좌명은 함께 기본키를 구성한다. 다음 [강좌신청] 릴레이션이 만족하는 가장 높은 정규형을 [보기]에서 고르시오.

[강좌신청]

고객아이디강좌명강사번호
apple영어회화P001
banana기초토익P002
carrot영어회화P001
carrot기초토익P004
orange영어회화P003
orange기초토익P004

[보기]

제1정규형 · 제2정규형 · 제3정규형 · 제4정규형 · 제5정규형 · BCNF

정답제3정규형
기본키 (고객아이디, 강좌명) → 강사번호 다. 표를 보면 강사번호 → 강좌명 이 성립한다(P001 은 늘 영어회화, P004 는 늘 기초토익). 반대로 강좌명 → 강사번호 는 안 된다(영어회화가 P001 · P003). 부분 함수 종속이 없어 2NF, 이행 종속이 없어 3NF 는 만족한다. 그런데 강사번호 → 강좌명 의 결정자 강사번호가 후보키가 아니므로 BCNF 는 위반이다. 그래서 가장 높은 정규형은 제3정규형. 2024-1회 6번과 같은 표다. 복원 출처는 grandlife.co.kr 2026-2회 복원 풀이(2026-09-14 대조). 공식 원문이 아니라 문장·변수명·수치가 실제와 다를 수 있다.
예상 1회 · 12번DB빈출 원리: 정규화 판별

릴레이션 R(학번, 과목코드, 성적, 학생이름)에서 기본키는 (학번, 과목코드)이고 함수 종속이 다음과 같다: (학번, 과목코드) → 성적, 학번 → 학생이름. 이 릴레이션에 존재하는 함수 종속의 문제점과, 이를 제거하면 도달하는 정규형은?

정답부분 함수 종속 (학생이름이 복합키의 일부인 학번에만 종속) / 제거하면 제2정규형(2NF)
복합키 (학번+과목코드) 중 학번만으로 결정되는 학생이름 = 부분 함수 종속. 이를 분리하는 것이 제2정규화. "도부이결" — 부분 종속 제거=2NF, 이행 종속 제거=3NF. 2024 1회 Q6 유형.
예상 1회 · 13번DB빈출 원리: 트랜잭션 ACID

트랜잭션의 특성: ① 연산이 전부 반영되거나 전혀 반영되지 않아야 한다 ② 성공적으로 완료된 트랜잭션의 결과는 시스템 장애가 발생해도 영구적으로 반영되어야 한다. 각각의 명칭은?

정답① 원자성 (Atomicity) ② 영속성/지속성 (Durability)
계좌이체 비유: "절반만 이체는 없다"=원자성, "이체 완료 후 정전이 나도 기록은 남는다"=영속성. ACID 4형제는 2023 1회·2025 3회 기출 — 나머지 둘(일관성, 격리성)도 함께.
예상 2회 · 12번DB빈출 원리: 이상 현상

정규화하지 않은 테이블에서 데이터 중복 때문에 발생하는 이상(Anomaly) 현상 3가지를 쓰시오.

정답삽입 이상, 삭제 이상, 갱신 이상
"수강 테이블에 학생+과목이 섞여 있으면": 과목 없는 신입생을 못 넣고(삽입), 마지막 수강생을 지우면 과목 정보까지 사라지고(삭제), 학생 주소를 바꾸려면 여러 행을 고쳐야 함(갱신). 정규화 문제(2024 1회)의 짝꿍 개념 — 함께 나올 확률이 높습니다.
예상 2회 · 13번DB빈출 원리: 병행 제어 로킹

로킹(Locking) 단위가 커질수록: 로크의 수는 ( ① ), 병행성(동시성) 수준은 ( ② ), 관리 오버헤드는 ( ③ ). 괄호에 증가/감소(높아짐/낮아짐)를 쓰시오.

정답① 감소 ② 낮아짐 ③ 감소
"도서관 전체를 잠그기(큰 단위) vs 책 한 권씩 잠그기(작은 단위)" — 통째로 잠그면 자물쇠는 적게 들지만(로크 수·오버헤드 감소) 다른 사람이 못 들어옵니다(병행성 저하). 반비례 관계 하나만 기억하면 전부 유도 가능. 2023 2회 로킹 기출의 심화 예상.

05틀리는 자리

왜 이걸 하나 — 이 장은 아는데 낱말이 어긋나서 깎이는 자리가 가장 많다.

자리새는 꼴적는 법기출
비슷한 낱말튜플 대신 행, 속성 대신 열, 카디널리티 대신 튜플 수문제의 낱말 체계를 따른다. 「릴레이션」이라 부르면 튜플 · 속성 · 카디널리티로2023-1회 12번 · 2024-2회 4번
영문 요구영문을 요구하는데 한글로「영문으로」가 있으면 degree · cardinality · attribute 처럼 소문자 원어2025-1회 8번 · 2025-2회 2번
순서설계 단계에서 개념과 논리를 바꾼다요구 → 개념 → 논리 → 물리 → 구현. 보기에 구현이 있으면 끝에 붙인다2023-2회 3번 · 2026-1회 4번
정규형 이름「3NF」만 적거나 「제3정규화」라 적는다제3정규형(3NF). 정규화는 과정, 정규형은 상태2024-1회 6번 · 2026-2회 20번
관계대수 결과중복을 남기거나 열 이름을 뺀다결과는 집합 — 중복 제거, 열 이름 줄부터2025-2회 20번 · 2025-3회 16번
키 이름대체키와 후보키를 바꾼다후보키 = 유일성 + 최소성, 대체키 = 후보키 − 기본키, 슈퍼키 = 유일성만2024-3회 10번
무결성 이름개체와 참조를 바꾼다기본키 이야기면 개체, 외래키 이야기면 참조, 값의 범위면 도메인2024-3회 13번 · 2025-1회 2번

매칭 문제는 소문항마다 부분 점수가 있다. 넷 중 셋만 알아도 셋을 적고, 모르는 하나는 남은 보기 중 가장 그럴듯한 것을 적는다. 빈칸은 0점이고 틀린 답도 0점이라 적는 쪽이 손해가 없다.

06훈련

왜 이걸 하나 — 판정 3종을 기출에 없던 표로 한 번 더 돌린다.

5문항은 2NF 에서 막히는 표, 자연 조인과 σ 의 행 수, 무결성 3종이 한꺼번에 깨진 표, ACID 의 나머지 둘, REDO · UNDO 다. 조인과 σ 는 sqlite 로 행 수를 확인했다.

훈련 DB · 1번DB

릴레이션 수강(학번, 과목코드, 성적, 학생이름, 과목명)의 기본키는 (학번, 과목코드)이고 함수 종속은 다음과 같다. 이 릴레이션이 만족하는 가장 높은 정규형과, 다음 정규형으로 가기 위해 제거해야 할 함수 종속의 종류를 쓰시오.

(학번, 과목코드) → 성적
학번 → 학생이름
과목코드 → 과목명

정답제1정규형, 부분 함수 종속
학생이름은 기본키의 일부인 학번에만, 과목명은 과목코드에만 종속된다 — 기본키 일부에 매달린 부분 함수 종속이다. 부분 종속이 있으면 2NF 가 아니므로 가장 높은 정규형은 1NF. 학생(학번, 학생이름) · 과목(과목코드, 과목명) 을 떼어 내면 2NF 가 된다. 2NF 뒤에 남는 것이 이행 종속(A→B, B→C)이고 그것을 떼면 3NF 다.
훈련 DB · 2번DB

다음 두 릴레이션에 대해 R ⋈ S(자연 조인)의 결과 튜플 수와, σ 학년=3 (R)의 결과 튜플 수를 각각 쓰시오.

R

학번이름학년학과코드
13C
22E
33C
41M

S

학과코드학과명
C컴퓨터
E전자
정답3, 2
자연 조인은 같은 이름의 열(학과코드)이 같은 튜플끼리 잇고 그 열을 한 번만 남긴다. C 는 R 에 2행, E 는 1행, M 은 S 에 없어 빠진다 → 3. σ(셀렉트)는 조건에 맞는 을 고른다 — 학년 3 인 1번 · 3번 → 2. π 가 열을 고르는 것과 짝으로 외운다. sqlite 의 NATURAL JOIN 으로 3행을 확인했다.
훈련 DB · 3번DB

다음 학생 테이블에서 위반된 무결성 제약조건을 모두 쓰시오. 학번은 기본키, 학과코드는 학과 테이블의 학과코드(C, E, M 만 있음)를 참조하는 외래키이며, 학년은 1~4 사이여야 한다.

학생

학번이름학년학과코드
13C
25E
22C
41Z
정답개체 무결성, 참조 무결성, 도메인 무결성
학번 2 가 두 번 → 기본키 중복이라 개체 무결성 위반. 학과코드 Z 는 학과 테이블에 없어 참조 무결성 위반. 학년 5 는 허용 범위 밖이라 도메인 무결성 위반. 세 무결성의 검사 대상이 각각 기본키 · 외래키 · 값의 범위라는 것을 표 하나에서 갈라 본다.
훈련 DB · 4번DB

트랜잭션의 네 특성 중 다음 설명에 해당하는 것을 각각 쓰시오.

① 여러 트랜잭션이 동시에 실행돼도 각각 혼자 실행되는 것과 같은 결과를 내야 한다.
② 트랜잭션이 끝나면 데이터베이스는 모순 없는 상태를 유지해야 한다.

정답① 고립성(Isolation) ② 일관성(Consistency)
ACID 는 원자성(전부 아니면 전무) · 일관성(규칙을 지킨 상태) · 고립성(서로 간섭 없음) · 지속성(확정된 결과는 남는다). 「동시에」「간섭」이 보이면 고립성, 「모순 없는 상태」「제약 유지」가 보이면 일관성이다. 예상 모의 13번의 원자성 · 지속성과 짝을 이루면 넷이 다 나온다.
훈련 DB · 5번DB

장애 발생 후 회복할 때, 로그를 보고 다음 두 트랜잭션에 각각 적용할 회복 연산을 쓰시오.

① 장애 전에 COMMIT 기록이 로그에 남아 있는 트랜잭션
② 시작 기록은 있으나 COMMIT 기록이 없는 트랜잭션

정답① REDO ② UNDO
COMMIT 까지 갔는데 디스크에 다 못 썼을 수 있는 것은 로그대로 다시 실행(REDO)하고, COMMIT 못 한 것은 반쯤 쓴 것을 되돌린다(UNDO). 즉시 갱신 기법은 둘 다 필요하고, 지연 갱신 기법은 커밋 전에는 디스크에 안 쓰므로 REDO 만 필요하다. 검사점(checkpoint)은 로그를 어디까지 거슬러 볼지 정하는 표시다.

07백지 재현

왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 낱말 문제 13개가 끝난다.