본문 바로가기

Development/Servers

데이터베이스 정규화 Normalization

아직 디비 설계까지 내가 한 적이 없어서 정규화에 대한 고민을 해본적이 없지만 개판으로 짜여진 테이블을 보면서 이러지 말아야지 생각하고 있다.

정규화 Normalization 작업에 대한 간단한 요약

보통 1 정규형에서 3 정규형까지 체크한다. 이후의 단계도 있다.

  • 제1정규형 : 주 키가 존재해야 한다.
  • 제2정규형 : 모든 키가 아닌 컬럼은 주 키에 의존적이어야 한다.
  • 제3정규형 : 키가 아닌 컬럼끼리 의존 관계가 존재해서는 안된다.

이정도 내용만 잘 지켜서 설계하면 욕은 안먹을 것 같다.

그 다음은 다대다 관계를 없애는 4정규화 과정이 있지만 때론 필요하기도 하다니... 그런데 다대다는 정말 좀 하지말자. 인간적으로 피곤하다...ㅜㅜ

일부러 비정규화를 하는 경우도 있다. 왜? 필요하니까...
예를 들면

  • 테이블 합치기 : 조인 연산이 빡세기 때문에 테이블을 합쳐버리는게 성능상 유리한 경우가 있을 때도 있단다...
  • 테이블 미리 계산 : 그룹의 합계를 미리 계산해 놓는 방법... 종종 애용하는 방법이다.
  • 테이블 분리 : 자주 사용되는 컬럼과 그렇지 않은 컬럼을 분리해놓기도 한다. 이것도 성능 문제 때문에...
  • 중복 컬럼 만들기 : 조인 연산 때문에 특정 컬럼을 테이블에 포함시켜 버리는 경우도 있다.

ERD 멋지게 그리는 날이 언젠가 나도 있겠지?...