🖥️ Modification Anomaly의 종류와 예시
데이터베이스는 유용한 정보를 저장하고 관리하기 위한 시스템입니다. 하지만 데이터베이스 설계가 적절하지 않으면 Modification Anomaly(수정 이상현상)가 발생할 수 있습니다. 이는 데이터베이스에 데이터를 추가하거나 수정, 삭제하는 과정에서 발생하는 문제들을 의미합니다. 이러한 문제는 데이터의 무결성을 손상시키고 불필요한 중복 데이터를 유발할 수 있습니다. Modification Anomaly는 크게 삽입 이상(Insertion Anomaly), 갱신 이상(Update Anomaly), 삭제 이상(Deletion Anomaly)으로 나뉩니다. 각각의 이상현상과 예시를 살펴보겠습니다.
✅ 삽입 이상 (Insertion Anomaly)
삽입 이상은 새 데이터를 추가할 때 불필요한 정보가 함께 삽입되거나, 필수 정보가 없어서 데이터를 삽입할 수 없는 상황을 말합니다. 이는 테이블에 불필요하게 많은 정보를 담고 있거나, 특정 데이터를 별도의 테이블로 분리하지 않았을 때 발생할 수 있습니다.
| 직원ID | 직원 이름 | 부서명 | 부서 전화번호 | |---------|-----------|---------|---------------| | 101 | 홍길동 | 개발부 | 02-123-4567 | | 102 | 김철수 | 영업부 | 02-987-6543 |
- 예시: 새로운 부서를 추가하려고 할 때, 부서에 소속된 직원이 없으면 부서 정보를 삽입할 수 없습니다. 테이블 구조상 직원 정보도 필요하기 때문입니다. 만약 "마케팅부"를 추가하려 하지만 해당 부서에 소속된 직원이 없을 경우, 부서 정보를 독립적으로 추가할 수 없습니다. 이로 인해 부적절한 직원 정보를 함께 넣어야 하는 상황이 발생할 수 있습니다.
✅ 갱신 이상 (Update Anomaly)
갱신 이상은 데이터베이스에서 특정 데이터를 수정할 때, 여러 곳에 중복된 데이터가 있어 그 데이터를 일일이 수정해야 하거나 일부만 수정되었을 때 발생하는 문제를 말합니다. 중복된 데이터가 존재하면 수정을 누락할 위험이 있고, 데이터의 일관성이 깨질 수 있습니다.
| 직원ID | 직원 이름 | 부서명 | 부서 전화번호 | |---------|-----------|---------|---------------| | 101 | 홍길동 | 개발부 | 02-123-4567 | | 102 | 김철수 | 개발부 | 02-123-4567 |
- 예시: 부서의 전화번호를 변경해야 할 때, "개발부"의 전화번호를 바꾸려면
홍길동
과김철수
의 행에서 모두 변경해야 합니다. 만약 두 개의 행 중 하나만 수정된다면, 한 행은 이전 전화번호로 남아있게 되어 일관성이 깨집니다.
- 예시: 부서의 전화번호를 변경해야 할 때, "개발부"의 전화번호를 바꾸려면
✅ 삭제 이상 (Deletion Anomaly)
삭제 이상은 특정 데이터를 삭제할 때, 불필요하게 다른 중요한 정보도 함께 삭제되는 문제를 말합니다. 이는 테이블에 관련이 없는 데이터들이 함께 저장되어 있을 때 발생할 수 있습니다.
| 직원ID | 직원 이름 | 부서명 | 부서 전화번호 | |---------|-----------|---------|---------------| | 101 | 홍길동 | 개발부 | 02-123-4567 | | 102 | 김철수 | 영업부 | 02-987-6543 |
- 예시:
김철수
를 퇴사 처리하여 삭제하려고 할 때, 그가 속한 "영업부"에 직원이김철수
한 명뿐이라면,김철수
를 삭제하면서 영업부 정보도 함께 삭제됩니다. 이는 해당 부서의 정보를 유지해야 하는 상황에서 문제를 일으킬 수 있습니다.
- 예시:
이러한 Modification Anomaly들은 데이터베이스가 정규화되지 않았을 때 주로 발생합니다. 정규화를 통해 테이블을 적절하게 분리하고 데이터 중복을 줄임으로써 이러한 문제들을 예방할 수 있습니다.