정규화는 데이터베이스 테이블을 설계할 때,데이터의 중복을 최소화하고무결성을 보장하기 위해 테이블을 구조화하는 과정입니다. 데이터 중복으로 인해 발생할 수 있는 삽입, 갱신, 삭제 이상의데이터 불일치 문제를 방지하고, 데이터베이스의 구조를 더 안정적이고 유지보수하기 쉽게 만들기 위해 반드시 필요합니다.
반정규화는 정규화로 인해 조회 성능이 저하될 때, 특히JOIN 연산이 너무 많아져 병목 현상이 발생할 때고려합니다. 의도적으로 데이터의 중복을 허용하거나 테이블을 통합하여 JOIN의 수를 줄이는 방식입니다.장점은 원하는 데이터를 더 빠르게 조회하여시스템의 성능을 향상시킬 수 있다는 것입니다. 하지만단점으로는 데이터의 중복이 발생하므로데이터 일관성을 유지하기가 더 어려워지고, 데이터 수정 시 여러 곳을 함께 변경해야 하는유지보수 비용이 증가한다는 점이 있습니다.