일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 데이터베이스
- 그리디 알고리즘
- SW Expert Academy
- BFS
- 브루트포스
- 구현
- 브루트포스 알고리즘
- oracle
- SWEA
- 깊이우선탐색
- 너비우선탐색
- 백준 알고리즘
- 백준알고리즘
- DP
- Python
- 백트래킹
- DFS
- 너비 우선 탐색
- 다익스트라
- javascript
- 자바스크립트
- 파이썬
- 다이나믹 프로그래밍
- 문자열
- 프로그래머스
- 스택
- 오라클
- 그래프 이론
- 그래프 탐색
- 완전탐색
- Today
- Total
민규의 흔적
[오라클 DB] 정규화와 갱신 이상(update anomaly) 본문
릴레이션 정규화(Normalization)
정규화의 정의는 다음과 같다.
원래의 릴레이션을 무손실 분해함으로써 중복과 갱신 이상을 최소화하여 일관성과 정확성을 유지하는 과정으로,
주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석한다.
릴레이션 정규화가 필요한 이유는 다음과 같다.
부주의한 데이터베이스 설계로 인해,
제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함.
정규화에 대해 자세히 설명하기 전, 갱신 이상에 대한 개념을 숙지할 필요가 있다.
갱신 이상(Update Anomaly)
데이터베이스의 데이터를 수정, 삽입, 삭제하는 과정에서 발생하는 문제로,
각각 수정 이상, 삽입 이상, 삭제 이상이 존재한다.
수정 이상(modification anomaly)
중복 데이터 중에 일부만 수정하면 데이터 불일치가 발생하는 문제이다.
특정 A, B 릴레이션에 특정 중복 데이터가 존재한다고 가정했을 때 한 릴레이션의 데이터만 수정하고 다른 릴레이션의 데이터를 수정하지 않는다면 두 데이터가 불일치하는 문제가 발생할 수 있다.
삽입 이상(insertion anomaly)
새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제이다.
만약 사원 릴레이션이 존재하고 부서 릴레이션이 존재하지 않는다고 가정했을 때, 사원 릴레이션에서 각 사원이 속해있는 부서를 나타내기 위해 부서이름 애트리뷰트가 존재할 것이다.
이런 상황에서 만약 새로운 부서인 '회계' 부서를 창설하고 싶다면, 부서 릴레이션이 없기 때문에 사원 릴레이션에 임의의 가짜 데이터 튜플을 삽입하여 해당 튜플의 부서이름을 '회계'로 지정하는 방법밖에 존재하지 않는다.
새로운 부서를 창설하기 위해 가짜 데이터를 삽입하는 위와 같은 예를 삽입 이상이라고 볼 수 있다.
삭제 이상(deletion anomaly)
데이터를 삭제하면 유용한 데이터까지 함께 삭제되는 데이터 손실 문제이다.
삽입 이상에서 들었던 예시에서, 만약 '회계' 부서에 여러 사원들이 존재하고 해당 부서를 삭제하고자 결정했다면 부서이름 애트리뷰트 값이 '회계'인 모든 튜플들이 삭제되며 아직 유효한 사원들 정보까지 덩달아 삭제될 것이다.
부서를 없애기 위해 튜플을 삭제하니 아직 퇴사하지 않은 해당 부서 소속 사원들의 정보마저 삭제되는 위와 같은 예를 삭제 이상이라고 볼 수 있다.
'데이터베이스' 카테고리의 다른 글
[오라클 DB] 릴레이션 분해와 정규형(Normal Form) (2) | 2023.11.01 |
---|---|
[오라클 DB] 릴레이션 분해와 결정자, 함수적 종속성 (2) | 2023.11.01 |
[오라클 DB] 데이터베이스 실제 논리적 설계 및 알고리즘 적용 (0) | 2023.10.31 |
[오라클 DB] 논리적 설계 단계 (2) | 2023.10.31 |
[오라클 DB] 데이터베이스 실제 설계 및 개념적 데이터 모델(ER 다이어그램) (4) | 2023.10.23 |