- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- 정규화
1. 정규화란(Normalization)?
- 정규화는 속성 간의 부정확한 종속성을 없애는 것을 의미함.
- 함수 종속 개념을 기반으로 유사한 속성들은 모으고 종속성이 없는 독립적인 속성들은 분리하는 것.
- 관계형 데이터 모델은, 속성의 종속성과 의존성을 분석해 더는 분해될 수 없는 엔터티로 만드는 정규화 과정 거쳐야 함.
- 비정규화는 반드시 정규형을 거쳐야 진행 가능함.
2. 아노말리 현상
- 정규형은 아노말리 현상을 최소화 함.
- 아노말리는 데이터 이상 현상으로 업데이트, 삭제, 삽입 아노말리 등이 존재함.
- 데이터 중복은 아노말리를 발생시키고, 중복이 없는 정규형은 아노말리를 최소화 함.
3. 모델 구조
- 관계형 데이터베이스는 모델이 잘 구현되어 있을 경우, 데이터를 가장 효율적으로 저장하고 추출해 사용할 수 있음.
- 반대로 구조가 잘 못 되었을 경우, 성능과 무셜성 그리고 유지보수 측면에서 심각한 문제가 발생함.
4. 정규화 vs 비정규화
정규화
- 실제 업무를 가장 잘 반영할 수 있음.
- 간결하게 구성되어 더욱 직관적으로 이해할 수 있음.
- 확장성이 용이함.
비정규화
- 특정 어플리케이션 성능을 위해 비정규화를 채택하기도 함.
5. 중복 속성(상품명)이 사용된 모델
- 상품엔터티에 상품명 속성이 존재함에도 불구하고, 장바구니, 관심상품, 주문상품 엔터티에 상품명 속성이 존재하여 중복으로 관리함.
- 이 모델은 상품 엔터티아 조인을 피하려고 상품명을 중복 속성으로 채택함.
- 하지만, 이 모델에서 상품코드가 '101011'인 상품의 이름이 변경되면, 상품 엔터티 이외에 상품명이 들어간 모든 엔터티의 속성값을 수정해야 함.
- 이로 인해 업데이트 비효율이 발생하고, 이보다 복잡할 경우 데이터 정합성이 깨질 수 있음.
- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- 정규화