Computer >> 컴퓨터 >  >> 소프트웨어 >> 소프트웨어

데이터베이스 정규화의 기초

한동안 데이터베이스 작업을 해 왔다면 정규화라는 용어를 들어본 적이 있을 것입니다. 아마도 누군가가 "저 데이터베이스가 정규화되었습니까?"라고 물었을 것입니다. 또는 "BCNF에 있습니까?" 정규화는 종종 학자만이 누릴 수 있는 사치로 간주됩니다. 그러나 정규화의 원칙을 알고 일상적인 데이터베이스 설계 작업에 적용하는 것은 그리 복잡하지 않으며 DBMS의 성능을 크게 향상시킬 수 있습니다.

이 기사에서는 정규화의 개념을 소개하고 가장 일반적인 정규 형식에 대해 간략히 살펴봅니다.

정규화란 무엇입니까?

정규화는 데이터베이스에서 데이터를 효율적으로 구성하는 프로세스입니다. 정규화 프로세스에는 두 가지 목표가 있습니다. 중복 데이터 제거(예:동일한 데이터를 둘 이상의 테이블에 저장)와 데이터 종속성이 타당한지 확인(테이블에 관련 데이터만 저장). 데이터베이스가 소비하는 공간을 줄이고 데이터가 논리적으로 저장되도록 하기 때문에 이 두 가지 모두 가치 있는 목표입니다.

일반 형식

데이터베이스 커뮤니티는 데이터베이스가 정규화되도록 하기 위한 일련의 지침을 개발했습니다. 이들은 정규형이라고 하며 1(첫 번째 정규형 또는 1NF라고 하는 정규화의 가장 낮은 형식)에서 5(제5 정규형 또는 5NF)까지 번호가 지정됩니다. 실제 응용 프로그램에서 가끔 4NF와 함께 1NF, 2NF 및 3NF를 자주 볼 수 있습니다. 다섯 번째 정규형은 거의 볼 수 없으며 이 기사에서 논의하지 않을 것입니다.

일반 형식에 대한 논의를 시작하기 전에 그것들은 지침일 뿐임을 지적하는 것이 중요합니다. 때때로 실용적인 비즈니스 요구 사항을 충족하기 위해 그것들에서 벗어날 필요가 있게 됩니다. 그러나 변형이 발생하면 시스템에 미칠 수 있는 가능한 모든 결과를 평가하고 잠재적인 불일치를 설명하는 것이 중요합니다. 즉, 일반 형식을 살펴보겠습니다.

제1정규형(1NF)

첫 번째 정규형(1NF)은 조직화된 데이터베이스의 기본 규칙을 설정합니다.

  • 같은 테이블에서 중복되는 열을 제거합니다.
  • 관련 데이터의 각 그룹에 대해 별도의 테이블을 만들고 고유한 열 또는 열 집합(기본 키)으로 각 행을 식별합니다.

제2정규형(2NF)

두 번째 정규형(2NF)은 중복 데이터 제거 개념을 추가로 다룹니다.

  • 첫 번째 정규형의 모든 요구 사항을 충족합니다.
  • 표의 여러 행에 적용되는 데이터의 하위 집합을 제거하고 별도의 표에 배치합니다.
  • 외래 키를 사용하여 이러한 새 테이블과 이전 테이블 간의 관계를 만듭니다.

제3정규형(3NF)

제3정규형(3NF)은 한 단계 더 나아가:

  • 제2정규형의 모든 요건을 충족합니다.
  • 기본 키에 의존하지 않는 열을 제거합니다.

Boyce-Codd 정규형(BCNF 또는 3.5NF)

"3분의 1(3.5) 정규형"이라고도 하는 Boyce-Codd 정규형은 한 가지 요구 사항을 더 추가합니다.

  • 제3정규형의 모든 요건을 충족합니다.
  • 모든 결정자는 후보 키여야 합니다.

제4정규형(4NF)

마지막으로, 네 번째 정규형(4NF)에는 한 가지 추가 요구 사항이 있습니다.

  • 제3정규형의 모든 요건을 충족합니다.
  • 다중 값 종속성이 없는 경우 관계는 4NF에 있습니다.

이러한 정규화 지침은 누적된다는 점을 기억하십시오. 데이터베이스가 2NF에 속하려면 먼저 1NF 데이터베이스의 모든 기준을 충족해야 합니다.

정규화해야 합니까?

데이터베이스 정규화는 종종 좋은 생각이지만 절대적인 요구 사항은 아닙니다. 의도적으로 정규화 규칙을 위반하는 것이 좋은 사례가 되는 경우가 있습니다.

데이터베이스가 정규화되었는지 확인하려면 먼저 데이터베이스를 제1정규형으로 만드는 방법부터 배우십시오.