< 데이터 모델 >
현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화/추상화
● 구성 : 개체, 속성, 관계
● 종류 : 개념적, 논리적, 물리적
● 표시할 요소 : 구조, 연산, 제약 조건
- 개체 : 현실 세계의 대상체
- 속성 : 데이터의 가장 작은 논리적 단위
- 관계 : 개체 간 관계
- 개념적 데이터 모델 : 현실 세계에 대한 인식을 추상적으로 표현( 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 |