좋은 관계형데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상(Anomaly)이 생기지 않도록 고려해 설계하는 것입니다.
이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말합니다.
이상 현상은 갱신 이상(Modification ANomaly), 삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly)으로 구성됩니다.
아래의 표를 예로 이상 현상에 대해 알아보겠습니다.
학번 | 이름 | 나이 | 성별 | 강의코드 | 강의명 | 전화번호 |
---|---|---|---|---|---|---|
1011 | 유재석 | 23 | 남 | AC1 | 데이터베이스설계 | 010-1111-1111 |
1012 | 박명수 | 22 | 여 | AC2 | 오퍼레이팅시스템 | 010-1111-1112 |
1013 | 정준하 | 21 | 남 | AC3 | 자료구조론 | 010-1111-1113 |
1013 | 정준하 | 21 | 남 | AC4 | 알고리즘설계 | 010-1111-1113 |
1014 | 하하 | 25 | 남 | AC5 | 객체지향프로그래밍 | 010-1111-1115 |
강의를 아직 수강하지 않은 새로운 학생을 삽입할 경우 강의 코드와 강의명 속성에는 null값이 들어가야 하는 문제가 생긴다.
강의 코드가 "AC3"인 정준하의 전화번호를 수정할 경우, 3번째 튜플의 데이터만 수정될 것이다.
그러면 3, 4번째 튜플은 같은 사용자의 데이터임에도 불구하고 전화번호가 다르게 된다.
강의코드가 "AC1"인 데이터베이스설계 강의를 삭제하게 되면, 유재석 학생의 데이터까지 삭제되어버린다.
이러한 이상 현상을 예방하고 효과적인 연산을 하기 위해 데이터 정규화(Data Normalication) 를 한다.