정규화
- 데이터베이스 내의 애트리뷰트간의 종속성을 분석해서 하나의 종속성(어떠한 속성이 다른 속성을 결정함)이 하나의 릴레이션으로 표현되도록 하는 과정
- 불필요한 자료의 중복성을 없애서 검색을 쉽게 하고, 이상현상(데이터 삽입, 삭제, 갱신시 무결성이 깨지는 것)을 제거하기 위해서 정규화를 실시
- 제 1, 2, 3, BCNF, 4, 5 정규형으로 분류 가능함
- 정규화 과정은 논리적 단계와 물리적 단계 사이에서 수행하게 된다. 물리적 설계를 끝내고 중복성과 이상현상을 줄이기 위함이다.
- 어느 단계까지 정규화를 할 것인지는 테이블에 어떠한 데이터가 들어가있는지, 비즈니스 요구사항에 따라서 결정되기 때문에 전문가들이 주로 수행하게 된다.
제 1 정규화
- 반복되는 값이나 여러 값을 갖는 다치(Multivalue) 애트리뷰트를 제거해서 각 애트리뷰트가 반드시 원자값(하나의 값)을 갖도록 하는 과정
- 테이블에서 모든 애트리뷰트가 원자값만을 가질 때 제 1 정규형을 만족한다고 함
- 제 1 정규화(1NF)는 만족하게 되어도 각각 삽입, 수정, 삭제를 수행하는 갱신이상이 발생할 수 있음
갱신 이상
- 삽입이상??????????
- 상품 아이디를 제외한 정보만 넣으려 하면 엔티티 무결성 제약에 의해 기본키 값으로 널을 가질 수 없기 때문에 삽입 이상이 발생
- 삭제 이상
- 테이블 내에서 하나 밖에 없는 튜플의 일부 정보를 삭제 할 때 삭제하지 말아야할 정보까지 삭제되는 경우 발생
- ex. 상품 아이디가 2345678인 카테고리를 삭제하면(해당 row에 있는 모든 데이터가 삭제됨) 상품 가격 등 삭제되지 말아야할 다른 상품의 정보까지 삭제됨
- 수정 이상
- 중복되는 값 중 일부만 수정되어서 불일치 되는 경우 발생
- 상품 아이디가 2345667인 튜플이 2개 있는데, 카테고리를 다른 번호로 변경하려면 테이블 내 모든 값을 찾아 바꿔야 하지만, 수행하지 못하면 일관성을 잃게 됨