본문 바로가기

자격증/정보처리기사 - 실기

데이터 입/출력 구현

728x90

< 데이터 모델 >

현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화/추상화

● 구성 : 개체, 속성, 관계

● 종류 : 개념적, 논리적, 물리적

● 표시할 요소 : 구조, 연산, 제약 조건

- 개체 : 현실 세계의 대상체

- 속성 : 데이터의 가장 작은 논리적 단위

- 관계 : 개체 간 관계

- 개념적 데이터 모델 : 현실 세계에 대한 인식을 추상적으로 표현( E-R 모델 )

- 논리적 데이터 모델 : 데이터 모델

 

< 논리적 데이터 모델 품질 검증 >

1. 개체 품질 검증 항목 : 개체의 주 식별자, 개체 간 상호 배타성, 개체의 정규화 여부

2. 속성 품질 검증 항목 : 속성의 값 존재 여부, 반복되는 속성, 다치 종속 속성

3. 관계 품질 검증 항목 : 노드의 기수성과 선택성, 중복된 관계, 참조 무결성 여부

- 구조 : 데이터 구조 및 정적 성질

- 연산 : 데이터를 처리하는 작업 명세

- 제약 조건 : 실제 데이터의 논리적 제약 조건

 

< 이상 >

일부 속성들의 종속으로 인해 데이터의 중복이 발생

● 삽입 이상    ● 삭제 이상    ● 갱신이상

 

< 함수적 종속 >

ex. A 는 B 만 연관되지만 B 는 A 이외에 C 랑도 연관될 수 있다.( A -> B )

=> A : 결정자 B : 종속자

 

< 완전 함수적 종속 >

한 릴레이션에 있는 모든 결정자를 모두 종속하는 경우

 

< 부분 함수적 종속 >

한 릴레이션에 있는 결정자 중 몇 개에만 종속하는 경우

 

< 정규화 >

테이블 무손실 분해

● 정규화 과정

1. 제 1 정규형 : 도메인 원자 값

2. 제 2 정규형 : 부분적 함수 종속 제거

3. 제 3 정규형 : 이행적 함수적 종속 만족 X

( 이행적 함수적 종속 :  A -> B 이고 B -> C 이면 A -> C 이다. )

4. BCNF : 결정자이면서 후보키 아닌 것 제거

5. 제 4 정규형 : 다중 값 종속( 다치 종속 )

6. 제 5 정규형 : 조인 종속

 

< 논리 데이터 모델 -> 물리 데이터 모델 >

● 엔티티를 테이블로 변환 : 변환 후 테이블 목록 정의서 작성

- 엔티티 -> 테이블   - 속성 -> 컬럼   - 주 식별자 -> 기본 키   - 외부 식별자 -> 외래키   - 관계 -> 관계

● 슈퍼타입/서브타입을 테이블로 변환

- 슈퍼타입 기준 테이블 변환 : 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 만듬

- 서브타입 기준 테이블 변환 : 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만듬

- 개별타입 기준 테이블 변환 : 슈퍼타입과 서브타입 테이블들은 1:1 관계 형성

● 속성을 컬럼으로 변환

- Primary UID를 기본키로 변환

- 다른 엔티티와의 관계로 생성된 Primary UID를 기본키로 변환

- Secondary UID 및 Alternate Key는 유니크키로 변환

 

< 반정규화 >

정규화 된 데이터 모델을 통합, 중복, 분할하는 과정, 의도적으로 정규화 원칙 위배

● 테이블 통합 : 두 개의 테이블을 이용하여 항상 조회 수행할 경우

● 테이블 분할 : 레코드 별로 사용 빈도 차이가 크거나, 테이블에 속성이 너무 많을 경우

● 중복 테이블 추가 : 여러 테이블에서 데이터를 추출하여 사용, 다른 서버에 저장된 테이블을 이용할 경우

-> 정규화로 수행 속도가 느려질 경우   -> 많은 범위 데이터를 자주 처리할 경우

-> 특정 범위 데이터만 자주 처리할 경우   -> 처리 범위를 줄이지 않고 수행 속도 개선 못할 경우

 

< 인덱스 >

레코드를 빠르게 접근하기 위해 < 키 값, 포인터 > 쌍으로 구성

● 트리 기반 인덱스 : 블록들이 트리 구조를 이룸

- B 트리 인덱스 : 루트 노드에서 하위 노드로 키 값 크기 비교하며 찾음

- B+ 트리 인덱스 : 인덱스 세트( 단말 노드에 있는 키 값을 찾아가는 경로 제공 )와 순차 세트( = 단말 노드, 해당 데이터 레코드의 주소를 가리킴 )로 구성

● 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit 값인 0 or 1로 변환하여 인덱스 키로 사용, Row의 주소 제공, 성능 향상

● 함수 기반 인덱스 : 특정 함수나 수식을 적용하여 산출된 값 사용

● 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성

● 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용

● 클러스터드 인덱스 : 데이터 삽입/삭제 시 데이터 재정렬, 한 개의 릴레이션에 하나의 인덱스만 생성 가능

● 넌클러스터드 인덱스 : 클러스터드 인덱스에 비해 검색 속도 저하, 한 개의 릴레이션에 여러 개의 인덱스 생성 가능

 

< 뷰 >

사용자에게 접근이 허용된 자료만 제한적으로 보여줌, 가상 테이블

● 특징

- 물리적 구현 X

- 논리적 독립성 제공

- 관리 용이

- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입/삭제/갱신 가능

 

< 클러스터 >

데이터 액세스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법

● 특징

- 조회 속도만 향상

- 데이터의 분포도가 넓을수록 유리

- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간 절약

- 클러스터링 된 테이블은 클러스터링키 열을 공유하므로 저장 공간 줄어듬

- 대용량 처리 트랜잭션은 클러스터링 하지 않는 것이 좋음

- 처리 범위가 넓을 경우 단일 테이블 클러스터링, 조인 많을 경우 다중 테이블 클러스터링

- 파티셔닝 된 테이블은 클러스터링 불가

● 클러스터 대상 테이블

- 분포도 넓은   - 대량 범위 자주 조회   - 입력/수정/삭제가 자주 발생하지 않는   - 자주 조인

 

< 파티션 >

대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것

● 장점 : 쿼리 성능 향상, 디스크 성능 향상, 시스템 장애 시 데이터 손상 최소

● 단점 : 세심한 관리, 테이블 간 조인 비용 증가, 용량이 작은 테이블 파티셔닝 시 성능 저하

● 종류

- 범위 분할 : 지정한 열 값 기준 분할

- 해시 분할 : 해시 함수 적용하여 분할, 특정 데이터 위치 파악 불가

- 조합 분할 : 범위 분할 후 해시 함수로 다시 분할

● 인덱스 파티션

- 테이블 종속 여부에 따라

1. Local Partitioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응

2. Global Prtitioned Index : 테이블 파티션과 인덱스 파티션이 독립적

- 인덱스 파티션키 컬럼의 위치에 따라

1. Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 번째 컬럼이 같다.

2. Non-Prefixed Partition Index : 인덱스 파티션키와 인덱스 첫 번째 컬럼이 다르다.

'자격증 > 정보처리기사 - 실기' 카테고리의 다른 글

화면 설계  (0) 2020.10.01
서버 프로그램 구현  (0) 2020.09.30
통합 구현  (0) 2020.09.30
요구사항 확인  (0) 2020.09.27
프로그래밍 언어 활용  (0) 2020.09.20