데이터베이스
- 특정 조직 내 필요한 데이터들의 모임, 공용으로 소유/유지/이용하는 공용 데이터
스키마(Schema)
외부 스키마(서브 스키마)
- 사용자 관점 스키마
- 하나의 DB에 여러 개의 외부 스키마 존재
- 사용자, 프로그램마다 다양한 형태의 논리적 구조로 존재
개념 스키마
- 사용자와 DB 관리자 관점 스키마
- DB 전체적인 논리적 구조
- 일반적으로 하나의 DB에는 하나의 개념 스키마가 존재
- 데이터개체/관계/제약조건/접근권한/무결성 규칙 명세
내부 스키마
- DB 설계자/개발자 관점 스키마
- 개념 스키마를 물리적 저장장치에 구현
- 물리적/내부 레코드의 물리적 순서
데이터 독립성
- 논리적 독립성: 응용 프로그램 영향없이 데이터베이스 논리 구조 변경
- 물리적 독립성: 응용 프로그램 및 논리 구조 영향없이 데이터의 물리적 구조 변경
데이터 언어
DDL(Data Definition Language)
DML(Data Manipulation Language)
DCL(Data Control Language)
- 데이터의 보안, 권한, 무결성, 권한 검사, 병행 제어를 위한 언어
데이터베이스 설계 순서
1. 요구조건 분석
- 데이터베이스의 사용 용도/요구사항/요구조건 명세서 작성
2. 개념적 모델
- 현실 세계의 인식을 추상적 개념 세계
- 독립적 개념 스키마 모델링
- 트랜잭션 모델링
- E-R 모델
3. 논리적 모델
- 개념적 모델을 관계모델(컴퓨터가 처리할 수 있는 구조)로 표현
- 종속적 논리 스키마 설계
- 트랜잭션 인터페이스 설계
- 정규화
- 논리적 데이터 베이스 구조로 Mapping
- 스키마의 평가 및 정제
4. 물리적 모델
- 데이터의 실제 저장 방법 및 접근 경로 표현
- 레코드 형식/순서
- 목표 DBMS 종속적인 물리적 구조 데이터로 변환
- 반정규화
- 트랜잭션 작성
- 저장 레코드의 형식/순서/접근 경로 설계
5. 구현
- DBMS에서 SQL로 작성한 명령문 실행 후 데이터베이스 실제 생성
데이터 모델 구성 요소
Structure(구조)
Operation(연산)
Constraint(제약조건)
개체-관계 모델(E-R Model/Entity-Relation Model)
Entity(개체)
Attribute(속성)
Relationship(관계)
E-R 다이어그램 표기법
관계형 데이터베이스 용어
- Relation = Table
- 열 = field = Attribute(속성): 원자성 / 동일할 수는 있음 / NULL 가능 but PK(x)
- 행 = record = Tuple(튜플)
- Domain
키(Key)
- 후보키: 기본키로 사용 가능 / 유일성, 최소성 만족
- 기본키: 후보키 중 선택 / 중복된 값, NULL 값 가질 수 없음 / 유일성, 최소성 만족
- 대체키: 후보키가 둘 이상일 때 기본키 제외 나머지 후보키
- 슈퍼키: 유일성은 만족하지만, 최소성은 만족 불가 속성들의 집합으로 구성된 키
- 외래키: 다른 릴레이션의 기본키 참조
무결성(Integrity)
개체 무결성: 기본키는 NULL/중복값 x
도메인/속성 무결성: 릴레이션 내 튜플들ㄹ이 각 속성의 도메인에 지정된 값만 가진
참조 무결성: 외래키는 NULL 또는 참조 릴레이션의 기본키 값과 동일 / 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음
사용자 정의 무결성
데이터 무결성 강화
접근 통제 기술(AC, Access Control)
DAC(Discretionary AC): 임의 접근 통제
- 사용자의 신원/신분에 따라 접근 권한 부여
- 데이터 소유자가 접근 통제 권한 지정/제어
- GRANT / REVOKE
MAC(Mandatory AC): 강제 접근 통제
- 주체와 객체의 등급을 비교 해 시스템이 접근 권한 부여
RBAC(Role-based AC): 역할 기반 접근 통제
- 사용자의 역할에 따라 접근 권한 부여
- 중앙관리자가 지정
- 다중 프로그래밍에 최적화
뷰(View)
- 기본 테이블엘 기반을 둔 이름을 가지는 가상테이블
- 가상/논리적으로 존재
- 기본 테이블 및 뷰 삭제 시 해당 테이블/뷰를 기초로 정의된 다른 뷰도 자동 삭제
- 논리적 데이터 독립성 제공 / 독립적 인덱스 보유 불가, ALTER 변경 불가
정규화
- 이상(Anamoly) 현상
- 삽입 이상 / 삭제 이상 / 갱신 이상
정규화 과정
제 1 정규형
제 2 정규형
- 완전 함수적 종속을 만족 / 부분적 함수 종속을 제거
제 3 정규형
BCNF(보이스/코드)
- 릴레이션 R에서 모든 결정자가 후보키인 정규형
제 4 정규형
제 5 정규형
반정규화
함수적 종속
- 완전 함수 종속
- 부분 함수 종속
- 이행적 함수 종속
관계 대수
1. 순수 관계 연산자
2. 일반 집합 연산자
관계 해석
트랜잭션(Transaction)
Atomicitiy(원자성)
- 트랜잭션 연산이 정상적으로 수행되거나(Commit), 어떠한 연산도 수행되지 않아야 함(Rollback)
Consistency(일관성)
- 시스템의 고정 요소는 트랜잭션 수행 전/후로 동일해야 함
Isolation(독립성)
- 개별 트랜잭션은 다른 트랜잭션의 간섭 및 영향을 받지 않아야 함
Durability(영속성)
- 완료된 트랜잭션의 결과는 영구적으로 기록되어야 함
COMMIT: 정상 종료 후 반영
ROLLBACK: 비정상 종료 후 이전 상태로 원복
REDO: 비정상 종료 시 트랜잭션 시작~완료에 대한 기록이 있는 트랜잭션 재작업
UNDO: 비정상 종료 시 시작은 있으나 완료 기록 없는 트랜잭션 작업 모두 취소
데이터 회복 기법
즉시 갱신 기법(Immediate Update): (Redo/Undo) 변경되는 모든 내용 Log에 기록해 토대로 복원
지연 갱신 기법(Deferred Update): (Redo) 부분 완료될때까지 바로 적용하지 않고 지연시킨 후 부분 완료 시 Log 내용 토대로 저장
검사 시점 기법(Check point): Checkpoint까지 부분 수행 후 완료된 내용 중간중간 저장
그림자 페이징 기법(Shadow paging): 로그 미사용 / 동일 크기 페이지로 분할 후 복사하여 그림자 페이지 보관
로킹 단위(Locking)
- 로킹: 데이터베이스 병행 제어를 위해 Transaction이 접근하고자 하는 데이터를 잠가 다른 트랜잭션이 접근하지 못하도록 하는 병행 제어 기법
병행제어 기법 종류
로킹 기법: 일관성, 무결성을 유지 하기 위한 트랜잭션 순차진행 보장(병행 수행 트랜잭션들 간 동일 데이터 접근 차단)
낙관적 검증: 일단 트랜잭션 수행/트랜잭션 종료 시 검증 수행
타임 스탬프 기법: timestamp에 부여된 시간 따라 트랜잭션 수행
다중버전 동시성 제어(MVCC): 타임스탬프 비교해 직렬가능성 보장되는 적절한 버전 선택해 접근
분산 데이터베이스
- 논리적으로 하나의 시스템에 존재하나, 물리적으로는 연결된 다수의 컴퓨터에 분산된 데이터베이스
데이터베이스 관련 용어
Index
Cluster: 자주 사용하는 테이블 데이터를 동일 위치에 저장
데이터베이스 이중화: Eager 기법(즉시 업데이트 이중화 데이터) / Lazy기법(변경 사항 새 트랜잭션으로 각 노드에 전달)
Partitioning: 여러 섹션으로 대용량 DB 분할
RTO: Recover Time Objective
RPO: Recovery Point Objective
알고리즘
O(1): Hash 함수
O(log2 N): 이진 탐색
O(n): 순차탐색
O(N log2 N): 힙, 병합 정렬
O(N^2): 선택/버블/삽입/퀵 정렬
알고리즘 시간 복잡도
Divide and Conquer
Dynamic Programming: 더 작은 문제의 연장선으로 여기고, 과거에 구한 해 활용
Greedy: 현 시점 가장 최적의 방법 선택
Backtracking: 몯느 조합 시도(문제의 부모 노드로 되돌아가 다른 자손 노드 검색)
알고리즘 설계 기법
삽입
선택
버블
퀵
2-way 합병
쉘
힙
정렬 알고리즘
- 선택 정렬
- 삽입 정렬
- 버블 정렬