표를 이용해서 데이터 상호관계를 정의하는 데이터베이스
튜플
: 각 행
속성
: 데이터베이스를 구성하는 가장 작은 논리적 단위
도메인
: 하나의 속성이 취할 수 있는 같은 타입의 원자값의 집합
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) 주민번호, 고객번호
조합 분할
= 범위 + 해시, 범위 분할로 분할한 뒤 해시 함수를 적용해서 다시 분할, (분할한 파티션이 너무 커서 관리 어려울때