[정보처리기사] 2. 데이터베이스

keymu·2024년 10월 15일
0

데이터베이스

  • 특정 조직 내 필요한 데이터들의 모임, 공용으로 소유/유지/이용하는 공용 데이터

스키마(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 합병

정렬 알고리즘

  1. 선택 정렬
  2. 삽입 정렬
  3. 버블 정렬
profile
Junior Backend Developer

0개의 댓글