표를 이용해서 데이터 상호관계를 정의하는 데이터베이스

튜플 : 각 행
속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자값의 집합
2차원 표를 이용해서 데이터 상호 관계를 정의하는 DB 구조

후보키 : 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합 = 기본키 로 사용 가능한 속성들을 말함
[후보키의 두가지 속성]
기본키 : 후보키 중에서 특별히 선정된 주키(Main key) , 중복과 null 이 불가능
대체키: 후보키가 둘 이상일때 기본키를 제외한 나머지 키 = 보조키
슈퍼키: 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 유일성은 만족하지만 최소성은 만족하지 못함.
외래키: 다른 릴레이션의 기본키 를 참조하는 속성 또는 속성들의 집합

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성을 의미
| 종류 | 내용 |
|---|---|
| 개체 무결성 | 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값은 가질 수 없다는 규정 |
| 참조 무결성 | 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정 |
| 도메인 무결성 | 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 |
| 사용자 정의 무결성 | 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정 |

관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
[관계대수 특징]
합병조건 : 릴레이션 R의 i번째 속성과 릴레이션 S의 i번째 속성의 도메인이 서로 같아야한다.(속성의 이름이 같아야하는 것은 아님)
관계 데이터의 연산을 표현하는 방법, 비절차적 특성을 지님

삽입이상 : 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
삭제이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 연쇄삭제가 발생하는 현상
갱신이상 : 테이블에서 튜플에 있느 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보의 불일치성이 생기는 현상
속성 X의 값 각각에 대하여 속성 Y의 값이 시간에 관계없이 오직 하나만 연관되어 있을경우 Y는 X에 함수적 종속이라 표현.

테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이요하여 테이블을 무손실 분해 하는 과정이다. = 가능한 중복을 제거하여 삽입/삭제/갱신 이상의 발생 가능성을 줄이는 것
시스템 성능 향상/ 편의성 높이기 위해 정규화된 데이터 모델을 의도적으로 통합,중복,분리 하여 정규화 원칙을 위배하는 행위

2개의 테이블이 join되어 사용되는 경우가 많을 경우 성능 향상을 위해 하나의 테이블로 만들어 사용하는 경우
1:1 관계 테이블 통합 / 1:N 관계 테이블 통합/ 슈퍼타입/서브타입 테이블 통합이 있음
테이블을 수직 또는 수평으로 분할하는 것
수평 분할 : 레코드 기준으로 테이블 분할, 레코드별 사용빈도에 영향수직 분할 : 속성이 하나의 테이블에 너무 많을 경우 사용, 갱신위주, 자주 조회되는 속성, 크기가 큰 속성, 보안을 적용해야 하는 속성 등의 종류로 나눌 수 있음여러 테이블에서 데이터를 추출해서 사용해야 할 경우, 다른 서버에 저장된 테이블을 이용해야 하는 경우에 중복 테이블 추가를 고려 가능
[중복 테이블 추가 방법]
조인해서 데이터를 처리시, 데이터 조회 경로를 단축하기 위해 사용.
[중복 속성을 추가하는 경우]

시스템 카탈로그 : 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스(모든 객체에 대한 정의나 명세에 관한 정보를 유지/관리). 좁은 의미에서 데이터 사전이라고 함.
메타 데이터 : 시스템 카탈로그에 저장된 정보를 의미.
데이터베이스 객체 정보(테이블,인덱스,뷰)/ 사용자정보(아이디,패스워드)/ 테이블의 무결성 제약 조건 정보(기본키, 외래키) 등이 유형으로 존재.
데이터 디렉터리 : 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리유지하는 시스템
3가지 를 정의
테이블 객체컬럼 테이블의 열테이블 스페이스 (논리적인 영역), 한개의 테이블 스페이스에 한개 이상의 테이블 저장 가능| 종류 | 내용 |
|---|---|
| 일반 테이블 | 대부분의 DBMS에서 사용하는 표준 |
| 클러스터드 인덱스 테이블 | 기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블, 일반 테이블보다 접근 경로 단축 |
| 파티셔닝 테이블 | 대용량의 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블 |
| 외부 테이블 | 일반테이블 처럼 이용 가능한 외부 파일 |
| 임시 테이블 | 트랜잭션이나 세션 별로 데이터를 저장하고 처리가능한 테이블, 트랜잭션 종료되면 삭제됨 |


프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것
CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다.
단위 프로세스와 CRUD 매트릭스를 이용하여 작성

데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적
| 종류 | 내용 |
|---|---|
| 트리기반 인덱스 | 인덱스를 저장하는 블록들이 트리 구조를이루고 있는것 |
| 비트맵 인덱스 | 인덱스 컬럼의 데이터를 Bit 값으로 변환하여 인덱스 키로 사용하는 방법 |
| 함수 기반 인덱스 | 컬럼의 값 대신에 컬럼에 특정 함수나 수식 적용하여 산출된 값을 사용하는 방법 |
| 비트맵 조인 인덱스 | 다수의 조인된 객체로 구성된 인덱스 |
| 도메인 인덱스 | 개발자가 필요한 인덱스를 직접 만들어 사용하는 것 |
| 종류 | 내용 |
|---|---|
| 클러스터드 인덱스 | 인덱스의 키의 순서에 따라 데이터가 정렬되어 저장되는 방식, 검색 빠름 |
| 넌클러스터드 인덱스 | 인덱스의 키값만 정렬되어 있고 실제 데이터는 정렬X 방식, 데이터 삽입,삭제 발생시 재정렬 필요 |
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로 부터 유도된 가상 테이블
CREATE, 삭제시 DROP
데이터 엑서스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장방법

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

범위 분할 = 지정한 열의 값을 기준으로 분할 ex) 일별, 월별
해시 분할 = 해시 함수 적용, 데이터를 고르게 분산시킴, (특정 데이터가 어디에 있는지는 파악불가) ex) 주민번호, 고객번호
조합 분할 = 범위 + 해시, 범위 분할로 분할한 뒤 해시 함수를 적용해서 다시 분할, (분할한 파티션이 너무 커서 관리 어려울때