솜은 코튼
[정보처리기사] 3장 데이터 입출력 구현 본문
01. 데이터 모델
: 현실 세계의 정보들은 표현하기 위해 단순화 추상화하여 표현한 개념적 모형
# 구성 요소
개체 : 개념이나 정보 단위 같은 현실 세계의 대상체
속성 : 가장 작은 논리적 단위로 데이터 항목 또는 필드에 해당
관계 : 개체 간의 관계 또는 속성 간의 논리적인 연결
02. 데이터 모델의 종류
개념적 데이터 모델 : 개체타입과 이 개체 타입들 간의 관계를 이용해 현실세계를 표현
논리적 데이터 모델 : 컴퓨터 세계의 환경에 맞도록 표현
물리적 데이터 모델 : 데이터가 저장되는 방법 정의
03. 이상
: 종속으로 인한 데이터 중복 발생으로 테이블 조작 시 문제 발생하는 현상
# 종류
삽입 이상 : 원하지 않는 값들로 인해 삽입할 수 없는 현상
삭제 이상 : 의도와는 상관없는 값들도 함께 삭제되는 현상
갱신 이상 : 일부 튜플의 정보만 갱신되어 정보 불일치성이 생기는 현상
04. 함수적 종속
: Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다는 표기는 'X->Y'
(X는 결정자, Y는 종속자)
완전 함수적 종속 : 속성 Y가 다른 집한 X 전체에 대해 함수적 종속이면서 진부분 집합Z에도 함수적 종속이 아닐 때
부분 함수적 종속 : 속성 Y가 다른 집한 X 전체에 대해 함수적 종속이면서 진부분 집합Z에도 함수적 종속일 때
05. 정규화
: 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
(삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것)
제 2정규형
ㅡ ㅡ V V V -> (ㅡ) ㅡ V / (ㅡ) V V
제 3 정규형
ㅡ V V -> ㅡ (V) / (ㅡ) V
BCNF
ㅡ ㅡ V -> ㅡ (ㅡ) / (ㅡ) V
제 4정규형
ㅡ ㅡ ㅡ -> (ㅡ) ㅡ / (ㅡ) ㅡ
(ㅡ는 기본키 표시, ()는 연결된 속성, V는 그 외)
# 정규화 과정
비정규 릴레이션 --(도메인이 원자값)--> 1NF --(부분적 함수 종속 제거)--> 2NF --(이행적 함수 종속제거)-->
3NF --(결정자이면서 후보키가 아닌 것 제거)--> BCNF --(다치 종속성 제거)--> 4NF --(조인 종속성 이용)--> 5NF
# 이행적 함수적 종속 : A->B이고 B->C일 때 A->C를 만족하는 관계
06. 논리 데이터 모델의 물리 데이터 모델로 변환
엔티티를 테이블로 변환 : 논리 데이터 모델에서 정의된 엔티티를 물리 데이터 모델로 변환
# 변환 규칙
엔티티 -> 테이블 / 속성 -> 컬럼 / 주 식별자 -> 기본키 / 외부 식별자 -> 외래키 / 관계 -> 관계
슈퍼타입 기준 테이블 변환
# 장점 : 데이터 액세스 용이 / 서브타입만을 액세스 및 수정가능 / 처리 용이 / 수행 속도 빠름 / SQL 문장 구성 단순
# 단점 : 디스크 저장 공간 증가 / 서브타입에 대한 구분 필요 / 인덱스 효율 감소
서브타입 기준 테이블 변환
# 장점 : 서브타입 속성들의 선택 사양 명확 시 유리 / 서브타입 유형 구분 필요 없음 / 전체 테이블 스캔 시 유리
# 단점 : 수행 속도 감소 / SQL의 통합 어려움 / 부분 범위 처리 곤란 / 통합한 뷰는 조회만 가능
개별 타입 기준 테이블 변환
# 장점 : 저장 공간이 작다 / 테이블에 속한 정보만 조회하는 경우 문장 작성 용이
# 단점 : 슈퍼타입 또는 서브타입 정보 같이 처리하면 항상 조인 발생하여 성능 저하
속성을 컬럼으로 변환
# 일반 속성 변환
# Primary UID를 기본키로 변환 : 물리 데이터 모델의 기본키로 만든다.
# Primary UID(관계의 UID Bar)를 기본키로 변환
# Secondary(Alternate) UID를 유니크키로 변환
관계를 외래키로 변환
(1:1 관계 변환 / 1:M 관계 변환 / N:M 관계 변환 / 1:M 순환 관계 변환)
07. 반정규화
: 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위
(성능, 관리 효율성 향상 / 일관성 및 정합성이 낮고, 과도한 반정규화는 성능을 떨어지게 함)
테이블 통합 : 두 개의 테이블이 많이 조인되는 경우
(1:1 관계 테이블 통합 / 1:N 관계 테이블 통합 / 슈퍼타입·서브타입 테이블 통합)
# 특징 : 레코드 증가로 처리량 증가 / 입력, 수정, 삭제 규칙이 복잡 / 제약조건 설계의 어려움
테이블 분할
# 수평 분할 : 레코드별로 사용빈도 차이가 큰 경우 빈도 따라 분할
# 수직 분할 : 속성 많을 경우 갱신, 자주 조회되는, 크기가 큰, 보안을 적용해야 하는 속성 분할
중복 테이블 추가 : 정규화로 속도 감소, 많은 범위 데이터 자주 처리, 특정 범위 데이터 자주 처리하는 경우
# 집계 테이블의 추가 : 트리거 설정 / 진행 테이블 추가:기본키 설정 / 특정 부분만을 포함하는 테이블 추가
중복 속성 추가 : 데이터 조회 경로 단축, 조인 자주 발생, 데이터의 무결성 확보 어려움, 디스크 공간 추가 필요
08. 인덱스
: 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성
# 특징 : 인덱스 없으면 모든 데이터 확인하는 TABLE SCAN 발생
기본키를 위한 인덱스->기본 인덱스 / 기본 인덱스 아닌 인덱스 -> 보조 인덱스 /
인덱스 키의 순서에 따라 데이터 정렬->클러스터드 인덱스 /
키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않음->넌클러스터드 인덱스
트리 기반 인덱스 : B 트리 인덱스, B+ 트리 인덱스
비트맵 인덱스 : Bit값인 0 또는 1 변환
함수 기반 인덱스 : B+ 트리 인덱스 또는 비트맵 인덱스 생성하여 사용
비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
도메인 인덱스 : 직접 만들어 사용 (=확장형 인덱스)
# 인덱스 설계
대상 테이블, 컬럼 등 선정 -> 효율성 검토 최적화 수행 -> 인덱스 정의서 작성
# 인덱스 대상 테이블 선정 기준
MULTI BLOCK READ 수 / 랜덤 액세스 빈번 / 특정 범위나 순서로 데이터 조회 필요 시 / 순차적 조인 발생
# 인덱스 대상 컬럼 선정 기준
컬럼 분포도 10~15% 이내 / 기본키와 Unique키 제약 조건 사용 / 수정이 빈번하지 않은
# 인덱스 설계 시 고려사항
많이 만들면 오버헤드 발생 / 넓은 범위 처리 시 오버헤드 발생 / 추가적인 저장공간 필요
09. 뷰
: 허용된 자료만을 제한적으로 보여주기 위한 가상 테이블
(조인문 사용 최소화 사용상 편의성 최대화 / 논리적 독립성 제공 / 관리 용이 / 명령문 간단)
# 장점 : 독립성 제공 / 데이터 관리 간단 / 자동 보안 제공
# 단점 : 독립된 인덱스 X / 정의 변경 X / 삽입 삭제, 갱신 제약
# 설계 순서 : 대상 테이블 선정 -> 대상 컬럼 선정 -> 정의서 작성
10. 트랜잭션
: 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
# 특징
원자성 : 모두 반영 아니면 전혀 반영되지 않도록
일관성 : 성공적으로 완료하면 언제나 일관성 있는 상태로 변환
독립성 : 병행 실행되는 경우 다른 트랜잭션의 연산이 끼어들 수 없음
지속성 : 완료된 결과는 영구적으로 반영
11. 클러스터
: 액세스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장
# 특징
- 클러스터링키로 지정된 컬럼 값의 순서대로 저장, 여러 개의 테이블이 하나의 콜러스터에 저장
- 조회 속도 향상 / 입력, 수정, 삭제 성능 감소
- 분포도가 넓을수록 유리
- 저장 공간 절약
- 대용량 처리 트랜잭션은 클러스터링 비추
- 처리 범위 넓은 경우->단일 테이블 클러스터링 / 조인이 많이 발생하는 경우 -> 다중 테이블 클러스터링
# 대상 : 분포도 넓고 / 대량의 범위 자주 조회 / 입력,수정,삭제가 자주 발생하지 않고 /
자주 조인 / ORDER BY,GROUP BY,UNION 빈번
12. 파티션
: 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
# 장점 : 쿼리 성능, 디스크 성능, 속도, 가용성 향상 / 데이터 손상 정도 적음 / 파티션 단위로 입출력 분산
# 단점 : 세심한 관리 요구 / 비용 증가 / 용량 작은 테이블에 파티셔닝 수행 시 성능 감소
# 종류 : 범위 분할 / 해시 분할 / 조합 분할
인덱스 파티션 : 파티션 된 테이블의 데이터를 관리하기 위해 인덱스 나눈 것
# Local Partitioned Index : 테이블 파티션과 인덱스 파티션 1:1 대응
# Global Partitioned Index : 테이블 파티션과 인덱스 파티션 독립적 구성
# Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 컬럼 같다.
# Non-Prefixed Partitioned Index : 인덱션 파티션키와 인덱스 첫 컬럼이 다르다.
13. 테이터베이스 용량 설계
: 데이터가 저장될 공간 정의
(저장공간 효과적 사용 / 확장성 및 가용성, 데이터 접근성 증가 / 병목 현상, 익스텐트 발생 감소)
# 데이터 접근성 향상 방법
- 데이블 스페이스와 인덱스의 테이블 스페이스 분리 구성
- 테이블 스페이스와 임시 테이블 스페이스 분리 구성
- 마스터 테이블과 트랜잭션 테이블로 분류
# 용량 분석 절차
기초 자료 수집, 용량 분석 -> 오브젝트별 용량 선정 -> 테이블과 테이블스페이스 용량 산정 -> 디스크 용량 산정
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 7장 애플리케이션 테스트 관리 (0) | 2020.07.14 |
---|---|
[정보처리기사] 6장 화면 설계 (0) | 2020.07.14 |
[정보처리기사] 5장 서버 프로그램 구현 (0) | 2020.07.14 |
[정보처리기사] 4장 통합 구현 (0) | 2020.07.11 |
[정보처리기사] 2장 요구사항 (0) | 2020.07.11 |