안녕하세요 성조입니다.
이 포스팅은 개인이 학습한 것을 정리하여 포스팅한 내용이므로 100% 명확한 정답이라 볼 수 없습니다.
이번 포스팅에서는 데이터베이스의 이상 현상에 대해서 정리하는 포스팅이 진행됩니다.
이상(Anomaly)이란?
잘못된 Database 설계로 인하여 테이블(Table) 내에서 일부 개체(Entity)의 속성(Attribute) 값들이 데이터 종속성 현상으로 인하여 불필요한 중복 데이터들이 발생된 상황에서 테이블(Table)을 조작할 때 발생하는 현상을 말한다.
이런 이상 현상(Anomaly)의 종류는 3가지로 [삽입, 삭제, 갱신]의 형태가 존재한다. 3가지에 대한 개념은 다음과 같다.
삽입 이상 (Insertion Anomaly)
Table에 데이터를 삽입할 때 원래의 의도와 상관없이 원하지 않는 값들로 인하여 삽입되지 않는 현상을 의미한다.
ex)
위의 이미지의 과목 칼럼의 제약사항은 NOT NULL이 필수인데 NULL 값을 넣으려다 제약조건에 막혀서 테이블에 값을 추가하지 못하게 된 것이다.
삭제 이상 (Deletion Anomaly)
Table의 Tuple 값을 삭제할 때. 의도하지 않은 Tuple(행) 값이 같이 삭제되는 현상을 말한다. 즉, 의도하지 않은 연쇄 삭제가 발생하는 것을 의미한다.
(이런 연쇄 삭제는 의도하지 않는 데이터 손실로 이뤄져서 복구를 못하는 경우. 다른 이상 현상보다 조금 더 치명적일 수 있다고 생각한다.)
ex)
181212학번의 기록을 제거하려 할 때 위 테이블에서 과목 칼럼의 Capstone 값이 같이 제거하게 되면서 Capstone이라는 과목이 같이 연쇄적으로 삭제되는 것을 삭제 이상이라 한다.
갱신 이상 (Update Anomaly)
A Table의 데이터를 수정했는데 B Table이 A Table과 동일한 데이터를 가지고 있을 때. A Table은 데이터가 수정됐으나, B Table은 수정되지 않아서 정보의 불일치성(Inconsistency)이 발생하는 현상을 의미한다.
ex)
학번 칼럼이 기존에 있는 테이블에서 2201111 학번을 가진 "홍길동"이 "홍멋쟁이"로 이름을 개명한 경우. 위 예제 테이블은 2201111 학번의 "홍길동"이라는 이름이 갱신되지 않아서 칼럼의 속성(Attribute) 값들이 달라져서 불일치성이 발생되는 현상을 의미한다.
잘못된 지식 전달 사항이 있는 경우 언제든지 댓글 부탁드리겠습니다!
궁금하신 부분도 언제든 댓글 부탁드립니다!
감사합니다. 다음 포스팅 때 뵙겠습니다!
'Database > Database' 카테고리의 다른 글
[Database] 정규화란? (0) | 2022.04.28 |
---|---|
[Database] DML(Data Manipulation Language)이란? (Lightly) (0) | 2022.04.26 |
[Database] SQL vs NoSQL (0) | 2022.04.11 |
[Database] 함수적 종속성 FD (Funcional Dependency) (2) | 2022.04.04 |
[Project]pet and pet, Database[MySQL], schema (0) | 2022.03.05 |