데이터베이스 정규화란 무엇인가요?

데이터베이스의 시각적 표현

작성자

Alice Gomstyn

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

데이터베이스 정규화란 무엇인가요?

데이터베이스 정규화는 데이터를 특정 테이블 구조로 구성하는 데이터베이스 설계 프로세스입니다. 데이터 무결성을 개선하고, 데이터 이상 징후를 방지하고, 데이터 중복성을 최소화하고, 쿼리 성능을 강화하는 데 도움이 됩니다.

 

정규화는 데이터베이스 관리 시스템(DBMS)의 테이블을 최적화하여 정규 형식, 즉 테이블 내에서 속성이 구성되는 방식을 제어하는 규칙 집합을 충족합니다. 이러한 규칙은 주로 행을 고유하게 식별하는 데 사용되는 키를 포함하여 속성(열) 간의 관계를 기반으로 합니다.

데이터베이스 정규화가 중요한 이유는 무엇인가요?

기본적으로 데이터베이스 정규화(데이터 정규화라고도 함)는 기업과 기관이 대량의 복잡하고 상호 관련되며 동적인 데이터를 보다 효과적으로 구성, 쿼리 및 유지 관리하는 데 도움이 됩니다. 이제 기업은 전례 없는 규모로 데이터를 생성하고 저장하지만 데이터베이스 정규화의 필요성은 새로운 것이 아닙니다. 이는 클라우드 스토리지데이터 웨어하우스의 발명보다 앞서 있었습니다.

1960년대 이후 기업들은 대규모 데이터 세트를 관리하는 데 어려움을 겪어 왔습니다. 1970년대에 관계형 데이터베이스를 소개한 획기적인 논문으로 유명한 IBM의 수학자에드거 F. 코드 (Edgar F. Codd)는 데이터베이스 정규화가 속성(열) 간의 '바람직하지 않은' 의존성을 회피하고, 이로 인해 발생할 수 있는 문제들을 방지할 수 있다고 제안했습니다.

즉, 데이터 레코드가 데이터베이스 구조에서 서로 관련되어 있는 경우 크고 복잡한 테이블의 단일 값 또는 행을 변경하면 데이터 불일치 및 데이터 손실과 같은 의도하지 않은 결과가 발생할 수 있습니다. 데이터베이스 정규화는 이러한 위험을 최소화하도록 설계되었습니다.

데이터베이스 정규화의 이점은 무엇인가요?

데이터베이스 정규화의 이점은 다음과 같습니다.

데이터 이상 징후 방지

더 크고 복잡한 테이블이 더 작고 단순한 테이블로 분해(또는 분할)되면 데이터베이스 변경이 더 쉽고 오류가 발생하기 쉬운 과정이 되며 관련 데이터의 현재 더 작은 테이블로 변경이 제한됩니다.

의도치 않은 데이터 중복 감소

의도적인 데이터 중복데이터 품질, 보안 및 가용성을 개선하는 데 도움이 될 수 있지만, 의도하지 않은 데이터 중복성은 시스템이 무심코 중복 데이터를 생성하는 현상으로, 비효율성을 초래합니다.

데이터 스토리지 비용 절감

데이터베이스 정규화를 통해 중복 데이터를 줄이면 데이터 스토리지 비용을 낮출 수 있습니다. 이는 가격이 종종 사용된 데이터 스토리지의 양에 따라 결정되는 클라우드 환경에서 특히 중요합니다.

더 빠른 데이터 검색

정규화를 통해 데이터 중복이 줄어들면, 중복이 적어짐에 따라 검색 시 처리해야 할 데이터 양이 적어져 쿼리 속도가 빨라질 수 있습니다.

데이터베이스 정규화는 어떤 데이터 이상 현상을 해결하나요?

데이터 구조를 정규화하면 다음과 같은 세 가지 주요 유형의 이상 현상을 방지할 수 있습니다.

삽입 이상: 삽입 이상은 테이블의 하나 이상의 열에 필요한 값이 누락되어 데이터 레코드를 테이블에 삽입할 수 없을 때 발생합니다.

삭제 이상 현상: 삭제 이상 현상은 기록의 삭제 시 해당 기록에 포함된 중요한 데이터를 의도하지 않게 삭제하는 경우에 발생합니다.

업데이트 이상 현상: 데이터베이스의 한 위치에서 데이터의 인스턴스가 업데이트되었지만, 해당 데이터 값이 저장된 다른 위치에서는 업데이트되지 않아 데이터 일관성이 깨지는 현상을 말합니다.

데이터베이스 정규화에서 키의 중요성

관계형 데이터베이스에서 키는 테이블의 데이터 행을 식별하는 데 사용되는 열 또는 정렬된 열 모음입니다. 관계형 모델에서 키는 관련 테이블 간의 관계를 설정합니다. 이러한 기능은 성공적이고 효율적인 SQL Database 쿼리를 지원합니다. 데이터베이스 정규화 규칙에서 중요한 역할을 하는 키에는 다음과 같은 것이 있습니다:

  • 기본 키
  • 복합 키
  • 후보 키
  • 외래 키
  • 슈퍼 키

기본 키

기본 키는 각 행 또는 레코드에 대한 고유 식별자 역할을 하는 값이 있는 데이터베이스 테이블의 열입니다. 예를 들어 학생 ID 열은 학생 정보 테이블의 기본 키가 될 수 있습니다. 기본 키의 특성 정의는 null 값을 제외하고, 중복 값이 없으며, 단일 열 또는 여러 열로 구성될 수 있다는 것입니다.

복합 키

두 개 이상의 열로 구성된 키를 복합 키라고 합니다. 기본 키가 복합 키인 경우 복합 기본 키라고 부르기도 합니다.

후보 키

후보 키는 기본 키의 특성을 갖지만 기본 키 상태가 지정되지 않은 열 또는 열 그룹입니다.

외래 키

한 테이블의 외래 키는 다른 테이블의 특정 기본 키를 참조하여 테이블 간 관계를 정의합니다. 정규화 과정에서 큰 테이블을 작은 테이블로 나누는 경우, 외래 키와 기본 키는 새로운 테이블 간에 연관 관계를 수립합니다.

슈퍼 키

슈퍼 키는 복합 기본 키와 유사하지만 레코드를 고유하게 식별하는 데 필요한 것보다 더 많은 열로 구성됩니다.

데이터베이스 정규화에서 종속성의 중요성

여러 데이터베이스 정규화 제약 조건은 기본 키와 기본 키나 후보 키도 아닌 열 간의 관계(종속성이라고도 함)를 기반으로 합니다. 후자를 비키(non-key) 속성 또는 비주요 속성이라고 합니다.

한 속성(행렬식)이 다른 속성의 값을 결정하는 데이터베이스의 속성 간의 관계를 기능 종속성이라고 합니다. 속성 간의 기능적 종속성 유형에는 부분 종속성, 전이적 종속성, 다중 값 종속성 및 조인 종속성이 포함됩니다. 이러한 관계는 관련 정규화 규칙 집합 또는 정규 형식의 맥락에서 논의될 때 가장 잘 이해됩니다.

데이터베이스 정규화의 일반적인 형태는 무엇인가요?

데이터 모델에서 정규화를 실행하려면 하나 이상의 정규화 수준, 즉 정규형을 준수하도록 테이블을 설계해야 합니다. 일반적인 형태는 다음과 같습니다.

  • 제1정규형
  • 제2정규형
  • 제3정규형과 Boyce-Codd 정규형
  • 제4정규형
  • 제5정규형

제1정규형

제1정규형은 데이터베이스 정규화의 가장 기본적인 기준입니다. 이 기준에 따르면 데이터베이스 테이블 스키마에는 기본 키가 포함되어야 하며, 열 간 중복이 없어야 합니다. 더 구체적으로 말하면, 제1정규형에 맞는 테이블에는 값의 배열을 포함하는 필드가 있어서는 안 됩니다. 예를 들어, 세 가지 다른 이름이 들어 있는 단일 셀이 이에 해당됩니다. 또한, 동일한 유형의 데이터를 저장하는 서로 다른 열로 구성된 반복 그룹도 포함해서는 안 됩니다.

첫 번째 정규형을 더 잘 이해하기 위해 다음 열 집합을 예시로 사용해 보겠습니다:1

rec_num

   lname

 이름

 bdate

 anniv

 email

 자녀1

 child2

 child3

 

열은 이름, 생일, 결혼 기념일, 이메일 및 자녀 이름을 포함한 부모 그룹의 테이블로 구성됩니다.

이 테이블은 동일한 유형의 정보(자녀 이름)를 저장하는 별도의 컬럼이 세 개나 포함되어 있으므로, 제1정규형을 위반합니다. 특히 이 경우에는 테이블 구조로 인해 삽입 오류가 발생할 수 있습니다. 예를 들어, 현실 세계에서는 많은 부모들이 세 명 미만의 자녀를 둡니다.

이 예제 테이블에서는 이러한 상위 레코드를 테이블에 추가할 수 없습니다. 또한 이 테이블에서 하위 이름을 쿼리하는 것은 비효율적이며 모든 행의 세 가지 다른 열에서 데이터를 검색해야 합니다.

테이블의 데이터에 대한 첫 번째 정규형을 달성하려면 원래 테이블을 두 개로 분리해야 합니다. 한 테이블에는 원본 테이블의 속성 대부분을 포함하며 다른 테이블에는 하위에 중점을 둡니다.

TABLE 1

rec_num

이름

bdate

anniv

이메일

 

테이블 2

rec_num         child_name

이 예시에서 새로 만들어진 테이블은 'rec_num' 열을 통해 서로 연결되어 있습니다. 이때 'rec_num'은 테이블 1에서는 기본 키 역할을 하고, 테이블 2에서는 'rec_num' 열이 외래 키로서 참조합니다.

제1정규형을 만족해도 중복 데이터가 줄어들지는 않을 수 있지만,('부모에게 둘 이상의 자녀가 있는 경우 테이블 2의 여러 행에 'rec_num' 값이 나타남) 반복 그룹을 제거하면 쿼리가 더 간단해질 수 있습니다.

제2정규형

두 번째 정규 형식에서는 키가 아닌 속성이 테이블의 기본 키에 부분적으로 의존하지 않습니다. 즉, 기본 키가 복합 키인 경우 키가 아닌 속성은 해당 복합 키의 모든 열에 종속되어야 합니다.

예를 들어, 특정 창고에 보관된 특정 부품의 수량을 기록한 재고 테이블을 생각해 보십시오. 다음 그림은 재고 엔티티의 속성을 보여줍니다.2

part

warehouse

quantity

warehouse_address

 

이 예에서 'part' 및 'warehouse' 열은 복합 기본 키를 형성합니다. 그러나 'warehouse_address' 속성은 'warehouse' 값에만 의존하므로 테이블은 두 번째 정규형을 위반합니다.

또한 이 테이블은 동일한 창고의 부품에 대한 레코드가 테이블에 나타날 때마다 warehouse_address 값이 나열되기 때문에 데이터 중복이 발생하기 쉽습니다. 이로 인해 주소가 한 행에서 업데이트되고 다른 행에서는 업데이트되지 않는 경우 업데이트 오류가 발생할 위험이 높아집니다. 한 창고가 부품 저장을 중지하는 경우에도 삭제 오류가 발생할 수 있으며, 해당 부품의 레코드가 삭제되면 창고 주소도 삭제됩니다.

두 번째 정규 형식을 만족하고 오류 가능성을 줄이기 위해선 데이터를 두 개의 새 테이블 간에 분산할 수 있습니다.

TABLE 1

part

warehouse

quantity

 

테이블 2

warehouse                                warehouse_address

제3정규형과 보이스-코드 정규형

세 번째 정규형의 테이블은 첫 번째 및 두 번째 정규형을 모두 충족하는 동시에 비키 속성이 기본 키 대신 다른 비키 속성에 의존하는 상황을 피합니다. 비키 속성이 다른 비키 속성에 종속되는 경우 이를 전이적 종속성이라고 합니다. 이는 세 번째 정규형의 위반입니다.

다음 직원 정보 표를 살펴보십시오.3

직원 번호

직원 이름

emp_lname

dept_num

dept_name

0200

데이비드

Brown

D11

제조 시스템

0320

Ramlal

메타

E21

소프트웨어 지원

0220

Jennifer

Lutz

D11

제조 시스템

 

이 테이블에서 기본 키는 "emp_num" 열입니다. 그러나 "dept_name" 열은 키가 아닌 속성인 "dept_num" 열에 따라 달라집니다. 따라서 테이블이 세 번째 정규형을 충족하지 않으며 업데이트 변칙과 같은 오류의 위험이 높아집니다. "제조 시스템"과 같은 부서 이름이 변경되면 현재 테이블 스키마 아래에서 둘 이상의 행에서 업데이트해야 합니다.

정규화된 데이터베이스에서 데이터를 제3정규형으로 정리하면 이러한 오류를 방지할 수 있습니다. 이 경우, 이 프로세스는 데이터를 세 개의 별도 테이블로 구조화하는 것을 포함합니다: EMPLOYEE, DEPARTMENT, 및 EMPLOYEE_DEPARTMENT 4

직원 테이블

직원 번호

직원 이름

emp_lname

0200

데이비드

Brown

0320

Ramlal

메타

0220

Jennifer

Lutz

 

DEPARTMENT 테이블

dept_num

dept_name

D11

제조 시스템

E21

소프트웨어 지원

 

직원_부서 테이블

dept_num

직원 번호

D11

0200

D11

0220

E21

0320

 

Boyce-Codd Normal Form(BCNF)는 세 번째 정규형의 더 엄격하거나 더 강한 버전으로 간주되는 정규형입니다. BCNF는 슈퍼 키를 사용해야 합니다.

제4정규형

다중값 종속성이 없는 테이블은 제4정규형에 해당합니다. 다중 값 종속성은 둘 이상의 열의 값이 서로 독립적이고 기본 키에만 종속될 때 발생합니다.

튜토리얼에서 일반적으로 인용되는 예는 기술과 언어를 모두 나열하는 직원 테이블을 중심으로 합니다. 직원은 여러 기술을 보유하고 여러 언어를 구사할 수 있습니다. 직원과 기술 간의 관계와 직원과 언어 간의 두 가지 관계가 존재합니다.

테이블이 두 가지 관계를 모두 표현한다면, 그 테이블은 제4정규형에 해당하지 않습니다. 데이터를 제4정규형으로 변환하려면 데이터를 두 개의 테이블로 구조화해야 합니다. 하나는 직원 기술용, 다른 하나는 언어용입니다.

제5정규형

일반적으로 가장 높은 수준의 정규화로 여겨지는 제5정규형은 조인 종속성(Join Dependency)에 중심을 둔 기준입니다. 조인 종속성에서는 테이블을 더 작은 테이블로 나눈 후 데이터를 잃거나 실수로 새 데이터 행을 만들지 않고 새 테이블을 다시 모아 원래 테이블을 재구성할 수 있습니다. 이는 분해되도 원래 형태로 다시 조립할 수 있는 완성된 직소 퍼즐에 비유할 수 있습니다.

제5정규형에서는 조인 종속성을 달성할 수 있는 경우에만 테이블을 더 작은 테이블로 나누어야 합니다. 그러나 더 작은 테이블을 원래 테이블로 재구성하려는 시도가 의도치 않게 약간 다른 테이블을 만들게 된다면, 원래 테이블의 분해를 수행해서는 안 됩니다. 다시 직소 퍼즐 비유로 돌아가자면, 이는 마치 퍼즐을 다시 맞췄는데 한 조각이 없어졌거나, 혹은 조각이 하나 더 생겨버린 것과 같습니다.

데이터베이스 정규화의 과제는 무엇인가요?

데이터베이스 정규화에는 모든 이점에도 불구하고 장단점이 따릅니다. 예를 들어, 정규화 이전에는 특정 데이터를 찾는 사용자가 하나의 테이블만 쿼리하면 될 수 있습니다. 그러나 정규화 후 데이터베이스에 더 많은 테이블이 있는 경우 사용자는 여러 테이블을 쿼리해야 할 수 있으며, 이는 더 느리고 비용이 많이 드는 프로세스입니다.

또한 정규화를 통해 개별 테이블이 더 단순해지더라도 데이터베이스 전체의 복잡성이 증가할 수 있으므로 적절한 구현을 보장하려면 데이터베이스 설계자와 관리자의 상당한 전문 지식이 필요합니다.

관련 솔루션
IBM StreamSets

직관적인 그래픽 인터페이스를 통해 스트리밍 데이터 파이프라인을 생성하여 하이브리드 및 멀티클라우드 환경 전반에서 완벽한 데이터 통합을 촉진합니다.

StreamSets 살펴보기
IBM watsonx.data™

watsonx.data를 사용하면 오픈, 하이브리드 및 관리형 데이터 저장소를 통해 데이터의 위치와 관계없이 모든 데이터로 분석과 AI를 확장할 수 있습니다.

watsonx.data 알아보기
데이터 및 분석 컨설팅 서비스

IBM Consulting을 통해 엔터프라이즈 데이터의 가치를 실현하여 비즈니스 이점을 제공하는 인사이트 중심의 조직을 구축하세요.

분석 서비스 알아보기
다음 단계 안내

탁월한 고객 및 직원 경험을 제공하기 위해 데이터 사일로를 제거하고, 복잡성을 줄이며, 데이터 품질을 개선하는 데이터 전략을 구축하세요.

데이터 관리 솔루션 살펴보기 watsonx.data 알아보기
각주

1First normal form.” IBM Documentation, Informix Servers. 2024년 11월 19일.

2, 3, 4 Normalization in database design.” IBM Documentation, Db2 for z/OS. 2025년 1월 22일.