본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것
이상(Anomaly): 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미한다.
- 삽입 이상(Insertion Anomaly): 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상이다.
- 삭제 이상(Deletion Anomaly): 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상이다.
- 갱신 이상(Update Anomaly): 테이블에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상이다.
함수적 종속(Functional Dependency): 데이터의 의미를 표현하는 것으로 현실 세계를 표현하는 제약 조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건이다. 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수 종속 또는 X가 Y를 함수적으로 종속한다고 하고 X → Y로 표기한다. X → Y의 관계를 갖는 속성 X와 Y에서 X를 결정자(Determinant)라 하고 Y를 종속자(Dependent)라고 한다. 이러한 함수적 종속성은 이상(Anomaly) 현상을 제거하기 위한 '정규화(Normalization)' 과정의 핵심 기준이 된다.
- 완전 함수적 종속(Full Functional Dependency): 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진부분 집합 Z(즉, Z ⊂ X)에도 함수적 종속이 아닐때 속성 Y는 속성 집합 X에 완전 함수적 종속이다.
- 부분 함수적 종속(Partial Functional Dependency): 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 임의의 진부분 집합에 대해 함수적 종속일 때, 속성 Y는 속성 집합 X에 부분 함수적 종속이다. X → Y
- 이행적 함수적 종속(Transitive Functional Dependency): X → Y이고 Y → Z일 때, X → Z를 만족하는 관계(이행 규칙)

정규화(Normalization): 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다. 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다. 데이터 구조의 안정성 최대화시킨다. 릴레이션 재구성의 필요성을 줄인다. 논리적 설계 단계에서 수행하는 작업이다. # 도부이결다조
- 제1정규형: 테이블 R에 속한 모든 속성의 도메인이 원자 값으로만 되어 있는 정규형이다.(도메인 원자값 설정) # 다중값 속성을 제거한다.
- 제2정규형: 테이블 R이 제1정규형이고 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.(부분적 함수 종속성 제거)
- 제3정규형: 테이블 R이 제2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형이다.(이행적 함수 종속성 제거)
- BCNF: 테이블 R에서 모든 결정자가 후보키(Candidate Key)인 정규형이다.(결정자이면서 후보키가 아닌 것 제거)
- 제4정규형: 테이블 R에 다중 값 종속 A → B가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.(다치 종속 제거)
- 제5정규형: 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형이다.(조인 종속성 이용)
반정규화: 시스템의 성능을 향상하고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위반하는 행위이다. 시스템 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다. 과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
- 테이블 통합: 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것이다. 이 때 1:1, 1:N, 슈퍼타입(상위 개체)/서브타입(하위 개체) 테이블 통합이 있다.
- 테이블 분할
- 수평 분할: 레코드를 기준으로 테이블을 분할하는 것, 레코드별로 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함(예: 범위 분할, 해시 분할, 조합 분할, 목록 분할, 라운드로빈 분할)
- 수직 분할: 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할하는 것
- 중복 테이블 추가: 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것이다.
- 집계 테이블 추가
- 진행 테이블 추가
- 특정 부분만을 포함하는 테이블 추가
- 중복 속성 추가: 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나더 추가하는 것이다. But, 중복 속성을 추가하면 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요하다.
시스템 카탈로그: 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다. 카탈로그들은 데이터 사전에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전(Data Dictionary, 자료 사전)이라고도 한다. 일반 사용자도 SQL을 이용하여 검색이 가능하나 수정은 불가능하다.(즉, 사용자의 접근은 읽기 전용으로만 허용된다.) 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 정보를 저장한다.
- 메타 데이터(Meta-Data): 시스템 카탈로그에 저장된 정보를 의미한다. 데이터베이스 객체 정보, 사용자 정보, 테이블의 무결성 제약 조건 정보, 함수, 프로시저, 트리거 등에 대한 정보
데이터 디렉터리(Data Directory): 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템이다. 시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만 데이터 디렉터리는 시스템만 접근할 수 있다.
트랜잭션(Transaction): 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용되며 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다.
| 특성 | 의미 |
| Atomicity(원자성) | 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함 |
| Consistency(일관성) | · 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함 · 시스템의 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다. |
| Isolation(독립성, 격리성, 순차성) | 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음 |
| Durability(영속성, 지속성) | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함 |
CRUD 매트릭스: 2차원 형태의 표로서 행에는 프로세스를 열에는 테이블을 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터 간의 관계를 분석하는 분석표이다. 각 셀에는 Create·Read·Update·Delete의 앞 글자가 들어가며 기본적으로 C > D > U > R의 우선순위를 가진다.

트랜잭션 분석: CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다. 트랜잭션 분석은 업무 개발 담당자가 수행하며 과도하게 접근하는 테이블을 여러 디스크에 분산 배치함으로써 디스크 입·출력 향상과 성능 향상을 가져올 수 있다.
트랜잭션의 상태
| 상태 | 내용 |
| 활동(Active) | 트랜잭션이 실행 중인 상태 |
| 실패(Failed) | 트랜잭션 실행에 오류가 발생하여 중단된 상태 |
| 철회(Aborted) | 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태 |
| 부분 완료(Partially Committed) | 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산이 실행되기 직전의 상태 |
| 완료(Committed) | 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산을 실행한 후의 상태 |
'정보처리기사' 카테고리의 다른 글
| [정보처리기사 요약 2-6] 암호화, 접근통제, 스토리지(DAS/NAS/SAN) (0) | 2026.02.25 |
|---|---|
| [정보처리기사 요약 2-5] 인덱스, 뷰, 파티션부터 분산 데이터베이스까지 (1) | 2026.02.24 |
| [정보처리기사 요약 2-3] 릴레이션 구조부터 튜플, 속성, 도메인까지 (1) | 2026.02.24 |
| [정보처리기사 요약 2-2] 개념적/논리적 데이터 모델과 E-R(개체-관계) 모델의 이해 (0) | 2026.02.24 |
| [정보처리기사 요약 2-1] 데이터베이스(DB) 기초(스키마, DBMS 기능, 설계 순서 등) (0) | 2026.02.24 |