DB 설계의 핵심은 중복 제거이다. 왜 핵심인지 아래 예시로 알아보자.
- 냉장고 안에 똑같은 재료가 여기저기 나눠져 있다고 상상해보자.
양파가 냉장고 여기저기에 여러 개 들어 있으면, 필요한 재료를 찾으려고 열어볼 때 어느 칸에도 다 양파가 있는 상황이 될 수 있다.
요리를 하려 할 때마다 양파를 여기저기에서 꺼내야 한다면 불편할 것이다.
심지어 양파를 상하지 않게 관리하려 해도 어느 한쪽은 깜빡해서 썩게 두는 경우도 생길 수 있다.- 데이터베이스에서도 중복된 데이터가 많으면 비슷한 문제가 생긴다.
데이터가 여기저기 중복되어 있으면 찾는 것도 어렵고, 관리하기도 복잡해진다.
새로운 값으로 업데이트할 때 하나라도 누락되면 그 순간 데이터가 불일치하게 된다. 따라서 중복을 줄이는 것은 냉장고 속 재료를 깔끔하게 정리하는 것처럼, 필요한 것을 쉽게 찾고 효율적으로 관리하기 위해 핵심적이라고 볼 수 있다.
중복되는 데이터가 많으면 많을수록 무언가를 수정할 때 중복되는 모든 데이터를 찾아서 고쳐야 한다. 이 때, 실수로 중복된 데이터를 누락해서 수정을 하지 않는 경우가 발생하고, 이렇게 되면 데이터들 사이에 모순이 생겨버린다.
저장된 데이터들 중에서 모순되는 상황이 생긴 현상을 보고 이상현상(Anomaly)라고 얘기한다.