1. 논리데이터 저장소 확인
데이터 모델
현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다.
구성요소
개체 | 데이터 베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체 |
속성 | 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당 |
관계 | 개체 간의 관계 또는 속성 간의 논리적인 연결 의미 |
데이터 모델의 종류 (개 - 논 - 물)
개념적 데이터 모델 | 현실 세계에 대한 인식을 추상적 개념으로 표현 |
논리적 데이터 모델 | 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환 |
물리적 데이터 모델 | 실제 컴퓨터에 데이터가 저장되는 방법을 정의하는 물리 데이터베이스 설계 과정 |
데이터 모델에 표시할 요소
구조 | 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 |
연산 | 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로 데이터베이스를 조작하는 기본 도구 |
제약 조건 | 데이터 베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 |
이상
테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미한다.
삽입 이상 | 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상 |
삭제 이상 | 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 연쇄 삭제되는 현상 |
갱신 이상 | 테이블에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상 |
함수적 종속
어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할 때, 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X->Y로 표기한다.
X->Y의 관계를 갖는 속성 X와 Y에서 X를 결정자라고 하고, Y를 종속자라고 한다.
완전 함수적 종속 | 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진부분 집합 Z에도 함수적 종속이 아닐 때 속성 Y는 속성 집합 X에 완전 함수적 종속이라고 한다. |
부분 함수적 종속 | 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 X의 임의의 진부분 집합에 대해 함수적 종속일 때, 속성 Y는 속성 집합 X에 부분 함수적 종속이라고 함 |
정규화
테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정
정규화 과정 (도-부-이-결-다-조, 두부이걸다줘?로 외우면 잘 외워진다!)
비정규 릴레이션 -> 1NF | 도메인이 원자값 |
1NF -> 2NF | 부분적 함수 종속 제거 |
2NF -> 3NF | 이행적 함수 종속 제거 |
3NF -> BCNF | 결정자이면서 후보키가 아닌 것 제거 |
BCNF -> 4NF | 다치 종속 |
4NF -> 5NF | 조인 종속성 이용 |
2.2 물리 데이터 저장소 설계
논리 데이터 모델의 물리 데이터 모델 변환
엔티티 테이블로 변환 | 논리 데이터 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환 |
슈퍼타입 기준 테이블 변환 | 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 변환 |
서브타입 기준 테이블 변환 | 슈퍼타입의 속성들을 각각의 서브타입에 추가하여 서브타입들을 개벌적인 테이블로 변환 |
개별타입 기준 테이블 변환 | 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환 |
속성을 컬럼으로 변환 | 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환 |
관계를 외래키로 변환 | 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환 |
반정규화
시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위이다.
반정규화 방법
테이블 통합 | 두 개의 테이블이 조인되는 경우가 많아 하나로 합쳐 사용하는 것이 성능 향상에 도움이 되는 경우 수행 |
테이블 분할 | - 수평 분할 : 레코드를 기준으로 테이블 분할. 레코드 별로 사용 빈도 차이가 큰 경우에 분할함. - 수직 분할 : 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블 분할 |
중복 테이블 추가 | 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가해 작업의 효율성 향상 - 추가 방법 : 집계 테이블 추가, 진행 테이블 추가, 특정 부분만 포함하는 테이블 추가 |
중복 속성 추가 | 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기위해 자주 사용하는 속성을 하나 더 추가하는 것 |
인덱스
데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
클러스터드 인덱스 | 인덱스키의 순서에 따라 데이터가 정렬되어 저장 |
넌클러스터드 인덱스 | 인덱스의 키 값만 정렬되고 실제 데이터는 정렬되지 않음 |
인덱스의 구분
트리 기반 인덱스 | 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로, 주로 B+트리 인덱스를 활용 |
비트맵 인덱스 | 인덱스 컬럼의 데이터를 Bit값인 0또는 1로 변환하여 인덱스의 키로 사용 |
함수 기반 인덱스 | 컬럼의 값 대신 컬럼에 특정함수나 수식을 적용해 산출된 값을 사용. B+트리나 비트맵 인덱스를 생성하여 사용한다. |
비트맵 조인 인덱스 | 다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다름 |
도메인 인덱스 (=확장형 인덱스) | 개발자가 필요한 인덱스를 직접 만들어 사용 |
뷰
- 사용자에게 접근이 허용된 자료만들 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 저장장치 내에 물리적으로 존재하지 않지만, 있는 것처럼 간주된다.
- CEATE문으로 정의하고, DROP 문으로 제거한다.
- 데이터의 논리적 독립성을 제공한다.
트랜잭션
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산을 의미한다.
원자성 | 트랜잭션 연산은 데이터베이스에 모두 반영 되도록 완료(Commit) 되든지, 전혀 반영되지 않도록 복구(Rollback) 되어야 한다. |
일관성 | 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함 |
독립성 | 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음 |
지속성 | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함 |
클러스터
- 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 클러스터링 키로 지정된 컬럼 값의 순서대로 저장되고, 여러 개의 테이블이 하나의 클러스터에 저장된다.
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
단일 테이블 클러스터링 | 처리 범위가 넓은 경우 |
다중 테이블 클러스터링 | 조인이 많이 발생하는 경우 |
파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위로 나누는 것
파티셔닝 방식에 따른 파티션의 종류
범위 분할 | 지정한 열의 값을 기준으로 분할 |
해시 분할 | 해시 함수를 적용한 결과 값에 따라 데이터를 분할 |
조합 분할 | 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할 |
인덱스 파티션 : 파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것
데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 테이블에 저장할 데이터양, 인덱스, 클러스터 등이 차지하는 공간등을 예측해 반영해야 한다.
- 데이터 베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높인다.
데이터 접근성을 향상시키는 설계 방법
- 테이블의 테이블스페이스와 인덱스의 테이블 스페이스를 분리하여 구성
- 테이블스페이스와 임시 테이블스페이스를 분리하여 구성
- 테이블을 마스터 테이플과 트랜잭션 테이블로 분류
'ETC > 정보처리기사' 카테고리의 다른 글
정보처리기사 실기 정리 4. 서버 프로그램 구현 (1) | 2023.04.21 |
---|---|
정보처리기사 실기 정리 1. 요구사항 확인 (1) | 2023.04.21 |