..

[DB] 관계형 데이터베이스 정규화(Normalization) 단계별 정리

데이터베이스 정규화란?

데이터의 중복을 최소화하고 무결성을 향상시키기 위해 테이블을 논리적으로 분해하는 과정입니다.

주요 정규화 단계

1. 제1정규형 (1NF)

“모든 컬럼이 원자값(Atomic Value)을 가져야 합니다.”

  • 하나의 칸에는 하나의 값만 들어있어야 하며, 중복되는 그룹이 없어야 합니다.

2. 제2정규형 (2NF)

“제1정규형을 만족하고, 부분 함수 종속성을 제거해야 합니다.”

  • 기본키가 복합키(두 개 이상의 컬럼 조합)일 때, 어떤 필드가 기본키 전체가 아닌 일부분에만 종속되어 있다면 이를 분리합니다.

3. 제3정규형 (3NF)

“제2정규형을 만족하고, 이행적 함수 종속성을 제거해야 합니다.”

  • 기본키 이외의 속성들끼리 서로 종속 관계가 있는 경우(A->B->C)를 분리합니다.

4. BCNF (Boyce-Codd Normal Form)

“제3정규형을 만족하고, 모든 결정자가 후보키여야 합니다.”

  • 일반 필드가 후보키의 일부를 결정짓는 아주 복잡한 의존성까지 찾아내어 제거합니다.

해싱(Hashing) 기법들

데이터를 빠르게 찾기 위해 사용하는 해시 함수들의 종류입니다.

  • 제산법 (Division): 키 값을 특정 숫자로 나눈 나머지를 주소로 사용
  • 제곱법 (Mid-Square): 키 값을 제곱한 후 중간 부분의 비트를 추출
  • 숫자 분석법 (Digit Analysis): 키 값의 각 자릿수 분포를 분석하여 편중되지 않은 부분 사용

정규화는 데이터 일관성을 지키는 수단이지만, 지나친 정규화는 쿼리 성능(Join 비용)을 떨어뜨릴 수 있습니다. 필요시 적절한 반정규화(Denormalization) 전략도 중요합니다.