ER schema를 테이블로 매핑하고 나면 Update anomalies(갱신 이상)에 직면한다.
Normalization(정규화)는 Functional dependency(함수적 종속성)과 pk를 바탕으로 relation schema를 분석함으로써 3가지 갱신 이상
을 해결하고 중복
을 최소화한다.
좋은 데이터베이스 스키마란 무엇인가.
중복, 갱신 이상, data loss를 방지하고
구현하고자 한 real world를 잘 나타내고
attribute 간의 관계를 보장하고
무결성 제한 조건을 지키며
효율적이어야 한다.
Modification anomaly(수정 이상)
Insertion anomaly(삽입 이상)
Deletion anomaly(삭제 이상)
EMPLOYEE relation처럼 디자인이 되어있다고 가정하자. EMPLOYEE는 최대 2개 부서에 소속될 수 있다.
Y.PARK 직원을 보면 1개 부서에 소속되어 있지만 DNO2, DNAME2에 널값을 주어야만 튜플을 삽입할 수 있다.(삽입 이상)
삽입 이상으로 인해 7.1그림의 테이블을 7.2그림의 테이블로 대신했다고 했을 때, 각 직원의 부서 최대 개수 제한 요구 사항의 의미가 사라진다.
중복
수정 이상
삽입 이상
삭제 이상
필요시 분해된 relation으로부터 original relation을 보장해야 한다는 원칙을 지키며 하나의 relation을 2개로 쪼갠다.
쪼개진 테이블의 정보의 양은 원래의 테이블에서 변동될 수 있지만 정보는 일치해야 한다.
테이블 분할은 테이블 내에 존재하는 함수적 종속성
에 기반한다.
7.3으로 변경했을 때 갱신 이상은 해결된다.
수정 이상
2, 3번 부서와 같이 여러 명의 직원이 소속되어 있어도 DEPTNAME field가 EMPLOYEE 테이블에 포함되어 있지 않기 때문에 수정 이상이 발생하지 않는다.
삽입 이상
삽입할 새로운 부서에 소속 직원이 없더라도 DEPARTMENT 테이블의 pk는 DEPTNO이기 때문에 DEPARTMENT 테이블에 새 부서 정보를 삽입할 수 있다.
삭제 이상
소속 직원이 한 명인 부서에서 해당 직원을 삭제하더라도 부서의 정보는 DEPARTMENT 테이블에 남아 있기 때문에 사라지지 않는다.
그러나 두 개의 부서일 경우 두 개의 튜플이 삽입되어 중복되기 때문에 1NF를 만족하지는 않는다.
first normal form(제 1정규화)
second normal form(제 2정규화)
third normal form(제 3정규화)
BCNF(Boyce-Codd normal form)
fourth normal form(제 4정규화)
fifth normal form(제 5정규화)