데이터베이스 이상현상이란 릴레이션 처리과정에서 불필요한 데이터 중복으로 인해 발생하는 부작용을 말합니다.
이상 현상에는
1. 삽입 이상
2. 삭제 이상
3. 갱신 이상
이 있습니다.
예를 들어 설명해보겠습니다.
한 대학교에서 IT 시스템을 운용하는데
단 하나의 릴레이션만 사용하고 있다고 가정해봅시다. (말만 들어도 이상현상이 생길 것 같습니다)
릴레이션 예시
학번(기본키) | 이름 | 수강과목 번호 | 수강과목 이름 | 교수 이름 |
2020123 | 홍길동 | c103 | 선형대수 | 김지아 |
2020124 | 철수 | e403 | 서양철학의 이해 | 이서준 |
2020125 | 영희 | k114 | 경제학입문 | 한서아 |
2020202 | 이지수 | e403 | 서양철학의 이해 | 이서준 |
1. 삽입 이상
올해 처음으로 박민준 교수의 양자역학의 이해(q291)라는 과목이 개설된다고 합시다.
해당 과목을 릴레이션에 넣어줘야 하는데, 학번이 기본키라 이상한 값을 학번으로 지정해줘야만 데이터베이스에 위의 정보를 입력할 수 있습니다. 예를 들면 <99999, NULL, q291, 양자역학의 이해, 박민준> 이런 튜플을 넣어줘야 할 것입니다.
이처럼 불필요한 데이터를 합께 입력하지 않고서는 입력이 불가능한 상황을 삽입이상이라고 합니다.
2. 갱신 이상
이서준 교수님의 서양철학의 이해(e403)라는 과목명을 서양철학의 진정한 이해(e403)로 바꾸려고 합니다. 이 경우, 2번째 행과 4번재 행의 수강과목 이름을 모두 바꿔줘야 할 것입니다.
만약 서양철학의 이해(e403)인 튜플이 1,000개가 넘어간다고 가정할 때, 일일이 데이터를 수정하다가 일부 수정되지 않을 경우가 발생할 수 있습니다. 이처럼 속성값을 갱신 시, 일부가 수정되지 않아 데이터 불일치가 발생하는 경우를 갱신 이상이라고 합니다.
3. 삭제 이상
홍길동이 듣고 있는 선형대수(c103)은 난이도가 너무 어려워 홍길동만 강의를 수강하고 있다고 합시다. 홍길동도 수업 1회 OT 참석 후, 이건 아닌거 같아 수강철회를 하기로 했습니다.
이 경우, 해당 튜플이 삭제되면 김지아 교수의 선형대수(c103)이라는 데이터도 삭제되버립니다. 홍길동이 유일하게 듣고 있었기 때문에 해당 과목이 삭제되면 김지아 교수의 강의정보도 사라지게 되는 것입니다.
이처럼 삭제할 때 원하지 않는 데이터까지 함께 삭제되어 데이터 손실이 발생할 수 있는 경우를 삭제 이상이라고 합니다.
이상 현상 해결 방법
이상 현상의 주 원인은 릴레이션 안의 불필요한 데이터 중복 때문입니다. 데이터 중복이 발생하는 가장 큰 원인은 릴레이션 안에 너무 많은 속성을 표현하려 하기 때문입니다. 연관성이 낮은 속성들은 릴레이션을 나눠줘야 하는데 이러한 과정을 정규화라고 하고, 종속성에 대한 개념을 알아야 합니다.
종속성은 다음 포스팅을 통해 설명하겠습니다.
참고: MySQL과 모바일 웹으로 만나는 데이터베이스의 정석을 읽고 정리하고 있습니다!
'CS' 카테고리의 다른 글
데이터베이스 정규화 - 종속성 (0) | 2021.10.12 |
---|