데이터모델 : 현실세계의 정보들을 컴퓨터에 표현하기 위해서 단순화 추상화 하여 체계적으로 표현한 개념적 모형이다.
데이터 모델의 구성요소
- 개체 : 사람이 생각하는 개념이나 정보 단위 같은 현실세계 대상체
- 속성 : 데이터의 가장 작은 논리적 단위
- 관계 : 개체 간의 관계 또는 속성 간의 논리적 연결의미
데이터 모델 표시할 요소
- 구조 : 논리적으로 표현된 개체타입들 간의 관계
- 연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
- 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건
1. 개념적 데이터 모델 : 현실세계의 대해 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정 (E-R모델)
2. 논리적 데이터 모델 : 개념적 구조를 컴퓨터 세계 환경에 맞도록 변화 하는 과정 (단순히 데이터모델이라 하면 논리적 데이터모델임)
이상 : 테이블에서 일부 속성들이 종속으로 인해 데이터 중복으로 인해 문제가 발생하는 현상
- 삽입이상 : 원하지 않은 값들로 인해 삽입할 수 없는 현상
- 삭제이상 : 한튜플을 삭제 할때 상관 없는 값도 같이 삭제 되는 현상
- 갱신이상 : 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
함수적 종속 : 속성 X의 값 각각에 대해 항상 속성 Y의 값이 오직 하나만 연관되어 있을때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X->Y로 표기 한다.
X -> Y 일때 X를 결정자 Y를 종속자 라고 부른다.
정규화 : 테이블의 속성들이 상호종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 과정이다.
이상 발생의 가능성을 줄이는 과정이다.
제1정규화 | 모든 속성의 도메인이 원자값으로만 되어 있는 정규형이다. |
제2정규화 | 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형 |
제3정규화 | 기본키가 아닌 모든 속성이 기본키에 대하여 이행적 함수적 종속을 만족하지 않는 정규형 |
BCNF | 모든 결정자가 후보키인 정규형 |
제4정규화 | 다중값 종속 |
제 5정규화 | 조인종속이 후보티를 통해서만 성립 |
두 : 도메인 원자값
부 : 부분적 함수 종속제거
이 : 이행적 함수 종속 제거
걸 : 결정자 이면서 후보키 아닌것 제거
다 : 다중값 종속
줘 : 조인종속성 이용
테이블
속성명 (컬럼) | 속성명 (컬럼) | 속성명 (컬럼) | 속성명 (컬럼) |
값(튜플,인스턴스,어커런스) +기본키 | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) |
값(튜플,인스턴스,어커런스)+기본키 | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) |
값(튜플,인스턴스,어커런스)+기본키 | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) | 값(튜플,인스턴스,어커런스) |
테이블 정의서 : 전체 테이블을 목록으로 요약 관리 하는 문서
반정규화 : 시스템의 성능 향상을 위해 의도적으로 정규화 원칙을 위배하는 행위
- 테이블 통합 : 두개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리 되는 경우 통합
- 테이블 분할 : 수평분할(레코드 기준 빈도에 따라 분할) , 수직분할( 속성을 기준으로 분할)
- 중복 테이블 추가 : 많은 범위 데이터 자주 처리시 , 특정범위 데이터 자주 처리시
- 중복 속성 추가 : 자주 사용하는 속성 추가
인덱스 : 데이터 레코드를 빠르게 접근하기 위해 <키 값,포인터 > 쌍으로 구성되는 데이터 구조이다.
- 클러스터드 인데스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 넌클러스터드 인덱스 : 인덱스의 키값만 정렬되어 있을뿐 실제 데이터는 정렬되지 않는 방식
- 트리기반 인덱스 : 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는것
- 비트맵 인덱스 : 인덱스 컬럼의 데이터 를 Bit값인 0이나1로 변환 하여 인덱스 키로 사용 하는 방식
- 함수기반 인덱스 : 컬럼의 값 대신 특정 함수나 수식을 정용하여 산출되는 값을 사용하는 것
- 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
- 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 방식
뷰 : 자료를 제한적으로 보여주기 위해 이름을 가진 가상 테이블 이다.
- 기본테이블과 같은 형태 구조
- 물리적으로 구현은 안됨
- 데이터 안전하게 보호
- 논리적 데이터 독립성 제공
클러스터드 : 데이터 저장시 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장방식
- 데이터 조회 속도 향상
- 데이터 입력 수정 삭제 성능 저하
- 데이터 분포도가 넓을수록 유리하다.
- 분포도가 넙ㄹ은 테이블을 클러스터링 하면 저장공간을 절약한다.
- 처리 범위가 넓으면 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용한다.
파티션 : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나눈는 것을 말함
- 성능저하 방지
- 데이터 관리 쉬워짐
- 쿼리 성능 향상
- 디스크 성능 향상
- 속도가 빠르다.
- 비용 증가
- 세심한 관리 요구됨
- 용량이 작은 테이블에 파티셔닝 하면 오히려 성능 저하
1. 범위 분할 : 지정한 열의 값을 기준으로 분할
2. 해시분할: 해시함수를 적용한 값을 기준으로 분할
3. 조합분할 : 범위 분할 후 해시분할 방법