-
(5) SQL AnomalyCS 지식/○ Database 2021. 7. 3. 14:09
1. 이상현상(Anomaly)란?
1-1) 정의
SQL의 스키마에 맞게 Record( aka. Tuple)가 추가되어야 하는데
잘못된 테이블/스키마 설계로 인해 Anomaly가 나타날 수 있음
2. 예시
※ 예제 데이터
Field 데이터 : {Student ID, Course ID, Department, Course ID, Grade}
2-1) 삽입 이상 (Insertion Anomaly)
(a) 정의
기본키로 정의된 상황에서 불필요한 데이터를 추가해야지 삽입할 수 있는 상황
(b) 상황
키 참조 : https://korshika.tistory.com/159?category=970464
> 기본키가 {Student ID, Course ID} 인 경우
Course를 수강하지 않은 학생은 Course ID가 없어서 Null로 선택해야하는 상황이 생기고,
기본키는 Null이 될 수 없으므로 Table에 레코드로서 추가될 수 없음
꼭 추가해야 한다면 '미수강'과 같은 Course ID dummy를 만들어야 함
2-2) 갱신 이상 (Update Anomaly)
(a) 정의
변경해야하는 데이터의 일부만 변경하여 데이터가 불일치하는 모순의 문제
(b) 상황
> 어떤 학생의 전공(Department)이 "컴퓨터"에서 "음악"으로 바뀌는 경우
같은 테이블 안에서 해당 학생의 전공을 모두 바꿔주어야 하는데, 이런 것을 놓치는 경우 갱신이상 발생
2-3) 삭제 이상(Deletion Anomaly)
(a) 정의
튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제
튜플 속성의 일부만 삭제하고 싶지만, 삭제를 원치않는 다른 속성들까지 함께 삭제되어 버리는 경우
(b) 상황
> 만약 어떤 학생이 수강을 철회하는 경우
{Student ID, Course ID, Department, Course ID, Grade}의 정보 중
Student ID, Department 와 같은 학생에 대한 정보도 함께 삭제
참조
https://gyoogle.dev/blog/computer-science/data-base/Anomaly.html
반응형'CS 지식 > ○ Database' 카테고리의 다른 글
(7) DB Transaction (0) 2021.07.07 (6) Index (0) 2021.07.03 (4) SQL vs NO-SQL (0) 2021.07.02 (3) SQL Injection (0) 2021.07.02 (2) Join (0) 2021.06.30