정규화(Normalization)

Tony·2021년 8월 18일
0

오늘 회사에서 내가 예상하는 DB 테이블을 표로 그려서 이런식으로 저장되지 않냐고 물었더니 이미 다 정규화가 되어있다고 하셨다.
그 당시 테이블을 잘개 쪼개 놓은 듯한 느낌이었는데 책과 검색을 통해 이번에 얕게 정리해보려한다.

정규화

  • 데이터 중복성을 최소화
  • 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
  • 정규화 수준이 높을 수록 유연한 데이터 구축이 가능하고 데이터의 정확성이 높아진다
  • 반면 정규화가 높을 수록 물리적 접근이 복잡하고 너무 많은 조인으로 인해 조회 성능이 저하된다.

목적

  • 자료 검색과 추출의 효율성을 추구
    • 효과적인 검색 알고리즘을 생성할 수 있다.

(DB의 행(Row) == 튜플(Tuple) == 레코드(Record))

정규화 원칙

  • 정보 무손실 표현
    • 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안 된다.
  • 분리의 원칙
    • 하나의 독립된 관계성은 하나의 독립된 관계로 분리시켜 표현해야 한다.
  • 데이터의 중복성이 감소되어야 한다.

반정규화

  • 테이블 통합
    • 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능향상에 도움이 될 경우에 수행

참고 문헌

  • 시나공 정보처리기사 2020 p.341
profile
움직이는 만큼 행복해진다

0개의 댓글