더북(TheBook)

정규화

데이터베이스 정규화database normalization란 데이터에 이상현상이 발생할 가능성을 줄이려고 테이블에 들어갈 데이터를 구성하는 프로세스를 말한다. 이상현상anomaly이란 데이터가 일치하지 않는 것을 일컫는다. 예를 들어 표 7-1과 같은 테이블이 있다고 해보자. 어느 사용자가 Janice Washington이란 고객의 주소를 조회했다. 어떤 주소가 반환될까?

 

▼ 표 7-1 사용자 주소 질의

주문번호

고객 이름

고객 주소

9837373

Janice Washington

873 Morton Dr, Houston, TX

9837374

Robert Denison

1984 NE 34th Ave Apt 23, Portland, OR

9837375

Hu Zhang

415 Commonwealth Ave, Boston, MA

9837376

Janice Washington

187 River St, Seattle, WA


873 Morton Dr. Houston, TX나 187 River St, Seattle, WA가 반환되거나 둘 다 반환될 것이다. Janice Washington이란 사람이 두 곳에 거주할 가능성도 있지만, 하나는 현재 주소이고 나머지 하나는 예전 주소일 가능성도 있다. 하지만 표 7-1만 봐서는 알 수가 없다.

정규화는 데이터베이스에 있는 중복 데이터양을 줄여준다. 각 주문과 함께 고객 이름과 주소를 반복해서 한 테이블에 저장해 놓는 대신 고객 이름과 주소 같은 속성들은 별도의 테이블에 넣는 것이다. 고객 이름과 주소 둘 다에 연관된 속성을 추가할 수도 있다. 특히, 주소 테이블에 있는 여러 주소 중 현재 주소만 가리키는 지시자를 넣을 수도 있다.

데이터베이스 정규화에는 몇 가지 규칙이 있다. 얼마나 많은 정규화 규칙을 따르는가에 따라 데이터베이스를 부르는 형식이 다르다. 보통 데이터베이스 모델러는 제3정규화라 불리는 것을 설계한다. 이는 정규화 규칙 중 처음 세 개의 규칙을 따른다는 의미다.2



2 정규화에 대한 기본적인 내용을 알고 싶다면 http://www.bkent.net/Doc/simple5.htm을 참조하라.
윌리엄 켄트(William Kent), “A Simple Guide to Five Normal Forms in Relational Database Theory”, 1982년 9월

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.