(데이터베이스) 1정규화

1. 제 1정규화

"반복되는 그룹 속성을 제거한 뒤 기본 테이블의 기본키를 추가해 새로운 테이블을 생성하고 기존 테이블과 1:N의 관계를 형성한다."

만약 홍길동이라는 사람이 운전면허1종, MCSE, 정보처리기사 자격증을 갖고 있다고 하자.
이럴 경우 홍길동의 데이터를 모두 저장하기 위해서는 아래와 같이 3개의 레코드가 필요할 것이다.



이렇게 하면  몇 가지 문제가 생길 수 있다. 즉 쓸데없는 데이터베이스의 공간이 낭비가 발생한다. 또한 만약 홍길동의 주소나 핸드폰번호가 바뀌게 되면 3개의 레코드를 모두 변경해야 한다.

그래서 1차 정규화의 대상이 되는 것이다.
이를 해결하기 위해서는 반복 되어지는 그룹 속성을 제거한 뒤 새로운 테이블을 생성하고 기존의 테이블과 1:N의 관계를 형성하면 된다.




<2번째 예제>


어떤 학원에서 진행 중인 각 과정들의 데이터를 과정이라는 테이블에서 관리한다고 하자.
그리고 각 과정에 소요되는 교재를 과정 테이블에서 컬럼으로 관리한다면 다음과 같다.
이 테이블엣 교재 컬럼의 개수는 학원의 과정들 중에서 가장 많은 교재를 사용하는 과정을 기준으로 설정되어야 하며 아래의 견본 데이터에서는 5권이라 가정했다.



이렇게 데이터가 들어갈 경우 교재가 5권인 웹프로그래밍의 컬럼들은 모두 채워지지만 그외의 과목은 최소 1개 이상의 NULL값이 들어가지게된다. 테이블에 NULL값이 많다는 것은 쓸데없는 데이터 저장 공간의 낭비이다.

그래서 교재컬럼처럼 반복되는 속성을 갖는 칼럼의 경우 따로 분리해서 기존의 테이블과 1:N의 관계형성을 해야 한다.




댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기