T_era

데이터베이스 키의 종류 및 정규화/반정규화 본문

Programing/Datababse

데이터베이스 키의 종류 및 정규화/반정규화

블스뜸 2025. 5. 16. 17:05

데이터베이스 키의 종류

  • 기본 키 (Primary Key): 각 레코드를 고유하게 식별하는 키. 테이블 당 하나만 존재.
  • 외래 키 (Foreign Key): 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 설정하는 키.
  • 유니크 키 (Unique Key): 테이블 내에서 고유한 값을 갖는 키. NULL 값 허용 여부 및 개수는 DB에 따라 다름.
  • 후보 키 (Candidate Key): 기본 키가 될 수 있는 하나 이상의 속성(또는 속성 집합). 기본 키를 선택하기 전의 대상 키들.
  • 인공 키 (Surrogate Key): 데이터 자체의 의미와 관계없이 인위적으로 생성된 기본 키. 최근에는 성능 및 유지보수 용이성 때문에 인공 키를 기본 키로 사용하는 경향이 높음. 정렬 속도 향상 및 Join 연산 시 데이터 양 감소로 메모리 이점 존재.

데이터베이스 정규화 (Normalization)

목적: 데이터 중복 최소화 및 데이터 이상 현상 방지. 데이터 수정 시 일관성 유지 및 리소스 효율성 증대.

  • 제1 정규화 (1NF): 모든 속성 값이 원자값(분해 불가능한 값)으로 구성.
  • 제2 정규화 (2NF): 제1 정규화를 만족하고, 부분 함수 종속성 제거. 기본 키의 일부 속성에만 종속적인 속성을 별도의 테이블로 분리. (예: A -> B, A, C -> D 일 때 A -> B 테이블 분리).
  • 제3 정규화 (3NF): 제2 정규화를 만족하고, 이행적 함수 종속성 제거. 기본 키가 아닌 속성에 종속적인 속성을 별도의 테이블로 분리. (예: A -> B, B -> C 일 때 A -> C 관계 제거).

정규화 심화의 문제점: 과도한 정규화는 테이블 수를 증가시켜 개발 시 참조해야 할 테이블이 많아지고, Join 연산 증가로 인한 성능 저하를 야기할 수 있음. BCNF, 제4, 제5 정규화 등 심화된 정규화 단계는 현실적으로 권장되지 않는 경향이 있음.

반정규화 (Denormalization)

정규화된 데이터 모델의 성능 저하를 방지하기 위해, 의도적으로 데이터 중복을 허용하거나 테이블을 통합하는 등의 방식으로 데이터 모델을 변경하는 기법. 정규화와 반대되는 개념으로, 성능 향상과 개발 편의성을 위해 중간 지점에서 타협점을 찾는 과정임.