2020 정보처리기사 실기 요약 정리 - 데이터 입/출력 구현

minidoo·2020년 9월 23일
0

정보처리기사

목록 보기
7/8
post-thumbnail

데이터 모델의 개념

  1. 데이터 모델의 정의
  • 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
  • 데이터 모델의 구성 요소: 개체, 속성, 관계
  • 데이터 모델의 종류: 개념적 / 논리적 / 물리적 데이터 모델
  • 데이터 모델에 표시할 요소: 구조, 연산, 제약 조건
  1. 데이터 모델의 구성 요소
  • 개체: 데이터베이스에 표현하려는 것, 현실 세계의 대상체
  • 속성: 데이터의 가장 작은 논리적 단위, 데이터 항목 또는 데이터 필드
  • 관계: 개체 간의 관계, 속성 간의 논리적인 연결
  1. 개념적 데이터 모델 / 논리적 데이터 모델
  • 개념적 데이터 모델: 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
  • 논리적 데이터 모델: 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정
  1. 데이터 모델에 표시할 요소
  • 구조: 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
  • 연산: 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
  • 제약 조건: 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

이상/함수적 종속/정규화

  1. 이상(Anomaly)
  • 테이블에서 일부 속성들이 종속으로 인해 데이터의 중복이 발생하고 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
  • 삽입 이상, 갱신 이상, 삭제 이상
  1. 함수적 종속
  • 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관
  • Y는 X에 함수적 종속, X가 Y를 함수적으로 결정, X → Y
  • X: 결정자, Y: 종속자
  1. 정규화(Normalization)
  • 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
  • 제 1정규형
    - 모든 속성의 도메인이 원자 값
    - 다중 값 속성 제거
  • 제 2정규형
    - 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
    - 부분적 함수 종속 제거
  • 제 3정규형
    - 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
    - 이행적 함수적 종속: A → B, B → C ⇒ A → C
  • BCNF
    - 모든 결정자가 후보키인 정규형 / 결정자이면서 후보키가 아닌 것 제거
  • 제 4정규형
    - 다치 종속 ( A →→ B ) 제거
  • 제 5정규형
    - 조인 종속성 이용

논리 데이터 모델의 물리 데이터 모델로 변환

  1. 테이블
  • Row(행): 튜플, 인스턴스
  • Column(열): 속성 항목에 대한 값 저장
  • 기본키(Primary Key), 외래키(Foreign Key)
  1. 변환 규칙
  • 엔티티 → 테이블
  • 속성 → 컬럼
  • 주 식별자 → 기본키 / 외부 식별자 → 외래키
  • 관계 → 관계
  1. 슈퍼타입 기준, 서브타입 기준, 개별타입 기준 테이블 변환
  2. Primary UID를 기본키로 변환, Secondary UID를 유니크키로 변환

반정규화

  1. 반정규화
  • 정규화된 데이터 모델을 통합, 중복, 분리하는 과정, 의도적으로 정규화 원칙 위배
  • 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
  1. 테이블 통합: 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에
    도움이 될 경우

  2. 테이블 분할: 수직(속성 기준) 또는 수평(레코드 기준)으로 분할

  3. 중복 테이블 추가

  • 정규화로 인해 수행 속도가 느려지는 경우
  • 많은 범위의 데이터를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리해야 하는 경우
  1. 중복 속성 추가
  • 조인이 자주 발생하는 속성인 경우
  • 접근 경로가 복잡한 속성인 경우
  • 액세스의 조건으로 자주 사용되는 속성인 경우

인덱스 설계

  1. 인덱스(Index)
  • 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
    • 클러스터드 인덱스: 인덱스 키의 순서에 따라 데이터가 정렬
    • 넌클러스터드 인덱스: 인덱스 키 값만 정렬, 실제 데이터는 정렬되지 않는 방식
  1. 트리 기반 인덱스
  • 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
  • B 트리 인덱스, B+ 트리 인덱스(상용 DBMS)
  1. 비트맵 인덱스
  • 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
  • 분포도가 좋은 컬럼에 적합
  1. 함수 기반 인덱스
  • 컬럼 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것
  • B+ 트리 인덱스, 비트맵 인덱스를 생성하여 사용
  1. 비트맵 조인 인덱스
  • 다수의 조인된 객체로 구성된 인덱스
  1. 도메인 인덱스
  • 개발자가 필요한 인덱스를 직접 만들어 사용하는 것

뷰 설계

  1. 뷰(View)
  • 사용자들에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블
  1. 뷰의 장/단점

클러스터 설계

  1. 클러스터(Cluster)
  • 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
  • 데이터 조회 속도는 향상시키지만, 입력, 수정, 삭제에 대한 성능은 저하
  • 데이터 분포도가 넓을수록 유리
  • 처리 범위가 넓은 경우, 단일 테이블 클러스터링 / 조인이 많이 발생하는 경우, 다중 테이블 클러스터링
  1. 클러스터 대상 테이블
  • 분포도가 넓은 테이블
  • 대량의 범위를 자주 조회하는 테이블
  • 입력, 수정, 삭제가 자주 발생하지 않는 테이블
  • 자주 조인 되어 사용되는 테이블
  • ORDER BY, GROUP BY, UNION이 빈번한 테이블

파티션 설계

  1. 파티션(Partition)
  • 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
  1. 파티션의 종류
  • 범위 분할: 지정한 열의 값을 기준으로 분할 ex) 일별, 월별, 분기별
  • 해시 분할: 데이터를 고르게 분산 ex) 고객번호, 주민번호
  • 조합 분할: 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할
  1. 인덱스 파티션
  • Local Partitioned Index: 테이블 파티션과 인덱스 파티션이 1:1 대응
  • Global Partitioned Index: 테이블 파티션과 인덱스 파티션이 독립적
  • Prefixed Partitioned Index: 인덱스 파티션키와 인덱스 첫 번째 컬럼이 같음
  • Non-Prefixed Partitioned Index: 인덱스 파티션키와 인덱스 첫 번째 컬럼이 다름

데이터베이스 용량 설계

  1. 데이터베이스 용량 설계의 목적
  • 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
  • 데이터 접근성 향상시키는 설계 방법
    - 테이블의 테이블스페이스와 인덱스의 테이블스페이스를 분리하여 구성
    - 테이블스페이스와 임시 테이블스페이스를 분리하여 구성

0개의 댓글