이상 현상 (Anomaly)
- 일반적인 패턴이나 동작으로부터 벗어난 것
- 즉, 데이터나 시스템에서 예상치 못한 이벤트, 동작, 패턴 등이 나타나는 것
- 데이터베이스 이상은 일반적으로 설계가 잘못되고 무계층 데이터베이스를 사용하여 발생한다.
- 이상 현상은 일반적으로 테이블을 분할하거나 결합하여 정규화함으로써 제거된다.
세 가지 유형의 이상 현상
갱신 이상 현상 (Updation/Update Anomaly)
- 테이블의 일부 행을 업데이트할 때 테이블의 불일치가 발생하면 갱신 이상 현상이 발생한다.
삽입 이상 현상 (Insertion Anomaly)
- 테이블에 새 행이 삽입되어 있고 테이블에 불일치가 발생하는 경우를 삽입 이상 현상이라고 한다.
삭제 이상 현상 (Deletion Anomaly)
- 테이블에서 일부 행을 삭제하고 데이터베이스에서 필요한 다른 정보나 데이터도 삭제하는 경우를 삭제 이상 현상이라고 한다.
예시1.
- 갱신 이상 현상 (Updation/Update Anomaly)
- 위의 표에서 Ramesh의 주소를 업데이트하려면 Ramesh가 있는 모든 행을 업데이트해야 한다. 이때, 하나의 행을 놓치면 Ramesh의 주소가 두 개가 되어 데이터베이스가 일관되지 않고 잘못될 수 있다.
- 삽입 이상 현상 (Insertion Anomaly)
- 예를 들어 위의 표에서 worker의 새 행을 만들고 이 행이 어느 부서(deptartment)에도 할당되지 않으면 테이블에 삽입할 수 없으므로 삽입 이상이 발생한다.
- 예를 들어 위의 표에서 worker의 새 행을 만들고 이 행이 어느 부서(deptartment)에도 할당되지 않으면 테이블에 삽입할 수 없으므로 삽입 이상이 발생한다.
- 삭제 이상 현상 (Deletion Anomaly)
- 예를 들어, 위의 표에서 부서 번호 ECT669를 삭제하려면 Rajesh의 세부정보가 ECT669 행에 따라 달라지기 때문에 Rajesh의 세부 정보도 삭제된다. 따라서 표에 삭제 이상이 발생한다.
예시2.
- 갱신 이상 현상 (Updation/Update Anomaly)
- 위의 표에서 Shivani가 Computer Science에서 Electronics로 branch를 변경하면 모든 행을 업데이트해야 한다. 행을 하나라도 놓치면 Shivani는 두 개 이상의 branch를 가지게 되므로 갱신 이상이 발생한다.
- 위의 표에서 Shivani가 Computer Science에서 Electronics로 branch를 변경하면 모든 행을 업데이트해야 한다. 행을 하나라도 놓치면 Shivani는 두 개 이상의 branch를 가지게 되므로 갱신 이상이 발생한다.
- 삽입 이상 현상 (Insertion Anomaly)
- 동아리에 속하지 않은 새로운 학생을 추가하면 stu_club 열에 null을 삽입할 수 없기 때문에 테이블에 행을 삽입할 수 없으므로 삽입 이상이 발생한다.
- 동아리에 속하지 않은 새로운 학생을 추가하면 stu_club 열에 null을 삽입할 수 없기 때문에 테이블에 행을 삽입할 수 없으므로 삽입 이상이 발생한다.
- 삭제 이상 현상 (Deletion Anomaly)
- Photography 동아리를 없애면 꼭 필요한 정보인 Gopal에 대한 정보도 삭제되므로 삭제 이상이 발생한다.
'Computer Science > Database' 카테고리의 다른 글
[Database] 정규화 (Normalization) (0) | 2023.07.07 |
---|---|
[Database] 인덱스 (Index) (0) | 2023.06.30 |
[Database] SQL vs. NoSQL (0) | 2023.06.23 |
[Database] SQL Injection (0) | 2023.06.23 |
[Database] 조인(Join) (0) | 2023.06.23 |