MEMO

[MySQL] 정규화의 이유 본문

MySQL

[MySQL] 정규화의 이유

by_dev 2020. 6. 22. 22:09

릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 중복된 정보로 인해 갱신 이상이 발생하게 된다. 동일한 정보를 릴레이션에는 변경하고, 나머지 릴레이션에서는 변경하지 않은 경우 어느 것이 정확한지 없게 되는 것이다. 이러한 문제를 해결하기 위해 정규화 한다.

 

  • 삽입 이상 : 원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점
  • 삭제 이상 : 하나의 자료만 삭제하고 싶지만, 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점
  • 수정(갱신) 이상 : 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점

 

장점

  • 데이터베이스 변경 이상 현상 제거
  • 새로운 데이터 형의 추가로 인한 확장 , 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.

 

단점

데이터를 처리할 속도가 느려질 있다. 느려지는 경우의 대표적인 예로는 JOIN 연산 있다. 릴레이션의 분해로 인해 릴레이션 간의 연산(JOIN) 많아진다. 이로 인해 질의에 대한 응답 시간이 느려질 있다. 이렇게 성능저하가 나타나는 경우에 반정규화 적용하는 전략이 필요하다.

'MySQL' 카테고리의 다른 글

[MySQL] 인덱스란 ? (사용이유)  (0) 2019.12.16
Comments