정보처리기사 필기 3과목 데이터베이스 구축은 암기 비중이 높고 실기와 연계가 많아 이중으로 중요한 과목입니다. 특히 정규화, 트랜잭션 ACID, 인덱스, 회복 기법은 거의 매 회차 나오니 확실히 잡아두세요.

1. 관계형 데이터베이스 기본 개념

핵심 용어 정리

용어설명다른 표현
릴레이션(Relation)데이터를 저장하는 2차원 표 구조테이블(Table)
튜플(Tuple)릴레이션의 각 행(가로 줄) — 하나의 레코드행(Row), 레코드
속성(Attribute)릴레이션의 각 열(세로 줄) — 데이터의 특성열(Column), 필드
도메인(Domain)속성이 가질 수 있는 값의 범위값의 집합
차수(Degree)속성(열)의 수Column 수
카디널리티(Cardinality)튜플(행)의 수Row 수

키(Key)의 종류

키 종류설명
슈퍼키(Super Key)튜플을 유일하게 식별할 수 있는 속성 집합. 유일성 O, 최소성 X
후보키(Candidate Key)유일성 + 최소성을 모두 만족하는 키. 기본키가 될 수 있는 후보
기본키(Primary Key)후보키 중 선택된 대표키. NULL 불가, 중복 불가
대체키(Alternate Key)후보키 중 기본키가 되지 못한 키
외래키(Foreign Key)다른 테이블의 기본키를 참조하는 키. 참조 무결성 보장
🎯 키 관련 빈출 포인트
✔ "유일성과 최소성을 모두 만족하는 키는?" → 후보키
✔ "NULL 값을 가질 수 없고 중복이 불가능한 키는?" → 기본키
✔ "슈퍼키는 유일성O, 최소성X" / "후보키는 유일성O, 최소성O"

무결성 제약 조건

무결성설명
개체 무결성기본키는 NULL이거나 중복될 수 없음
참조 무결성외래키 값은 참조하는 테이블의 기본키에 존재하거나 NULL이어야 함
도메인 무결성속성 값은 해당 도메인(정의된 범위) 안에 있어야 함
NULL 무결성NOT NULL로 지정된 속성은 NULL 불가

2. 정규화 (1NF ~ BCNF)

정규화는 데이터 중복을 제거하고 이상 현상(삽입·삭제·갱신 이상)을 방지하기 위해 테이블을 분리하는 과정입니다. 1NF부터 순서대로 높은 정규형을 만족해가며 진행합니다.

이상 현상 (Anomaly) — 정규화를 해야 하는 이유

이상 현상설명
삽입 이상데이터 삽입 시 불필요한 데이터도 함께 삽입해야 하는 경우
삭제 이상데이터 삭제 시 의도하지 않은 다른 데이터도 함께 삭제되는 경우
갱신 이상중복된 데이터 중 일부만 수정하여 데이터 불일치가 발생하는 경우

정규형 단계

제1정규형 (1NF) — 원자값
조건: 모든 속성 값이 원자값(더 이상 분해할 수 없는 값)이어야 한다.
위반 예: 취미 컬럼에 "독서, 영화, 게임"처럼 복수 값이 저장된 경우
해결: 하나의 행에 값 하나만 저장하도록 분리
제2정규형 (2NF) — 부분 함수 종속 제거
조건: 1NF를 만족하고, 기본키가 복합키일 때 기본키의 일부에만 종속되는 속성(부분 함수 종속)이 없어야 한다.
위반 예: (학번, 과목코드)가 기본키인데, 학생이름은 학번에만 종속
해결: 학생 테이블과 수강 테이블로 분리
제3정규형 (3NF) — 이행 함수 종속 제거
조건: 2NF를 만족하고, 기본키가 아닌 속성이 다른 비키 속성에 종속(이행 함수 종속)되지 않아야 한다.
위반 예: 학번 → 학과코드 → 학과명 (학번→학과명이 학과코드를 거쳐 종속)
해결: 학과 정보를 별도 테이블로 분리
BCNF (Boyce-Codd Normal Form) — 모든 결정자가 후보키
조건: 3NF를 만족하고, 모든 결정자(X → Y에서 X)가 후보키여야 한다.
위반 예: 후보키가 아닌 속성이 다른 속성을 결정하는 경우
특징: 3NF보다 엄격. 3NF를 만족해도 BCNF를 만족 못 할 수 있음
🎯 정규화 빈출 포인트
✔ "원자값이 아닌 속성 제거" → 1NF
✔ "부분 함수 종속 제거" → 2NF
✔ "이행 함수 종속 제거" → 3NF
✔ "모든 결정자가 후보키" → BCNF
정규화 순서: 1NF → 2NF → 3NF → BCNF → 4NF → 5NF
💡 함수 종속 개념 이해하기
"A → B" = "A를 알면 B를 결정할 수 있다"
학번 → 학생이름 (학번을 알면 이름을 알 수 있음)
부분 함수 종속: 복합키(A,B)에서 A만으로 C를 결정 → (A,B) → C가 아닌 A → C
이행 함수 종속: A→B이고 B→C이면 A→C (B를 거쳐 C가 종속)

3. 트랜잭션과 ACID

트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위입니다. "모두 실행되거나, 모두 실행되지 않는" 원자적 단위예요.

ACID 특성 — 트랜잭션의 4가지 특성

특성설명위반 예시
원자성 (Atomicity) 트랜잭션의 연산은 모두 실행되거나 전혀 실행되지 않아야 한다 이체 시 출금은 됐는데 입금이 안 된 상태
일관성 (Consistency) 트랜잭션 완료 후에도 데이터베이스가 일관된 상태를 유지해야 한다 이체 전후 두 계좌 잔액 합계가 달라지는 경우
격리성 (Isolation) 실행 중인 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않아야 한다 두 트랜잭션이 동시에 같은 데이터를 수정하는 경우
지속성 (Durability) COMMIT된 결과는 시스템 장애가 발생해도 영구적으로 유지되어야 한다 COMMIT 후 시스템 다운 시 데이터가 사라지는 경우
🎯 ACID 암기 포인트
Atomicity(원자성) — All or Nothing
Consistency(일관성) — 규칙 유지
Isolation(격리성) — 독립 실행
Durability(지속성) — COMMIT 후 영구 보존

4. 동시성 제어와 로킹

여러 트랜잭션이 동시에 같은 데이터에 접근할 때 생기는 문제를 제어하는 기법입니다.

동시성 제어 문제 유형

문제설명
갱신 분실 (Lost Update)두 트랜잭션이 같은 데이터를 읽고 수정할 때, 나중에 수정한 값이 먼저 수정한 값을 덮어쓰는 문제
오염된 읽기 (Dirty Read)COMMIT되지 않은 데이터를 다른 트랜잭션이 읽는 문제
반복 불가능한 읽기 (Non-repeatable Read)같은 트랜잭션에서 같은 데이터를 두 번 읽었을 때 값이 달라지는 문제
유령 읽기 (Phantom Read)트랜잭션 실행 중 없던 행이 새로 나타나는(다른 트랜잭션이 삽입) 문제

로킹(Locking)

락 종류설명다른 트랜잭션 접근
공유 락 (Shared Lock, S-Lock)읽기 전용 락. 여러 트랜잭션이 동시에 공유 락 획득 가능읽기 가능, 쓰기 불가
배타 락 (Exclusive Lock, X-Lock)쓰기 락. 하나의 트랜잭션만 획득 가능읽기·쓰기 모두 불가
💡 교착 상태(Deadlock) 발생 조건
두 트랜잭션이 서로 상대방이 가진 락을 기다리며 무한히 대기하는 상황
해결 방법: 타임아웃(일정 시간 후 강제 종료), 교착 상태 탐지 후 롤백

5. 회복 기법

시스템 장애 발생 시 데이터베이스를 일관된 상태로 복원하는 기법입니다. 로그(Log)를 사용하는 것이 핵심입니다.

회복 기법설명
로그 기반 회복
(Redo / Undo)
Redo (재실행): COMMIT된 트랜잭션의 변경을 다시 실행. 장애 전 COMMIT된 데이터 복원
Undo (취소): COMMIT되지 않은 트랜잭션의 변경을 취소. 미완료 트랜잭션 되돌리기
체크포인트(Checkpoint) 일정 시점에 디스크에 저장된 데이터와 로그를 동기화. 회복 시 체크포인트 이후 로그만 분석하면 됨
그림자 페이지 대체 변경 전 원본 페이지를 그림자로 보관. 장애 시 그림자 페이지로 복원
🎯 회복 기법 빈출 포인트
✔ "COMMIT된 트랜잭션을 재실행하는 회복 연산은?" → Redo
✔ "COMMIT되지 않은 트랜잭션을 취소하는 회복 연산은?" → Undo
✔ "회복 시 모든 로그를 분석하지 않아도 되게 하는 기법은?" → 체크포인트

6. 인덱스(Index)와 뷰(View)

인덱스

인덱스는 데이터 검색 속도를 높이기 위해 만드는 목차입니다. 책의 목차처럼 원하는 데이터의 위치를 빠르게 찾을 수 있게 합니다.

인덱스 종류설명
클러스터드 인덱스테이블의 데이터가 인덱스 순서대로 물리적으로 저장. 테이블당 1개만 가능. 범위 검색에 유리
비클러스터드 인덱스인덱스와 실제 데이터 위치가 별도 저장. 여러 개 가능. 포인터로 실제 데이터 접근
B-Tree 인덱스가장 일반적. 균형 이진 트리 구조. 범위 검색·정렬 지원
해시 인덱스해시 함수로 위치를 결정. 등치(=) 검색에 O(1) 성능. 범위 검색 불가

뷰(View)

뷰는 하나 이상의 테이블을 기반으로 만든 가상 테이블입니다. 실제 데이터는 기본 테이블에 저장되고, 뷰는 SELECT 쿼리의 결과를 보여주는 창구 역할을 합니다.

특징설명
독립성기본 테이블 구조 변경 시 응용 프로그램 영향 최소화
보안성민감한 컬럼을 숨기고 필요한 데이터만 노출
편의성복잡한 쿼리를 뷰로 단순화하여 재사용
물리적 독립성뷰 자체에 데이터를 저장하지 않음 → 저장 공간 절약
-- 뷰 생성
CREATE VIEW 컴퓨터공학_학생 AS
SELECT 학번, 이름, 성적
FROM   학생
WHERE  학과 = '컴퓨터공학';

-- 뷰 삭제
DROP VIEW 컴퓨터공학_학생;
📚 3과목 필기 고득점 전략

① 정규화 단계(1NF→2NF→3NF→BCNF)와 각 단계의 제거 대상을 반드시 암기하세요. "부분 함수 종속은 2NF에서 제거", "이행 함수 종속은 3NF에서 제거"가 핵심입니다.

② ACID 4가지 특성은 영문 약자와 한국어 이름, 그 의미까지 세트로 외우세요. 매 회차 출제 수준입니다.

③ Redo와 Undo의 차이를 명확히 하세요. "COMMIT됐으면 Redo(재실행), 안 됐으면 Undo(취소)"가 핵심 구분 기준입니다.

④ 키의 종류(슈퍼·후보·기본·대체·외래)와 각 조건(유일성·최소성·NULL 허용 여부)을 표로 정리해두세요.