데이터 모델

현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
데이터 모델의 구성요소
- 개체( Entity ) : 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 속성( Attribute ) : 데이터의 가장 작은 논리적인 단위
- 관계( Relation ) : 개체 간의 관계 또는 속성 간의 논리적인 연결을 의미

 

데이터 모델의 종류

- 개념적 데이터 모델 : 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정 
- 논리적 데이터 모델 : 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 물리적 데이터 모델 : 실제 컴퓨터에 데이터가 저장되는 방법을 정의하는 물리 데이터베이스 설계 과정

 

데이터 모델에 표시할 요소

- 구조( Structure ) : 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현함
- 연산( Operation ) : DB에 저장된 실제 데이터를 처리하는 작업에 대한 명세
- 제약조건( Constraint ) : DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

 

이상( Anomaly )

테이블에서 일부 속성들의 종속으로 인해 데이터의 중복(Redundancy)이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
이상( Anomaly )의 종류
- 삽입 이상( Insertion Anomaly ) : 테이블에 데이터를 삽입할 때, 의도와 상관없이 원치 않은 값들로 인해 삽입할 수 없게 되는 현상 
- 삭제 이상( Deletion Anomaly ) : 테이블에서 한 튜플을 삭제할 때, 의도와 상관없는 값들도 함께 삭제되는 현상
- 갱신 이상( Update Anomaly ) : 테이블에서 튜플에 있는 속성 값을 갱신할 때, 일부 튜플의 정보만 갱신되어 정보의 불일치성이 생기는 현상

 

함수적 종속( Functional Dependency )

- 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할 때, 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때, Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다하고 X -> Y로 표기한다.
-  X -> Y의 관계에서 X를 "결정자(Determinant)", Y를 "종속자(Dependent)"라고 한다.
- 완전 함수적 종속 : 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서, 속성 집합 X의 어떤 진부분 집합에도 함수적종속이 아닐 때 속성 Y는 속성 집합 X에 "완전 함수적 종속"이라고 한다. 
- 부분 함수적 종속 : 완전함수종속이 아닌 것을 부분 함수 종속이라 한다.

 

정규화( Normalization )

테이블 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
- 정규화 과정
비정규 R -> ( 도메인이 원자값 )
-> 1NF -> ( 부분적 함수 종속 제거 == 완전 함수종속 )
-> 2NF -> ( 이행적 함수 종속 제거 )
-> 3NF -> ( 결정자이면서 후보키가 아닌 것 제거 )
-> BCNF -> ( 다치 종속 )
-> 4NF -> ( 조인 종속성 이용 ) -> 5NF
- 이행적 함수적 종속 : A -> B, B -> C 이면, A -> C를 만족하는 관계

 

반정규화( Denormalization )

시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정
의도적으로 정규화 원칙을 위배하는 행위
반정규화 방법
- 테이블 통합 : 두 테이블간의 조인(join)연산이 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행
- 테이블 분할 : 수평분할(레코드를 기준으로 테이블분할), 수직분할(하나의 테이블에 속성이 너무 많을 경우 테이블 분할)
- 중복테이블 추가 : 여러 테이블에서 데이터를 추출해서 사용해야하거나 다른 서버에 저장된 테이블을 이용해야하는 경우
( 추가방법 : 집계 테이블추가, 진행 테이블추가, 특정 부분만을 포함하는 테이블추가 )
- 중복속성 추가 : 조인해서 데이터 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가

 

인덱스( Index )

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

 

뷰( View )

- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 저장장치 내에 물리적으로 존재하진 않지만, 사용자에게는 있는 것처럼 간주된다.
- CREATE문으로 정의하고, DROP문으로 제거한다.
- 데이터의 논리적 독립성을 제공한다.

 

트랜잭션( Transaction )

DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
또는 한꺼번에 모두 수행되어야 할 일련의 연산
- Atomicity ( 원자성 ) : 트랜잭션의 연산은 DB에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구( Rollback )되어야한다.
- Consistency ( 일관성 ) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 DB상태로 변환한다.
- Isolation ( 독립성 ) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실해중에 다른 트랜잭션의 연산이 끼어들 수 없음
- Durability ( 지속성 ) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야한다. 

 

클러스터( Cluster )

데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
- 처리 범위가 넓은 경우 => 단일 테이블 클러스터링, 조인이 많이 발생하는 경우 => 다중 테이블 클러스터링
- 클러스터링키로 지정된 컬럼 값의 순서대로 저장되고, 여러 개의 테이블이 하나의 클러스터에 저장된다.

 

파티션( Patition )

대용량의 테이블이나 인덱스를 작은 논리적 단위로 나누는 것을 말한다.
- 범위 분할( Range Partitioning ) : 지정한 열의 값을 기준으로 분할
- 해시 분할( Hash Partitioning ) : 해시 함수를 적용한 결과 값에 따라 데이터를 분할
- 조합 분할( Composite Partitioning ) : 범위 분할로 반할한 다음 해시 함수를 적용해서 다시 분할
* 인덱스 파티션 : 파티션된 테이블의 데이터를 관리하기위해 인덱스를 나눈 것
728x90
반응형

+ Recent posts