Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

데이터베이스 제2정규형(2NF) 완벽 이해하기 – 개념부터 변환 예제까지

제2정규형(2NF)이란?

제2정규형(Second Normal Form, 2NF)은 데이터베이스 정규화(Normalization) 과정의 두 번째 단계입니다.

테이블이 2NF를 만족하려면 다음 두 가지 조건을 충족해야 합니다.

  • 해당 관계(relation)가 이미 1NF(제1정규형)의 모든 규칙을 만족할 것
  • 모든 비주요 속성(non-key attribute)이 기본 키에 완전 함수 종속되어 있을 것

즉, 제2정규형의 핵심 목표는 기본 키에 대한 부분 종속성(Partial Dependency)을 제거하여 데이터 중복과 이상 현상(anomaly)을 방지하는 것입니다.

2NF 위반 사례

먼저 부분 종속성이 존재하는 <StudentProject> 테이블을 살펴보겠습니다.

StudentID

ProjectID

StudentName

ProjectName
S89
P09
Olivia
Geo Location
S76
P07
Jacob
Cluster Exploration
S56
P03
Ava
IoT Devices
S92
P05
Alexandra
Cloud Deployment


위 테이블에는 부분 종속성이 존재합니다. 그 이유를 하나씩 살펴보겠습니다.

이 테이블의 주요 속성(prime attribute), 즉 후보 키는 StudentIDProjectID로 구성된 복합 키입니다.

앞서 설명했듯이, 비주요 속성인 StudentNameProjectName이 복합 키의 일부에만 의존한다면 이를 '부분 종속'이라고 합니다.

  • StudentNameProjectID와 무관하게 StudentID만으로 결정할 수 있으므로 부분 종속입니다.
  • ProjectName 역시 StudentID와 무관하게 ProjectID만으로 결정할 수 있으므로 부분 종속입니다.

따라서 <StudentProject> 관계는 정규화 관점에서 2NF를 위반하며, 좋지 않은 데이터베이스 설계로 간주됩니다.

2NF로 변환한 예시

부분 종속성과 2NF 위반 문제를 해결하려면 위 테이블을 아래와 같이 분해(decompose)해야 합니다.

<StudentInfo> 테이블

StudentID
ProjectID
StudentName
S89
P09
Olivia
S76
P07
Jacob
S56
P03
Ava
S92
P05
Alexandra


<ProjectInfo> 테이블

ProjectID
ProjectName
P09
Geo Location
P07
Cluster Exploration
P03
IoT Devices
P05
Cloud Deployment


이처럼 테이블을 분해하면 모든 비주요 속성이 기본 키에 완전하게 종속되므로, 이제 관계는 데이터베이스 정규화의 제2정규형(2NF)을 만족하게 됩니다.

데이터베이스 제2정규형(2NF) 완벽 이해하기 – 개념부터 변환 예제까지