좋은 관계형 데이터베이스를 설계하는 목적 중 하나가 정보의 이상현상(Anomaly)이 생기지 않도록 고려해 설계하는 것입니다.

 

이상현상은 아래와 같은 3가지로 구성됩니다.

  • 갱신 이상
    • 반복된 데이터 중에 일부를 갱신할 시 데이터 불일치 발생
  • 삽입 이상
    • 불필요한 정보를 함께 저장하지 않고서는 정보 저장 불가능
  • 삭제 이상
    • 필요한 정보를 함께 삭제하지 않고서는 정보 삭제 불가능

 

갱신이상

 

갱신 이상의 경우 어떤 값을 업데이트 했을 때, 다른 속성값들과의 불일치가 발생하는 현상입니다.
예를들어, 테이블에 사용자의 이름이 같은 사용자 김영진이 2명이상 있다고 가정해봅시다.
여러 명의 사용자 중 한명의 김영진이 김진영이라는 이름으로 개명하여 김영진 -> 김진영으로 바꾸었습니다. 이때, 테이블에는 여러명의 김영진이 있기 때문에 다른 김영진도 바뀔 수 있습니다. 이러한 현상을 갱신 이상이라고 합니다.

 

삽입 이상

내가 원하는 값만 테이블에 삽입하고 싶은데, 테이블에 필요하지 않을 필드들 때문에 원치 않는 필드의 값도 삽입해야 하는 경우 입니다.
예를들어, id, name, password, school의 정보를 입력해야하는 테이블이 있습니다.
해당 테이블에 저는 학교를 다니지 않아서 Id, name, password만 입력하고 싶지만 school의 정보를 입력하지 않는 이상 데이터를 삽입할 수 없습니다.
이렇게 필드 값을 무엇으로 해야할지 결정 못하는 것이 삽입 이상입니다.

 

삭제 이상

내가 원하는 값만 테이블에서 삭제하고 싶은데, 하나의 튜플이 삭제를 원하지 않는 속성값도 갖고있기 때문에 같이 지워져서 발생하는 문제입니다.
예를들어, Id, name, password, school의 정보가 담겨져있는 테이블이 있습니다.
여기서 저는 학교를 졸업했기때문에 school의 정보만 삭제하고 싶지만, 테이블이 더 많은 수의 필드로 구성되어 있기 때문에 이것을 지우기 위해서는 지우고 싶지 않은 필드들의 정보도 같이 지워야합니다. 이것이 삭제 이상입니다.

 

 

 

+ Recent posts