IT/정보처리기사실기 공부

[정보처리기사실기] 데이터 모델, 정규화, 데이터 모델 변환, 반정규화

phobi-k 2020. 9. 29. 21:13

1. 데이터 모델의 개념 (B)

  • 데이터 모델의 정의 : 현실 세계의 정보를 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다. 
  • 데이터 모델 구성 요소
    • 개체(Entity) : 데이터베이스에 표현하려는 것으로 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체이다. (테이블)
    • 속성(Attribute) : 데이터의 가장 작은 논리적 단위 (데이터 항목 or 데이터 필드) (컬럼)
    • 관계 : 개체 간의 관계 또는 속성 간의 논리적 연결을 의미
  • 데이터 모델 종류
    • 개념적 데이터 모델 : 인간의 이해를 돕기위해 현실 세계에 대한 인식을 추상적 개념으로 표현 (E-R모델)
    • 논리적 데이터 모델 : 개념적 데이터 모델의 결과를 컴퓨터가 이해할 수 있도록 변환하는 것
    • 물리적 데이터 모델 : 논리 데이터 모델에서 설계한 개체, 속성, 관계등을 테이블, 컬럼, 관계로 변환
  • 데이터 모델에 표시할 요소
    • 구조: 데이터 구조 및 정적 성질 표현
    • 연산: 데이터베이스를 조작하는 기본 도구
    • 제약 조건: 실제 데이터의 논리적인 제약 조건

2. 이상/함수적 종속/정규화 (A)

  • 이상: 일부 속성들의 종속으로 (완전/부분 함수적 종속, 이행 함수적 종속 등) 인해 데이터의 중복이 발생하고 이 중복으로 인해 문제가 발생하는 현상
    • 삽입이상 : 모르는 컬럼으로 인해 삽입이 불가능
    • 삭제이상 : 원하지 않는 튜플도 같이 삭제되는 연쇄 삭제 발생
    • 갱신이상 : 일부 튜플만 갱신되어 정보 불일치성 발생
  • 함수적 종속: 
    • A->B : B는 A에 함수적 종속이다. 
      • A: 결정자, B: 종속자
    • 완전 함수적 종속 : 2개의 결정자를 모두 종속하는 경우
    • 부분 함수적 종속 : 둘중 하나의 결정자에만 종속하는 경우 
  • 정규화의 개념 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 것
  • 정규화 과정 : 도 - 부 - 이 - 결(BCNF) - 다 - 조
    • 부분 함수적 종속 제거 (제 2정규화) : 둘 중 하나의 결정자에만 종속하는 경우 테이블을 분리한다. ( 결정자를 부분 함수적 종속이 없도록 분리해준다)
    • 이행 함수적 종속 제거 (제 3정규화) : A->B 이고 B->C 이면 A->C 를 만족하는 관계를 제거한다.

3. 논리 데이터 모델의 물리 데이터 모델로 변환 (A)

  • 테이블의 구성 요소
    • 로우 ( 튜플, 인스턴스, 어커런스)
    • 컬럼 (속성)
    • 기본키 (후보키 중에서 선택한 주키)
    • 외래키 (다른 릴레이션의 기본키)

  • 엔티티를 테이블로 변환
  • 슈퍼타입/서브타입을 테이블로 변환
    • 슈퍼타입 기준 테이블 변환 : 서브타입 테이블을 슈퍼타입에 통합
    • 서브타입 기준 테이블 변환 : 슈퍼타입의 속성을 각각의 서브타입에 추가
    • 개별타입 기준 테이블 변환 : 각각 개별적인 테이블로 변환 
  • 속성을 컬럼으로 변환
    • Primary UID (주 식별자) 를 기본키로 변환
    • Primary UID(관계의 UID Bar : 다른 엔티티와의 관계로 인해 생성된 식별자)를 기본키로 변환
    • Secondary(Alternate) UID 를 유니크키로 변환
  • 관계를 외래키로 변환
    • 1:1 관계 : 개체 A의 기본키를 B의 외래키로 추가하거나 그 반대
    • 1:M 관계 : ○가 있는 곳에 외래키로 추가
    • N:M 관계 : 두 기본키를 가지고 있는 별로의 릴레이션 생성
    • 1:M 순환관계: 자신의 기본키를 참조하는 외래키 컬럼 추가(계층구조, 재귀)

4. 반정규화 (B)

  • 개념: 시스템의 성능 향상, 개발의 편의성 등을 위해 정규화된 데이터 모델을 통합, 분리, 중복하는 과정으로 의도적으로 정규화 원칙을 위해하는 것
  • 테이블 통합: 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합치는 것
  • 테이블 분할
    • 수평 분할 : 레코드(Row)를 기준으로 분할
    • 수직 분할 : 속성을 기준으로 분할
  • 중복 테이블 추가 : 여러 테이블에서 데이터를 추출해야 할 때
    • 정규화로 인해 수행 속도가 느려진 경우
    • 많은 범위의 데이터를 자주 처리해야 하는 경우
    • 특정 범위의 데이터만 자주 처리해야 하는 경우
  • 중복 속성 추가 : 테이블을 조인할 때 데이터를 조회하는 경로를 단축위해 사용
    • 조인이 자주 발생하는 속성인 경우
    • 접근 경로가 복잡한 속성인 경우
    • 액세스의 조건으로 자주 사용되는 속성인 경우