데이터베이스 정규화와 비정규화

권태형·2023년 2월 23일
0

지식정리

목록 보기
3/72
post-thumbnail

RDBMS를 구축하는데 보통 정규화를 통해서 구축을 한다고 한다. 그럼 정규화는 무엇일까?

1. 데이터베이스의 정규화란?

데이터베이스의 정규화는 데이터의 중복을 줄이고, 무결성을 지키기 위해 사용되는 데이터베이스 구성 방법이다.

1-1. 장점

정규화는 데이터를 더 작고 관리하기 쉬운 조각으로 나누어 데이터 중복성을 제거하는 데 도움이 된다.

1-2. 단점

작은 조각으로 나누기 때문에 여러 테이블과 관계를 설정하여 데이터를 끌어와야 할 경우 join연산을 반복 실행하게 되어 데이터베이스의 속도를 떨어뜨릴 수도 있을 것이다.

BD의 정규화에 대해서 알아보았다면, 그에 상반된 용어가 있지 않을까?

2. 비정규화란?

데이터베이스의 비정규화는 두 테이블 에서 관계가 있는 컬럼을 직접적으로 두 테이블에 설정하여 양쪽 다 저장함으로써 join연산을 줄이고 데이터베이스의 속도를 올리는데 사용되는 정규화와 정반대되는 구성방법이다.

2-1. 장점

이에 따른 장점으로 DB에 부담이 가는 join연산을 줄여서 데이터베이스의 속도를 증가시킬 수 있다.

2-2. 단점

비정규화를 진행한 컬럼이 많아 질 수록 중복된 데이터가 누적되고, 불필요하게 느껴질 수 있는 컬럼의 수가 늘어나서 관리해야 되는 데이터의 수가 더 많아 질 수 있고, 중간에 한쪽에서 변경된 데이터가 반대쪽 테이블에는 반영되지 않아 데이터의 불균형이 일어날 수 있다(ex: 유저테이블의 닉네임과, 게시글테이블의 닉네임을 비정규화 했을 때, 이미 작성된 게시글이 있다고 생각하면 그 이후 유저의 닉네임이 변경 되더라도 게시글의 닉네임이 변경되지 않아 같은 유저가 작성했음에도 불과하고 유저의 닉네임이 다르게 보여질 수 있습니다.)

정리

결과적으로 두 방법 모두 각각의 장단점이 존재하며, 반드시 DB를 구축하는데 있어서 한 가지 방법만 따라갈 필요는 없다. 각 데이터의 관계와 컬럼의 유닉크함 등을 참고해서 테이블에 맞게 정규화와 비정규화를 분산해 구축하는게 더 데이터 속도를 올리는데 도움이 될 것이다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글