19|제1~제5정규형·BCNF·반정규화·파티셔닝

글 요약

사무자동화산업기사 – 제1~제5정규형과 BCNF, 반정규화, 테이블 병합·분할·추가, 파티셔닝과 데이터베이스 클러스터링을 정리합니다.

정규화는 릴레이션에 반복되는 데이터와 부적절한 종속 관계를 줄여 삽입·삭제·갱신 이상을 방지하는 과정입니다. 비정규 릴레이션에서 시작하여 원자값, 함수적 종속, 다치 종속과 조인 종속을 차례로 검토하면서 더 높은 정규형으로 변환합니다.

그러나 실제 데이터베이스에서는 무결성과 중복 최소화만큼 조회 성능과 운영 편의성도 중요합니다. 지나치게 세분된 테이블로 인해 조인이 증가하거나 대량 데이터 처리 성능이 저하되면 일부 중복을 의도적으로 허용하는 반정규화를 적용할 수 있습니다. 이 장에서는 제1정규형부터 제5정규형까지의 조건과 BCNF를 정리하고, 반정규화와 테이블 병합·분할·추가, 파티셔닝과 데이터베이스 클러스터링을 살펴봅니다.

이 장의 핵심 내용

  • 제1정규형은 모든 속성값이 더 이상 분해할 수 없는 원자값으로 구성된 릴레이션입니다.
  • 제2정규형은 제1정규형을 만족하면서 비주요 속성의 부분 함수적 종속을 제거한 상태입니다.
  • 제3정규형은 제2정규형을 만족하면서 비주요 속성 사이의 이행 함수적 종속을 제거한 상태입니다.
  • BCNF는 모든 비자명 함수적 종속에서 결정자가 슈퍼키인 정규형입니다.
  • 제4정규형은 비자명 다치 종속을, 제5정규형은 부적절한 조인 종속을 제거합니다.
  • 반정규화는 정규화된 구조를 성능과 운영 편의성을 위해 의도적으로 재구성하는 과정입니다.
  • 반정규화 기법에는 테이블 병합·분할·추가, 컬럼 추가와 중복 관계 추가가 있습니다.
  • 파티셔닝은 큰 테이블을 범위·목록·해시 등의 기준으로 나누어 관리하는 기법입니다.
  • 데이터베이스 클러스터링은 여러 서버를 함께 사용하여 처리 능력이나 가용성을 높이는 기술입니다.

정규화는 어떤 순서로 진행되는가?

정규화는 비정규 릴레이션에서 시작하여 각 단계에서 문제가 되는 종속 관계를 제거하는 방식으로 진행됩니다. 상위 정규형은 원칙적으로 이전 단계의 정규형 조건을 만족해야 합니다.

  1. 비정규 릴레이션 → 제1정규형 — 반복 속성을 제거하고 모든 도메인 값을 원자값으로 구성합니다.
  2. 제1정규형 → 제2정규형 — 복합 후보키 일부에만 종속되는 부분 함수적 종속을 제거합니다.
  3. 제2정규형 → 제3정규형 — 비주요 속성을 거쳐 간접적으로 종속되는 이행 함수적 종속을 제거합니다.
  4. 제3정규형 → BCNF — 슈퍼키가 아닌 결정자가 만드는 비자명 함수적 종속을 제거합니다.
  5. BCNF → 제4정규형 — 결정자가 슈퍼키가 아닌 비자명 다치 종속을 제거합니다.
  6. 제4정규형 → 제5정규형 — 후보키로부터 유도되지 않는 비자명 조인 종속을 제거합니다.
정규형충족해야 할 핵심 조건주요 제거 대상
제1정규형
1NF
모든 속성값이 원자값반복 속성, 다중값 속성
제2정규형
2NF
1NF이며 모든 비주요 속성이 후보키에 완전 함수적으로 종속부분 함수적 종속
제3정규형
3NF
2NF이며 비주요 속성이 후보키에 이행적으로 종속되지 않음이행 함수적 종속
BCNF모든 비자명 함수적 종속의 결정자가 슈퍼키슈퍼키가 아닌 결정자
제4정규형
4NF
모든 비자명 다치 종속의 결정자가 슈퍼키부적절한 다치 종속
제5정규형
5NF
모든 비자명 조인 종속이 후보키에 의해 유도됨부적절한 조인 종속
정규화 단계가 높아질수록 더 복잡한 데이터 종속 관계를 검토합니다.

시험에서는 1NF는 원자값, 2NF는 부분 종속 제거, 3NF는 이행 종속 제거, BCNF는 모든 결정자가 슈퍼키라는 기준으로 구분합니다.

제1정규형은 어떤 조건을 만족해야 하는가?

제1정규형(First Normal Form, 1NF)은 릴레이션의 모든 속성값이 더 이상 분해할 수 없는 원자값으로 구성된 상태입니다. 하나의 셀에 목록이나 여러 개의 값이 함께 저장되어 있으면 제1정규형을 만족하지 않습니다.

예를 들어 국가별 도시를 하나의 속성에 쉼표로 연결하여 저장하면 도시 속성이 여러 값을 가집니다. 이 경우 국가와 도시의 조합이 한 행에 하나씩 나타나도록 튜플을 분리합니다.

정규화 전 국가정규화 전 도시문제
대한민국서울, 부산하나의 속성에 두 개의 값이 저장됨
미국워싱턴, 뉴욕도시값을 개별적으로 처리하기 어려움
중국베이징해당 행은 원자값이지만, 같은 도시 속성에 다중값을 허용하는 전체 설계가 문제임
도시 속성에 여러 값이 들어 있는 릴레이션은 제1정규형을 만족하지 않습니다.
제1정규형의 국가제1정규형의 도시
대한민국서울
대한민국부산
미국워싱턴
미국뉴욕
중국베이징
국가와 도시의 각 조합을 별도의 튜플로 분리하면 도시 속성이 원자값을 가집니다.

주의: 원자값은 데이터베이스의 업무 목적과 도메인 정의에 따라 판단합니다. 주소 전체를 하나의 값으로 관리할 수 있지만 시·군·구별 검색이 필요하다면 주소를 여러 속성으로 분리할 수 있습니다.

제2정규형은 부분 함수적 종속을 어떻게 제거하는가?

제2정규형(Second Normal Form, 2NF)은 제1정규형을 만족하면서 모든 비주요 속성이 모든 후보키에 완전 함수적으로 종속된 상태입니다. 복합 후보키의 일부 속성만으로 일반 속성이 결정되면 부분 함수적 종속이 발생합니다.

고객아이디와 이벤트번호가 복합 기본키인 이벤트 응모 릴레이션을 가정합니다. 당첨번호는 고객과 이벤트의 조합에 의해 결정되지만 고객등급과 할인율은 고객아이디만으로 결정될 수 있습니다.

함수적 종속종속의 종류설명
{고객아이디, 이벤트번호} → 당첨번호완전 함수적 종속복합 키 전체가 있어야 당첨번호가 결정됨
고객아이디 → 고객등급부분 함수적 종속복합 키의 일부만으로 고객등급이 결정됨
고객아이디 → 할인율부분 함수적 종속복합 키의 일부만으로 할인율이 결정됨

부분 함수적 종속을 제거하려면 고객아이디에만 종속되는 고객등급과 할인율을 고객 테이블로 분리하고, 고객아이디와 이벤트번호에 함께 종속되는 당첨번호는 이벤트 응모 테이블에 남깁니다.

제2정규화 전

  • 고객아이디
  • 이벤트번호
  • 고객등급
  • 할인율
  • 당첨번호

고객등급과 할인율이 이벤트 응모마다 반복됩니다.

제2정규화 후

고객: 고객아이디, 고객등급, 할인율

이벤트 응모: 고객아이디, 이벤트번호, 당첨번호

각 속성이 해당 테이블의 키 전체에 종속됩니다.

중요: 부분 함수적 종속은 복합 후보키가 있을 때 발생합니다. 후보키가 하나의 속성으로만 구성되어 있다면 키의 일부가 존재하지 않으므로 부분 함수적 종속도 발생하지 않습니다.

제3정규형은 이행 함수적 종속을 어떻게 제거하는가?

제3정규형(Third Normal Form, 3NF)은 제2정규형을 만족하면서 비주요 속성이 다른 비주요 속성을 거쳐 후보키에 간접적으로 종속되지 않는 상태입니다.

고객 테이블에서 고객아이디가 고객등급을 결정하고, 고객등급이 할인율을 결정한다면 고객아이디는 고객등급을 거쳐 할인율을 간접적으로 결정합니다.

함수적 종속의미
고객아이디 → 고객등급고객아이디에 따라 고객등급이 결정됨
고객등급 → 할인율고객등급에 따라 할인율이 결정됨
고객아이디 → 할인율고객등급을 거쳐 할인율이 이행적으로 종속됨

이행 함수적 종속을 제거하려면 고객아이디와 고객등급을 고객 테이블에 두고, 고객등급과 할인율을 별도의 등급 테이블로 분리합니다.

제3정규화 전

고객: 고객아이디, 고객등급, 할인율

고객등급별 할인율이 여러 고객 튜플에 반복됩니다.

제3정규화 후

고객: 고객아이디, 고객등급

등급: 고객등급, 할인율

할인율을 등급 테이블에서 한 번만 관리합니다.

제2정규형은 복합 키의 일부에 종속되는 관계를 제거하고, 제3정규형은 키가 아닌 속성을 거쳐 간접적으로 종속되는 관계를 제거합니다.

BCNF는 제3정규형과 무엇이 다른가?

BCNF(Boyce-Codd Normal Form)는 모든 비자명 함수적 종속에서 결정자가 슈퍼키인 정규형입니다. 제3정규형보다 결정자에 대한 조건이 더 엄격합니다.

예를 들어 고객아이디와 인터넷강의가 기본키이고, 담당강사번호가 인터넷강의를 결정한다고 가정합니다. 고객아이디와 담당강사번호의 조합도 튜플을 식별할 수 있어 후보키가 될 수 있지만, 인터넷강의는 슈퍼키가 아니면서 담당강사번호를 결정합니다.

항목내용
후보키 1{고객아이디, 인터넷강의}
후보키 2{고객아이디, 담당강사번호}
문제가 되는 종속인터넷강의 → 담당강사번호
BCNF 위반 이유인터넷강의가 슈퍼키가 아닌 결정자이기 때문

BCNF를 만족시키려면 문제가 되는 함수적 종속인 인터넷강의 → 담당강사번호를 기준으로 릴레이션을 분해합니다. 인터넷강의와 담당강사번호는 강의담당 테이블에 두고, 고객의 강의 신청 정보는 고객별수강 테이블에 둡니다.

고객별수강

  • 고객아이디
  • 인터넷강의

강의담당

  • 인터넷강의
  • 담당강사번호

용어 주의: 일부 시험 교재에서는 BCNF를 “모든 결정자가 후보키인 정규형”이라고 설명합니다. 엄밀하게는 결정자가 후보키 자체일 필요는 없으며, 후보키를 포함하는 슈퍼키이면 BCNF 조건을 만족합니다.

제4정규형과 제5정규형은 무엇을 제거하는가?

제4정규형은 다치 종속을 제거한다

제4정규형(Fourth Normal Form, 4NF)은 BCNF를 만족하면서 모든 비자명 다치 종속의 결정자가 슈퍼키인 상태입니다. 다치 종속은 하나의 결정자 값에 대해 서로 독립적인 여러 값의 집합이 대응되는 관계입니다.

예를 들어 한 직원이 여러 자격증과 여러 외국어를 서로 독립적으로 보유한다고 가정합니다. 직원·자격증·외국어를 하나의 테이블에 저장하면 자격증과 외국어의 모든 조합이 반복될 수 있습니다.

제4정규화 전

직원능력: 직원번호, 자격증, 외국어

자격증과 외국어의 조합이 불필요하게 반복됩니다.

제4정규화 후

직원자격: 직원번호, 자격증

직원외국어: 직원번호, 외국어

서로 독립적인 다치 종속을 별도로 관리합니다.

제5정규형은 조인 종속을 제거한다

제5정규형(Fifth Normal Form, 5NF)은 제4정규형을 만족하면서 모든 비자명 조인 종속이 후보키에 의해 유도되는 상태입니다. 프로젝션-조인 정규형(Projection-Join Normal Form, PJNF)이라고도 합니다.

하나의 릴레이션을 세 개 이상의 릴레이션으로 분해한 뒤 다시 조인했을 때 원래 데이터가 손실되거나 존재하지 않던 가짜 튜플이 생성되지 않아야 합니다. 이러한 무손실 조인을 보장하도록 릴레이션을 분해합니다.

정규형주요 종속 관계핵심 질문
BCNF함수적 종속모든 결정자가 슈퍼키인가?
제4정규형다치 종속서로 독립적인 다중값이 한 테이블에 함께 있는가?
제5정규형조인 종속분해와 재조인에서 정보 손실이나 가짜 튜플이 발생하는가?
제4·제5정규형은 함수적 종속보다 복잡한 데이터 종속 관계를 다룹니다.

반정규화란 무엇인가?

반정규화(Denormalization)는 정규화된 엔터티·속성·관계를 시스템의 성능 향상과 개발·운영의 단순화를 위해 의도적으로 통합하거나 중복시키는 데이터 모델링 기법입니다.

정규화를 수행하면 데이터 중복과 이상 현상을 줄일 수 있지만 테이블 수와 조인 횟수가 증가할 수 있습니다. 자주 실행되는 조회에서 여러 테이블을 반복적으로 조인해야 하거나 대량 데이터를 집계해야 한다면 반정규화를 검토합니다.

기대 효과

  • 조인 횟수 감소
  • 조회 경로 단축
  • 집계 처리량 감소
  • 대량 조회 성능 향상
  • 응용 프로그램 구조 단순화

발생 가능한 문제

  • 데이터 중복 증가
  • 저장 공간 증가
  • 삽입·삭제·갱신 이상 가능성
  • 동기화 로직 필요
  • 데이터 무결성 관리 복잡화

반정규화는 정규화를 되돌리는 단순한 작업이 아니라, 데이터 무결성 저하 위험을 감수하고 조회 성능을 높이기 위한 의도적인 설계 결정입니다.

반정규화는 언제 검토하는가?

  1. 데이터 조회 과정에서 디스크 입출력이 많아 성능이 저하될 때 검토합니다.
  2. 데이터 무결성을 유지하면서도 반복적인 조인 비용이 지나치게 클 때 검토합니다.
  3. 관계 경로가 지나치게 길어 조회를 위한 조인 횟수가 많을 때 검토합니다.
  4. 대량의 집계나 통계 계산을 반복하여 수행해야 할 때 검토합니다.
  5. 특정 데이터가 여러 화면과 업무에서 매우 빈번하게 조회될 때 검토합니다.

판단 순서: 반정규화를 적용하기 전에 인덱스 조정, SQL 개선, 조회 조건 변경, 캐시 활용과 파티셔닝 같은 다른 성능 개선 방법을 먼저 검토해야 합니다.

테이블 병합은 어떤 방식으로 수행하는가?

테이블 병합은 여러 테이블을 하나의 테이블로 통합하여 조인 횟수를 줄이는 반정규화 기법입니다. 관계의 대응 수와 업무 특성에 따라 적용 방식을 구분합니다.

기법설명검토 사항
1:1 관계 테이블 병합일대일 관계에 있는 두 테이블을 하나로 통합항상 함께 조회되고 속성의 선택성이 비슷한지 확인
1:M 관계 테이블 병합일대다 관계의 테이블을 하나로 통합부모 정보가 자식 행마다 반복될 수 있음
슈퍼타입·서브타입 테이블 병합공통 속성과 하위 유형별 속성을 하나의 구조로 통합NULL 값 증가와 유형별 속성 차이를 확인
테이블 병합은 조인을 줄일 수 있지만 중복과 NULL 값을 증가시킬 수 있습니다.

주의: 1:M 관계를 병합하면 1쪽 테이블의 속성이 M쪽 행마다 반복될 수 있습니다. 조회 성능은 향상될 수 있지만 데이터 중복과 갱신 비용이 증가합니다.

테이블 분할은 수직 분할과 수평 분할로 어떻게 구분하는가?

테이블 분할은 하나의 큰 테이블을 여러 개의 더 작은 구조로 나누는 기법입니다. 분할 단위에 따라 수직 분할과 수평 분할로 구분합니다.

수직 분할

테이블의 컬럼을 기준으로 나눕니다. 자주 사용하는 컬럼과 크기가 크거나 사용 빈도가 낮은 컬럼을 별도 테이블로 분리할 수 있습니다.

분할 단위: 컬럼

수평 분할

테이블의 행을 기준으로 나눕니다. 특정 조건이나 분할 키에 따라 서로 다른 행 집합을 별도의 영역에 저장합니다.

분할 단위:

비교 항목수직 분할수평 분할
분할 기준컬럼
대표 목적자주 사용하는 컬럼의 접근 효율 향상특정 범위의 행을 빠르게 조회
재결합 방법공통 키를 이용한 조인여러 행 집합의 결합
대표 사례기본 정보와 대용량 상세 정보 분리연도·지역·고객군별 데이터 분리

분할 키에 따른 파티셔닝 방식에는 무엇이 있는가?

테이블 파티셔닝은 큰 테이블을 여러 파티션으로 나누되 논리적으로는 하나의 테이블처럼 사용하는 기법입니다. 각 행을 어느 파티션에 저장할지는 분할 키와 분할 방식에 따라 결정합니다.

분할 방식기준대표 사례주요 특징
범위 분할
Range
분할 키의 값 범위날짜, 주문번호, 금액 구간연속된 범위 조회에 유리
목록 분할
List
미리 지정한 값의 목록국가, 지역, 사업부범주가 명확한 데이터에 적합
해시 분할
Hash
해시 함수의 결과고객번호, 계정번호데이터를 비교적 고르게 분산
복합 분할
Composite
둘 이상의 분할 방식을 계층적으로 적용날짜 범위 후 고객번호 해시 분할각 분할 방식의 장점을 결합
라운드로빈 분할행을 순서대로 각 노드나 파티션에 배분병렬 데이터 처리 환경분할 키가 필요하지 않고 균등 분산에 초점
범위·목록·해시·복합 분할은 키값을 기준으로 하며, 라운드로빈은 행을 순차적으로 분산합니다.

파티션 프루닝: 질의 조건에 맞지 않는 파티션을 읽지 않고 필요한 파티션만 접근하면 디스크 입출력과 검색 범위를 줄일 수 있습니다.

용어 구분: 범위·목록·해시·복합 분할은 일반적인 테이블 파티셔닝 방식입니다. 라운드로빈은 특정 키값보다 균등한 데이터 분산을 목적으로 사용하는 배치 방식으로, 지원 여부와 구현 방법은 DBMS에 따라 다릅니다.

데이터베이스 클러스터링은 무엇인가?

데이터베이스 클러스터링은 두 대 이상의 서버나 노드를 하나의 데이터베이스 시스템처럼 구성하는 기술입니다. 여러 서버가 데이터 처리 작업을 분담하거나 한 서버의 장애 발생 시 다른 서버가 서비스를 이어받도록 구성할 수 있습니다.

병렬 처리 클러스터링

여러 서버가 데이터 처리 작업을 나누어 수행함으로써 처리량과 확장성을 높이는 데 목적이 있습니다.

고가용성 클러스터링

하나의 서버에 장애가 발생하면 다른 서버가 작업을 이어받아 서비스 중단 가능성을 낮추는 데 목적이 있습니다.

혼동 주의: 클러스터링은 여러 서버를 묶는 시스템 구성 기술이고, 클러스터드 인덱스는 테이블 데이터의 물리적 정렬과 관련된 인덱스 구조입니다. 서로 다른 개념입니다.

테이블 추가를 이용한 반정규화에는 무엇이 있는가?

테이블 추가는 기존 테이블의 데이터를 다른 목적의 테이블에 중복하거나 가공하여 저장하는 반정규화 기법입니다.

기법설명대표 목적
중복 테이블 추가동일하거나 유사한 데이터를 다른 위치에 중복 저장원격 조인 제거, 서버별 조회 성능 향상
집계 테이블 추가합계·평균·건수 등 미리 계산한 결과 저장통계와 집계 질의 성능 향상
이력 테이블 추가변경 이전 값과 시점별 데이터를 별도로 저장과거 상태 조회와 감사 추적
부분 테이블 추가자주 사용하는 행이나 컬럼만 별도 테이블로 구성디스크 입출력 감소
진행 테이블 추가현재 처리 중이거나 진행 상태인 데이터만 별도로 저장현재 업무 데이터의 빠른 조회
추가된 테이블은 원본과 데이터가 달라지지 않도록 갱신·동기화 절차가 필요합니다.

컬럼을 추가하는 반정규화에는 무엇이 있는가?

컬럼 추가는 반복적인 조인이나 계산을 줄이기 위해 다른 테이블의 값이나 계산 결과를 현재 테이블에 함께 저장하는 기법입니다.

기법설명주의점
중복 컬럼 추가조인 대상 테이블의 컬럼을 현재 테이블에도 저장원본값 변경 시 동기화 필요
파생 컬럼 추가계산 결과를 미리 저장기초값 변경 시 재계산 필요
이력 테이블 컬럼 추가최근 여부·시작일·종료일 등 이력 조회용 컬럼 추가이력 상태의 정확한 관리 필요
PK에 의한 컬럼 추가복합적인 의미를 포함한 값을 단일 PK로 구성했을 때, PK 내부의 특정 의미값을 자주 조회하기 위해 해당 값을 일반 컬럼으로 중복 추가중복 데이터 관리 필요
응용 시스템 오작동을 위한 컬럼 추가원래 업무 의미는 없지만 사용자의 잘못된 처리 후 원래 값으로 복구할 수 있도록 이전 값을 임시로 보관하는 보조 컬럼을 추가임시 요구가 영구 구조로 굳어지지 않도록 관리
‘응용 시스템 오작동을 위한 컬럼 추가’는 잘못된 데이터 처리 이후 원래 상태로 복구하기 위해 이전 값을 임시로 중복 저장하는 기법입니다. 장기적인 이력 관리가 필요하다면 별도의 이력 데이터 모델로 설계하는 것이 적절합니다.

파생 컬럼 주의: 합계나 잔액처럼 계산 가능한 값을 저장하면 조회는 빨라질 수 있지만 원본 데이터가 변경될 때 파생값도 함께 갱신해야 합니다.

관계를 추가하는 반정규화는 무엇인가?

관계 반정규화는 데이터에 도달하기 위해 거쳐야 하는 관계 경로가 너무 길 때 직접적인 중복 관계를 추가하는 기법입니다.

예를 들어 A에서 B와 C를 차례로 거쳐 D에 접근해야 하는 구조에서 A와 D 사이의 직접 관계를 추가하면 조인 단계를 줄일 수 있습니다. 다만 기존 경로와 새 관계가 서로 일치하도록 무결성을 관리해야 합니다.

관계 추가 전

A → B → C → D

D에 접근하려면 여러 관계와 테이블을 거쳐야 합니다.

중복 관계 추가 후

A → D

직접 관계를 이용하여 조회 경로와 조인 횟수를 줄입니다.

정규화와 반정규화는 어떻게 구분하는가?

비교 항목정규화반정규화
주요 목적중복과 이상 현상 감소조회 성능과 운영 편의성 향상
테이블 수분해로 증가할 수 있음병합으로 감소하거나 추가 테이블로 증가할 수 있음
조인 횟수증가할 수 있음감소시키는 방향으로 설계
데이터 중복최소화필요한 범위에서 의도적으로 허용
무결성 관리상대적으로 단순중복값 동기화로 복잡해질 수 있음
적용 시점논리적 데이터 모델 설계성능 문제와 업무 패턴을 분석한 이후
반정규화는 정규화의 반대 목표를 가지지만 정규화를 수행하지 않아도 된다는 의미는 아닙니다.

시험에서 자주 혼동되는 개념

제2정규형과 제3정규형

제2정규형은 복합 키의 일부에 종속되는 부분 종속을 제거하고, 제3정규형은 비주요 속성을 거치는 이행 종속을 제거합니다.

제3정규형과 BCNF

제3정규형은 비주요 속성의 이행 종속에 초점을 두고, BCNF는 모든 비자명 함수적 종속의 결정자가 슈퍼키인지 확인합니다.

수직 분할과 수평 분할

수직 분할은 컬럼을 나누고, 수평 분할은 행을 나눕니다. 수평 분할은 파티셔닝과 연결하여 출제될 수 있습니다.

정규화와 반정규화

정규화는 중복과 이상을 줄이고, 반정규화는 일부 중복을 허용하여 조회와 처리 성능을 높입니다.

파티셔닝과 테이블 분할

파티셔닝은 물리적으로 데이터를 나누면서 논리적으로 하나의 테이블처럼 관리하는 기술입니다. 일반적인 테이블 분할은 논리 모델 자체를 여러 테이블로 나눌 수 있습니다.

파티셔닝과 클러스터링

파티셔닝은 데이터를 여러 영역으로 나누는 기법이고, 클러스터링은 여러 서버나 노드를 하나의 시스템처럼 구성하는 기술입니다.

정규형 문제는 무엇을 제거하는지 확인하고, 반정규화 문제는 병합·분할·추가 중 어떤 기법을 사용했는지 확인해야 합니다.

이번 장 핵심 요약

  1. 제1정규형은 모든 속성값이 원자값인 릴레이션입니다.
  2. 제2정규형은 제1정규형을 만족하고 부분 함수적 종속을 제거한 상태입니다.
  3. 제3정규형은 제2정규형을 만족하고 이행 함수적 종속을 제거한 상태입니다.
  4. BCNF는 모든 비자명 함수적 종속의 결정자가 슈퍼키인 정규형입니다.
  5. 제4정규형은 부적절한 다치 종속을 제거합니다.
  6. 제5정규형은 후보키로부터 유도되지 않는 조인 종속을 제거합니다.
  7. 반정규화는 조회 성능과 운영 편의성을 위해 일부 중복을 의도적으로 허용합니다.
  8. 테이블 병합에는 1:1, 1:M, 슈퍼타입·서브타입 병합이 있습니다.
  9. 수직 분할은 컬럼 단위이고 수평 분할은 행 단위입니다.
  10. 파티셔닝 방식에는 범위·목록·해시·복합 분할 등이 있습니다.
  11. 테이블 추가에는 중복·집계·이력·부분·진행 테이블 추가가 있습니다.
  12. 컬럼 추가와 중복 관계 추가도 반정규화 기법에 해당합니다.
  13. 데이터베이스 클러스터링은 병렬 처리 또는 고가용성을 위해 여러 서버를 함께 사용합니다.

복습 문제

모든 속성값이 원자값으로 구성되어야 하는 정규형은?

제1정규형입니다.

부분 함수적 종속을 제거하는 정규형은?

제2정규형입니다.

이행 함수적 종속을 제거하는 정규형은?

제3정규형입니다.

모든 비자명 함수적 종속의 결정자가 슈퍼키인 정규형은?

BCNF입니다.

다치 종속을 제거하는 정규형은?

제4정규형입니다.

조인 종속을 제거하고 무손실 분해를 다루는 정규형은?

제5정규형입니다.

성능 향상을 위해 정규화된 구조에 중복을 의도적으로 허용하는 기법은?

반정규화입니다.

테이블을 컬럼 단위로 나누는 방식은?

수직 분할입니다.

테이블을 행 단위로 나누는 방식은?

수평 분할입니다.

분할 키의 값 범위를 기준으로 데이터를 나누는 방식은?

범위 분할입니다.

합계·평균·건수처럼 미리 계산한 결과를 저장하는 반정규화 기법은?

집계 테이블 추가 또는 파생 컬럼 추가입니다. 별도의 테이블에 저장하면 집계 테이블 추가이고, 기존 테이블의 컬럼에 저장하면 파생 컬럼 추가입니다.

여러 서버를 하나의 데이터베이스 시스템처럼 구성하는 기술은?

데이터베이스 클러스터링입니다.

참고자료

이 글은 사무자동화산업기사 시험 범위에 포함된 제1~제5정규형과 BCNF, 반정규화, 테이블 병합·분할·추가, 파티셔닝과 데이터베이스 클러스터링을 이해하고 복습할 수 있도록 재구성한 정리입니다. 정규형의 엄밀한 정의와 파티셔닝 기능은 교재와 DBMS에 따라 표현이나 지원 범위가 다를 수 있으므로 실제 시험에서는 문제에 제시된 조건과 최신 Q-Net 출제기준을 함께 확인해야 합니다.


같은 주제의 다른 글

이 글과 같은 카테고리에 있는 이전 글과 다음 글을 확인해보세요.