정보처리기사2026년 4월 16일· 10 min read

정처기 실기 데이터베이스 이론 정리 (ACID·정규화·인덱스)

정처기 실기 데이터베이스 이론 파트에서 출제되는 트랜잭션 ACID, 격리 수준, 락, 교착 상태, 인덱스, 정규화, 이상 현상을 시험 기준으로 정리합니다.

안녕하세요. 문어입니다 🐙


DB 이론은 SQL과 다르게 "개념 단답"이 중심

실기에서 SQL은 쿼리 결과를 묻지만, DB 이론은 개념 자체를 단답으로 묻습니다. ACID, 정규화 단계, 이상 현상, 인덱스 동작 — 모두 용어와 한 줄 정의가 답입니다.

암기 부담이 있지만, 시험에 나오는 개념이 거의 정해져 있어서 범위만 잡으면 효율적으로 대비할 수 있어요.


트랜잭션과 ACID

속성의미
Atomicity (원자성)전부 실행되거나, 전부 취소되어야 함
Consistency (일관성)실행 전후에 DB 무결성 제약이 유지
Isolation (격리성)동시에 실행되는 트랜잭션끼리 서로 간섭하지 않음
Durability (영속성)완료된 트랜잭션의 결과는 영구히 반영

단답으로 "ACID 중 C는 무엇을 의미하는가?" 형태로 나옵니다. 각 항목을 한 줄로 쓸 수 있어야 해요.

트랜잭션 상태

활동 → 부분 완료 → 완료
         ↓
       실패 → 철회
  • 활동(Active) : 실행 중
  • 부분 완료(Partially Committed) : 마지막 연산 종료, 아직 커밋 전
  • 완료(Committed) : 모든 연산 반영
  • 실패(Failed) : 정상 수행 불가
  • 철회(Aborted) : 모든 변경을 롤백

트랜잭션 격리 수준 (Isolation Level)

동시성 허용 범위를 조절하는 옵션입니다. 낮을수록 동시성은 좋지만 이상 현상이 발생합니다.

격리 수준Dirty ReadNon-repeatable ReadPhantom Read
READ UNCOMMITTED발생발생발생
READ COMMITTED방지발생발생
REPEATABLE READ방지방지발생
SERIALIZABLE방지방지방지

세 가지 이상 현상 요약:

  • Dirty Read : 다른 트랜잭션이 커밋하지 않은 값을 읽음
  • Non-repeatable Read : 같은 조회를 두 번 했는데 중간에 값이 바뀜
  • Phantom Read : 같은 범위 조회인데 중간에 새 행이 추가되어 보임
SERIALIZABLE이 가장 안전하지만 성능 비용이 큽니다. 실무에서는 대부분 READ COMMITTED(Oracle, SQL Server 기본값) 또는 REPEATABLE READ(MySQL InnoDB 기본값)를 씁니다.

락(Lock)과 교착 상태

락 종류

허용 연산
공유 락(Shared Lock)읽기만 가능, 다른 공유 락과 공존
배타 락(Exclusive Lock)읽기·쓰기 독점, 다른 락과 공존 불가

교착 상태(Deadlock) 4가지 조건

다음 네 조건이 동시에 성립해야 교착이 발생합니다.

  1. 상호 배제 : 자원은 한 번에 하나의 프로세스만 사용
  2. 점유와 대기 : 자원을 쥔 채로 다른 자원 요청
  3. 비선점 : 다른 프로세스의 자원을 강제로 뺏을 수 없음
  4. 원형 대기 : 대기 구조가 순환 형태

한 가지 조건이라도 깨지면 교착은 발생하지 않습니다.

교착 처리 전략

전략설명
예방4가지 조건 중 하나를 원천 차단
회피안전 상태 유지 (은행원 알고리즘)
탐지주기적으로 검사 후 회복
무시실무상 드물면 방치 (타조 알고리즘)

인덱스 — B-Tree가 기본

인덱스는 검색 속도를 높이기 위한 보조 자료구조입니다.

클러스터드 vs 논클러스터드

구분클러스터드 인덱스논클러스터드 인덱스
데이터 저장 순서인덱스 순서대로 정렬물리 순서와 무관
테이블당 개수1개여러 개
추가 공간작음상대적으로 큼
조회 속도대량 범위 조회에 유리단건 조회에 유리

인덱스의 장단점

  • 장점 : SELECT 속도 향상, 정렬/그룹화 시 가속
  • 단점 : INSERT/UPDATE/DELETE 시 인덱스도 갱신 → 쓰기 비용 증가, 저장 공간 소모
인덱스를 많이 걸수록 조회가 빨라질 것 같지만, 쓰기 빈도가 높은 테이블에는 오히려 느려집니다. 시험에서 "인덱스의 단점은?"으로 단답이 나옵니다.

정규화 단계

릴레이션을 더 작은 릴레이션으로 분해해 중복과 이상 현상을 줄이는 과정.

단계만족 조건
1NF모든 속성이 원자값(더 이상 쪼갤 수 없는 값)
2NF1NF + 부분 함수 종속 제거
3NF2NF + 이행 함수 종속 제거
BCNF3NF + 모든 결정자가 후보키
4NFBCNF + 다치 종속 제거
5NF4NF + 조인 종속 제거

시험 범위는 보통 BCNF까지입니다.

함수 종속 용어

  • 완전 함수 종속 : 속성이 기본키 전체에 종속
  • 부분 함수 종속 : 속성이 기본키의 일부에만 종속
  • 이행 함수 종속 : A → B → C 관계에서 A → C가 간접적으로 성립

2NF는 부분 종속, 3NF는 이행 종속을 제거합니다. 이 대응이 자주 단답으로 나와요.


이상 현상(Anomaly)

비정규화된 릴레이션에서 발생하는 세 가지 문제.

이상의미
삽입 이상특정 데이터 삽입 시 불필요한 데이터도 함께 넣어야 함
삭제 이상삭제하고 싶은 데이터 외의 데이터가 연쇄로 삭제됨
갱신 이상중복된 데이터 일부만 수정해 불일치 발생

정규화가 이 세 이상을 제거하는 과정이라는 점에서 묶어 기억하면 됩니다.


무결성 제약

유형설명
개체 무결성기본키는 NULL이거나 중복될 수 없음
참조 무결성외래키는 참조하는 테이블의 기본키와 일치하거나 NULL
도메인 무결성속성 값이 정의된 도메인(자료형/제약) 안에 있어야 함
사용자 정의 무결성특정 업무 규칙 (CHECK 제약 등)

키의 종류

설명
후보키(Candidate Key)유일성 + 최소성을 가진 속성 집합
기본키(Primary Key)후보키 중 선택된 하나 (NULL, 중복 불가)
대체키(Alternate Key)기본키로 선택되지 않은 나머지 후보키
외래키(Foreign Key)다른 릴레이션의 기본키를 참조
슈퍼키(Super Key)유일성만 만족(최소성은 없음)
후보키의 조건은 유일성 + 최소성 두 가지입니다. 슈퍼키는 최소성이 없다는 게 차이점.

자주 틀리는 포인트

함정정답
격리 수준 중 MySQL InnoDB 기본값REPEATABLE READ
2NF가 제거하는 것부분 함수 종속
3NF가 제거하는 것이행 함수 종속
클러스터드 인덱스 개수테이블당 1개
ACID의 DDurability(영속성) — 지속성이 아님
외래키 NULL 허용가능(참조 무결성은 NULL 허용)

정리

DB 이론은 한 줄 정의를 정확히 쓸 수 있는가가 전부입니다. ACID 4글자, 정규화 단계별 제거 대상, 이상 현상 3종, 인덱스 장단점 — 이 네 묶음을 손으로 쓸 수 있으면 단답 문제는 다 풀립니다.

직접 문제를 풀어보세요

매번 새로운 모의고사와 무한 풀이 모드로 실전 감각을 키울 수 있습니다.