본문 바로가기

Study/정보처리기사

정보처리기사 실기 2장. 데이터 입출력 구현_4

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. 중복 속성 추가

         자주 사용하는 속성을 하나 더 추가

            ‣ 조인이 자주 발생하는 속성인 경우

            ‣ 접근 경로가 복잡한 속성인 경우

            ‣ 액세스의 조건으로 자주 사용되는 속성인 경우

            ‣ 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우

 

            ‣ 장점 : 조인해서 데이터를 처리할 때 조회 경로 단축

            ‣ 단점 : 데이터의 무결성 확보가 어려움, 디스크 공간 추가 필요