정규화
정규화
데이터베이스 설계에서 중복을 최소화하고 데이터의 무결성을 유지하기 위한 프로세스입니다.
주로 관계형 데이터베이스에서 사용되며 데이터의 불필요한 중복을 제거하여 데이터의 일관성을 유지하고 데이터베이스 구조를 최적화합니다.
제 1정규화
제 1정규화란, 하나의 속성에 하나의 값을 가지도록 하는 과정입니다.
제 1정규화 전
각 과목(과목1, 과목2, 과목3)은 하나의 속성으로서 여러 개의 값이 포함되어 있습니다
제 1 정규화 후
각 레코드는 원자값(Atomic Value, 하나의 값)을 갖도록 되었으며, 제 1정규화의 조건을 충족하게 되었습니다.
제 2정규화
제 1정규화가 충족된 후, 테이블의각 속성이 기본 키 전체에 종속되어야 합니다.
제 2정규화 전
학생 ID와 과목 코드는 합쳐서 기본 키가 될 수 있습니다.
그러나 ‘학생 이름’은 ‘학생 ID’에만 종속되는 것이 아니며, ‘과목 코드’는 ‘과목 이름’과 ‘담당 교수’에도 종속됩니다.
제 2정규화 후
제1 정규화를 완료한 테이블에서, 부분 함수 종속성을 제거하는 과정입니다.
각 속성이 기본 키 전체에만 종속되게 되어 제 2정규화의 조건을 충족합니다.
현재 테이블의 주제와 관련없는 컬럼을 다른 테이블로 빼는 작업입니다.
제 3정규화
제 1, 2정규화를 충족된 후, 기본 키가 아닌 속성이다른 비기본 키 속성에 종속되는 경우, 이를 분리하여 각각의 테이블로 만듭니다.
제 3정규화 전
‘학과 이름’과 ‘학과 위치’는 ‘학과 ID’에만 종속되어야 하지만, ‘학과 ID’에만 종속되는 것이 아니라 ‘학생 ID’에도 종속되어 있습니다.
제 3정규화 후
제2 정규화를 완료한 테이블에서, 이행적 함수 종속성을 제거하는 과정입니다.
각 속성이 기본키에만 종속되도록 되었습니다.