본문 바로가기
스터디/Database

[DB] 정규화 vs 반정규화(비정규화)

by zoodi 2021. 7. 4.
728x90
정규화
  • 여러 제약조건(규칙)을 기반으로 데이터베이스를 이상현상 없이 설계하는 기법이다.
  • 데이터의 무결성을 향상한다.

정규화에 대한 자세한 내용은 https://hyeri0903.tistory.com/175?category=772718 에 정리해 두었다 ㅎㅎ

 

비정규화
  • 비정규(Denoramlizaiton)는 데이터를 중복시키거나 그룹핑함으로써 데이터 베이스의 성능을 향상시키기 위한 기법이다.
  • 정규화된 테이블을 읽기 성능 향상을 위해 다시 합치는 방법
  • 역정규화는 정규화된 테이블을 비정규 상태로 만들기 위한 방법 중 하나이다.

- 비정규화 프로세스

데이터베이스의 완벽한 구조 설계를 포기하고 데이터의 무결성을 떨어트리는 대신 관계형 데이터베이스의 읽기 성능을 향상하기 위한 설계이다. 

위와 같은 <강사>, <수업>, <수강료> 3개의 테이블이 존재할 때 원하는 데이터가 흩어져 있으므로 join을 사용해서 데이터를 조회한다.

만약 데이터의 양이 무수히 많다면 join의 속도에 영향을 주어 조회 속도가 느려진다는 점이있다.

따라서 아래처럼 <시간표>와 같이 비정규화 작업을 거치면 데이터 중복이 발생하지만 join을 하지않아도 되어서 조회 속도가 향상된다.

 

-비정규화 고려할 점

1) 무결성(데이터의 정확성) 주의 : 데이터의 중복이 발생하여 데이터 수정 시 일부만 수정되어 무결성이 깨질수도 있다.

2)읽기 속도는 빨라지지만 삽입/수정/삭제 속도는 느려짐 

3)저장공간의 효율이 떨어짐

4)유지보수가 어려움 : 테이블이 크고 복잡하여 쉽게 수정할 수 없고, 확장성이 떨어짐.

 

 

데이터베이스의 정규화, 비정규화는 각각 상황에 따라 필요시 사용하면 된다~!


*참고

https://chankim.tistory.com/m/7

 

[쉽게 설명한] 데이터베이스 비정규화, 역정규화

이 챕터에서는 비정규화를 살펴보자(정규화 링크는 여기) 사실 역정규화와 비정규화가 같은 의미로 쓰이는 것 같지만 엄연히 말하면 다르다. 비정규화(Unnormalized form)는 정규화된 테이블(릴레이

chankim.tistory.com

 

728x90

댓글