2-13. 이상 / 함수적 종속
• 이상 (Anomaly)
테이블에서 데이터 중복이 발생하고, 이 중복으로 문제가 발생하는 현상
- 이상의 종류
| 1. 삽입 이상 (Insertion Anomaly) | 테이블에 데이터를 삽입할 때, 원하지 않은 값들로 인해 삽입할 수 없게되는 현상 |
| 2. 삭제 이상 (Deletion Anomaly) | 테이블에서 하나의 튜플을 삭제할 때, 연쇄 삭제가 발생하는 현상 |
| 3. 갱신 이상 (Update Anomaly) | 테이블에서 튜플에 있는 속성 값을 갱신할 때, 일부 정보만 갱신되어 정보에 불일치성이 생기는 현상 |
• 함수적 종속 (Fuctional Dependency)
속성 X의 값 각각에 대해 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때
‣ Y는 X에 함수적 종속
‣ X가 Y를 함수적으로 결정
‣ X → Y
‣ X : 결정자(Determinant), Y : 종속자(Dependent)
- 완전 함수적 종속 / 부분 함수적 종속
< 수강 >

(학번, 과목번호) → 성적 : 완전 함수적 종속
학번 → 학년 : 부분 함수적 종속
✓ 완전 함수적 종속 : 기본키에 대해 완전히 종속 적인 경우
✓ 부분 함수적 종속 : 기본키 부분에 대해 종속인 경우
2-14. 정규화 (Normalization)
• 정규화
테이블을 무손실 분해하는 과정
‣ 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용
‣ 최대한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것
• 정규화 과정
| 비정규 릴레이션 | |
| ↓ | 도메인이 원자값 |
| 1NF (제 1정규형) | |
| ↓ | 부분적 함수 종속 제거 |
| 2NF (제 2정규형) | |
| ↓ | 이행적 함수 종속 제거 |
| 3NF (제 3정규형) | |
| ↓ | 결정자이면서 후보키가 아닌 것 제거 |
| BCNF | |
| ↓ | 다치 종속 제거 |
| 4NF (제 4정규형) | |
| ↓ | 조인 종속성 이용 |
| 5NF (제 5정규형) | |
• 제 1 정규형 (1NF ; First Normal Form)
모든 속성의 도메인이 원자값으로만 구성
• 제 2 정규형 (2NF ; Second Normal Form)
모든 속성이 기본키에 대해 완전 함수적 종속 만족
‣ 부분 함수적 종속 제거
• 제 3 정규형 (3NF ; Third Normal Form)
모든 속성이 기본키에 대해 이행적 함수적 종속 제거
✓ 이행적 함수적 종속
A → B 이고 B → C일때, A → C를 만족하는 관계 ⇒ 이 관계를 제거
• BCNF (Boyce-Codd Normal Form)
모든 결정자가 후보키인 정규형
‣ 결정자이면서 후보키가 아닌 것을 제거
• 제 4 정규형 (4NF ; Fourth Normal Form)
다중 값 종속 (다치 종속) 제거
• 제 5 정규형 (5NF ;Fifth Normal Form)
조인 종속성 이용
2-15. 반정규화 (Denirmalization)
• 반정규화
정규화된 데이터 모델을 의도적으로 정규화 원칙을 위배하는 행위
‣ 장점 : 시스템 성능 향상, 관리 효율성 증가
‣ 단점 : 데이터의 일관성 및 정합성 저하, 과도한 경우 성능 저하
- 반정규화 방법
1. 테이블 통합
두 개의 테이블이 조인되어 사용하는 경우가 많은 경우 하나의 테이블로 만들어서 사용
‣ 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
‣ 항상 두 개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
| 1 : 1 관계 테이블 통합 | |
| 1 : N 관계 테이블 통합 | |
| 슈퍼타입 / 서브타입 테이블 통합 | 슈퍼타입 - 상위 개체, 서브타입 - 하위 개체 |
2. 테이블 분할
기존 테이블을 수직 또는 수평으로 분할
- 테이블 분할의 종류
| 수평 분할 | 레코드를 기준으로 테이블을 분할 |
| 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할 | |
| 수직 분할 | 속성을 기준으로 테이블을 분할 |
| 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안을 적용해야하는 속성 분할 |
3. 중복 테이블 추가
작업의 효율성을 향상시키기 위해 테이블을 추가
‣ 여러 테이블에서 데이터를 추출해서 사용해야 하는 경우
‣ 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법
| 집계 테이블의 추가 | 집계 데이터를 위해 테이블 생성하고, 원본 테이블에 트리거를 설정해 사용 |
| 진행 테이블의 추가 | 이력 관리 등의 목적으로 추가하는 테이블 |
| 특정 부분만을 포함하는 테이블의 추가 | 데이터가 많은 테이블의 특정 부분을 새로운 테이블로 생성 |
4. 중복 속성 추가
자주 사용하는 속성을 하나 더 추가
‣ 조인이 자주 발생하는 속성인 경우
‣ 접근 경로가 복잡한 속성인 경우
‣ 액세스의 조건으로 자주 사용되는 속성인 경우
‣ 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우
‣ 장점 : 조인해서 데이터를 처리할 때 조회 경로 단축
‣ 단점 : 데이터의 무결성 확보가 어려움, 디스크 공간 추가 필요
'Study > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 실기 2장. 데이터 입출력 구현_6 (0) | 2023.09.22 |
|---|---|
| 정보처리기사 실기 2장. 데이터 입출력 구현_5 (0) | 2023.09.21 |
| 정보처리기사 실기 2장. 데이터 입출력 구현_3 (0) | 2023.09.21 |
| 정보처리기사 실기 2장. 데이터 입출력 구현_2 (0) | 2023.09.20 |
| 정보처리기사 실기 2장. 데이터 입출력 구현_1 (0) | 2023.09.20 |