제2 정규화(2NF) - 완전 함수적 종속화

CosmoNumb·2024년 11월 13일
0

DB

목록 보기
4/8

제 2 정규화(2NF)는 부분 함수적 종속을 제거하여 완전 함수적 종속을 가지게 만드는 과정이다.

  1. 함수적 종속(Functional Dependency)란 하나의 컬럼이 다른 컬럼을 결정하는 관계를 의미한다. 예를 들어, 학생 ID학생 이름을 결정할 수 있다면, 학생 이름학생 ID에 함수적으로 종속되어 있다고 할 수 있다.

  2. 부분 함수적 종속(Partial Dependency)이란 복합 키(여러 개의 컬럼이 합쳐져 기본 키 역할을 하는 경우)를 사용하는 테이블에서, 기본 키의 일부만으로 특정 컬럼이 종속되는 것을 의미한다. 예를 들어, 수강 테이블에서 (학생 ID, 과목 ID)가 기본 키라면, 학생 이름학생 ID에만 종속되는 경우가 발생할 수 있다. 이때 학생 이름은 전체 기본 키 (학생 ID, 과목 ID)에 대해 부분적으로만 종속된 것이다.

  3. 완전 함수적 종속(Full Functional Dependency)이란 기본 키의 모든 컬럼에 대해 종속된 상태를 의미한다. 제 2 정규화를 달성하려면 기본 키의 일부가 아닌 전체에 대해 완전히 종속되어야 한다.

제 2 정규화 과정은 이러한 부분 함수적 종속을 제거하기 위해 부분적으로 종속된 컬럼들을 별도의 테이블로 분리하는 것이다. 예를 들어, 학생 ID와 관련된 속성들(예: 학생 이름, 학년)을 새로운 테이블 학생 테이블로 분리하여, 수강 테이블에서는 완전하게 종속된 속성들만 남겨두는 방식으로 나눌 수 있다.

이 과정을 통해 데이터 중복을 줄이고 테이블 구조가 보다 효율적으로 변하게 된다.


아래는 제 2 정규화 전후의 예시를 테이블로 정리한 것이다. 이 예시는 수강 테이블을 기준으로 부분 함수적 종속을 제거하는 과정을 보여준다.

제 2 정규화 전 (부분 함수적 종속 존재)

학생 ID과목 ID학생 이름학년과목 이름
101A01김철수3학년데이터베이스
102A02이영희2학년운영체제
101A02김철수3학년운영체제
103A03박민수1학년네트워크

위의 테이블에서는 학생 ID과목 ID가 복합 기본 키다. 하지만 학생 이름학년학생 ID에만 종속되어 부분 함수적 종속이 발생하고 있다.

제 2 정규화 후 (완전 함수적 종속)

학생 테이블

학생 ID학생 이름학년
101김철수3학년
102이영희2학년
103박민수1학년

수강 테이블

학생 ID과목 ID과목 이름
101A01데이터베이스
102A02운영체제
101A02운영체제
103A03네트워크

이제 학생 테이블수강 테이블로 분리되어, 학생 ID와 관련된 학생 이름학년 속성들이 완전 함수적 종속 관계를 갖게 되었다. 이를 통해 데이터의 중복이 줄어들고, 테이블이 보다 효율적으로 관리될 수 있게 된다.

0개의 댓글