정규화
데이터베이스 정규화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월