일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 실행 예외
- try-catch-finally 블록
- 일반 예외
- 예외클래스
- 다중 catch 블록
- 로켓펀치 #취준컴퍼니 #취업 #일상 #취준생
- 예외 처리
- 항해99
- 코딩테스트준비
- 개발자취업
- 99클럽
- til
- 예외
- throws 키워드
- Today
- Total
innn
정규화 총정리 (1)_이상 현상(삽입, 삭제, 수정 이상) 본문
데이터베이스 부분에서 가장 중요한 부분 중 하나고, 단계와 도부이결다조(각 단계별 정규화 특징)까지 외웠지만 내 뇌에 정확히 장착된 느낌은 전혀 아니어서 정리해본다.
믿을 수 있는 책을 기반으로 최대한 정규화에 대한 많은 정보를 필타하면서, 꼭꼭 이해해두록하자~!
정규화란?
잘못 설계된 테이블을 수정해서 정상으로 만드는 과정.
잘못 설계된 테이블엔 삽입, 삭제, 수정(갱신)과 같은 이상현상이 발생할 수 있다.
이상현상은 데이터베이스의 일관성을 훼손하여 중복된 데이터 등 데이터의 무결성이 깨진다. 이를 해결하려면 테이블의 속성 간 함수 종속성을 파악하여 몇 가지 규칙에 따라 테이블을 분해해줘야 한다.
먼저 이상현상에 대해 알아보자. 정규화를 하는 목적이 테이블 설계에서 발생한 이상현상을 제거하기 위해서이므로, 정규화를 배우기 전 이 정규화를 하게된 시초. 그 목적이자 문제점인 "이상현상"에 대해서 우선 파악하자.
이상현상의 3가지 종류
- 삽입이상
- 삭제이상
- 수정(갱신)이상
삽입이상
: 투플에 데이터를 삽입할 때 NULL값이 입력됨
삭제이상
: 하나의 데이터를 삭제하려다 다른 데이터까지 연쇄 삭제현상이 일어남.
수정이상
: 수정 시 데이터의 일관성이 깨지는 현상이 발생.
이렇듯, 이상현상이 발생한 테이블은 SELECT 검색과 같은 SQL문의 결과가 틀리거나, 원하는 목적의 결과가 나오지 않는 등 문제가 발생한다.
학생수강 테이블에서 현재까진 검색에 무리가 없다.
박지성 학생이나 장미란 학생의 수강 과목 혹은 학과는 SELECT 문을 통해 찾을 수 있다.
그러나 이 테이블은 삭제, 삽입 수정 등 테이블에 저장된 내용을 조작할 때 문제가 발생한다.
삭제이상의 예
장미란 학생이 스포츠경영학 과목의 수강을 취소했다.
수강과목의 강좌이름을 삭제하기 위해서 장미란 학생의 3번 라인 투플을 삭제하자, 그녀의 학생번호, 학과 등 개인정보까지 연쇄 삭제가 되었다. 수강을 취소하려던 의도는 달성했지만, 기본정보까지 사라진 것이다.
이렇듯 삭제이상이란 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상을 말한다. 영어 원어로 Delition Anomaly라고 되있는 걸 보면 좀 더 직관적으로 와닿는다. 비정상적 삭제 > 삭제를 위한 삭제를 하려다 다른 정상 데이터까지 삭제해버린 비정상적 삭제가 발생한 것이다. 이를 연쇄삭제Triggered Deletion이라고 한다.
삽입이상의 예
박세리 학생이 체육학과에 새로 입학했다.
학생 수강 테이블에 그녀의 입학 데이터를 입력하기 위해서 INSERT문으로 (학생 번호, 학생 이름, 학과, 주소) 정보를 삽입했다. 하지만 신입학생이므로 아직 수강신청은 하지 않은 상태라, (강좌이름, 강의실) 속성에는 NULL값을 입력했다. NULL값은 본디 특별한 존재다. 존재하지 않아야하는 존재이다. ㅋㅋ... NULL값은 데이터 없음 상태를 의미하기 때문이다. 따라서 NULL값은 테이블에는 가능한 한 없어야 한다.
이렇듯 삽입이상이란 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL값을 입력해야하는 현상을 말한다. NULL값이 발생하는 문제가 생기는 것이다.
수정이상의 예
박지성 학생의 주소가 대한민국 서울로 바뀌었다.
보통 UPDATE 문으로 주소를 수정할 경우 박지성 데이터가 가진 두 개의 투플이 모두 바껴야한다. 만약 하나의 박지성 투플만 바뀌게 될 경우? 문제가 발생하는 것이다. SELECT문으로 조회했을 때 서로 다른 주소값이 조회되어 데이터의 일관성이 깨지는 문제가 발생하기 때문이다.
이렇듯 수정이상이란 투플 수정 시 중복으로 저장된 데이터 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상이다.
'CS > 데이터베이스' 카테고리의 다른 글
2022.07.20 (0) | 2022.07.20 |
---|---|
2022.07.19 (0) | 2022.07.19 |
데이터 베이스 시스템의 개념 (0) | 2022.07.17 |
2022.07.14 (0) | 2022.07.17 |
2022.07.07 (0) | 2022.07.17 |