현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

함수 종속·정규화·이상·반정규화

후보키를 먼저 구한 뒤 부분·이행 종속과 결정자를 검사한다.

예상 읽기 3

실기 학습 목표

후보키를 먼저 구한 뒤 부분·이행 종속과 결정자를 검사한다.

핵심 이론

1NF는 원자값을 요구한다. 2NF는 1NF를 만족하고 비주요 속성의 후보키 일부에 대한 부분 함수 종속을 제거한다. 복합 후보키의 일부만으로 결정되는 비키 정보를 별도 릴레이션으로 분리한다.

3NF의 정확한 조건은 각 비자명 종속 X→A에서 X가 슈퍼키이거나 A가 주요 속성인 것이다. 단순 예제에서는 비키 속성을 경유하는 이행 종속 제거로 설명한다.

BCNF는 모든 비자명 함수 종속의 결정자가 슈퍼키여야 한다. 오른쪽이 주요 속성이라는 이유로 허용되는 3NF와 차이가 있다.

삽입·삭제·갱신 이상은 서로 다른 사실을 중복 저장하면서 생긴다. 분해 후 필요한 사실과 연결 키가 보존되는지 확인한다. 반정규화는 조회 비용을 줄이기 위한 의도적 중복이며 변경 시 정합성 관리가 필요하다. 고차 정규형의 증명은 여기서 확장하지 않는다.

개념 도식

좌우로 이동해 그림을 확인하세요.그림 크게 보기
함수 종속·정규화·이상·반정규화의 관계와 흐름을 보여 주는 도식
함수 종속·정규화·이상·반정규화의 관계와 흐름을 보여 주는 도식

정규화는 서로 다른 사실을 적절히 나누는 과정이다

수강(학번, 과목, 학생이름, 성적)에서 키가 (학번, 과목)이고 학번만으로 학생이름을 알면 이름은 키 일부에 종속된다. 학생이 세 과목을 수강할 때 같은 이름이 세 번 저장되므로 이름 변경 누락 같은 이상이 생긴다. 학생(학번, 이름)과 수강(학번, 과목, 성적)으로 나누면 반복 저장을 줄일 수 있다.

단계확인 질문
1NF한 칸에 반복 목록 대신 원자값을 저장하는가
2NF비주요 속성이 후보키 일부에만 종속되는가
3NF비자명 종속의 결정자가 슈퍼키이거나 오른쪽이 주요 속성인가
BCNF모든 비자명 종속의 결정자가 슈퍼키인가

주요 속성은 어떤 후보키에라도 포함된 속성이다. 기본키로 선택하지 않았다는 이유로 무조건 비주요 속성으로 보지 않는다. 3NF와 BCNF의 차이는 오른쪽이 주요 속성인 경우의 허용 여부다.

정규형 문제는 후보키 → 함수 종속 → 위반 조건 순서로 푼다. ‘만족하는 가장 높은 정규형’과 ‘처음 위반하는 가장 낮은 정규형’을 구별한다. 반정규화는 성능 요구를 고려한 의도적 중복이므로 일관성 관리 비용을 함께 이해한다. 고차 정규형의 분해 증명까지 확장하지 않는다.

풀이 예시

관계 Staff(staff_id, team_id, team_phone)의 유일한 후보키는 staff_id이다. staff_id→team_id, team_id→team_phone만으로 team_phone을 알 수 있다. team_id는 슈퍼키가 아니다. 이러한 team_phone의 종속 형태와 제거 목표 정규형을 순서대로 쓰시오.

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
① 이행 함수 종속, ② 제3정규형

풀이 과정

staff_id가 team_id를 결정하고 team_id가 team_phone을 결정하여 비키 속성을 경유한 이행 종속이 된다. 단일 후보키이므로 이 사례에 부분 종속 문제는 없으며 비키 속성 간 이행 종속 제거가 제3정규형의 핵심이다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.