DATABASE

데이터베이스(DB) 정규화는 왜 필요할까?

YoonJong 2022. 10. 26. 22:10
728x90

정규화를 이용해 데이터베이스르 설계하는 방법을 알아보자.

 

데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생해서 테이블에 대한 데이터의 CRUD 연산을 수행할 때 부작용이 발생할 수 있는데 이것을 이상현상 이라고 한다.

이상현상을 제거해가면서 올바르게 데이터베이스를 설계하는 것을 정규화라고  한다.

 

아래의 예를 보면 정규화의 필요성에 대해 확인할 수 있다.

아래와 같은 현상이 일어나는 이유는 관련 없는 속성들이 하나의 테이블에 전부 들어가 있기 때문이다.

이를 발생하지 않게 하기위해 관련있는 속성들끼리만 테이블을 만들어 관리하는 것이 필요하다 

이러한 과정이 정규화 이다.


이상현상의 종류로는 삽입 이상, 갱신 이상, 삭제 이상이 있다.

하나하나 알아보자

고객아이디(PK) 이벤트번호(PK) 당첨여부 고객이름 등급
1 001 Y 홍길동 gold
1 005 N 홍길동 gold
1 010 Y 홍길동 gold
2 002 N 둘리 vip
2 005 Y 둘리 vip
3 003 Y 희동이 gold
3 007 Y 희동이 gold
4 004 N 마이콜 silver

 

삽입 이상은 새로운 데이터를 삽입하기 위해 원치않은 불필요한 데이터를 함께 삽입해야하는 문제를 의미한다.

고객아이디와 이벤트번호는 기본키이기 때문에 NULL 값이 들어갈 수 없다.

새로운 고객의 데이터를 삽입하고싶은데 이벤트에 참여하지 않았으므로, 삽입을 할 수 없는 상태가 일어난다.

5 null null 나길동 gold

 

갱신 이상은 중복된 데이터 중 일부만 수정하게 되어 데이터가 불일치 하는것을 의미한다.

예로, 첫번째 행의 홍길동의 등급만 vip로 변경된다. 2,3 번째의 고객도 같은 홍길동인데 vip로 바꿔주지 않으면 갱신 이상이 발생한다.

 

삭제 이상은 행에서 삭제하면 꼭 필요한 데이터까지 함께 삭제되서 데이터가 손실되는 연쇄 삭제현상을 의미한다.

고객아이디가 4번인 고객을 이벤트 참여에서 삭제한다.

이벤트에 관련된 정보만 삭제하고 싶지만, 고객이름과 등급까지 필요한 고객정보까지 연쇄적으로 삭제되어버린다.

 

 

728x90