정보처리기사-DB_3

이상과 정규화


이상

DB 내 데이터의 중복과 종속으로 인해 발생되는 문제점

  • 삭제 이상
    : 원하지 않는 자료까지 함께 삭제가 이루어지는 이상
  • 삽입 이상 : NULL이면 안되는 값에 NULL이 들어가 삽입이 안되는 이상
  • 갱신 이상 : 갱신 과정에서 일부만 갱신되어 정보의 파악이 안되는 현상

함수적 종속

  • 완전 함수 종속
  • 부분 함수 종속
  • 이행적 함수 종속

정규화

  1. 제1정규형(원자값)
    : 한 릴레이션을 구성하는 모든 도메인이 원자값으로만 구성
  2. 제2정규형(부분 함수 종속 제거)
    : 모든 속성이 기본키에 완전 함수 종속이 되도록 구성
  3. 제3정규형(이행적 함수 종속 분해)
  4. 보이스-코드 정규형(후보키가 아닌 결정자 관계 제거)
    : 릴레이션에서 모든 결정자가 후보키(PK)가 되도록 하는 과정
  5. 제4정규형(다치 종속 관계 제거)
  6. 제5정규형(조인 종속 관계 제거)
    : 조인 종속이 후보키를 통해서만 성립이 되도록 하는 정규형

역정규화

릴레이션 역정규화

릴레이션 병합

릴레이션 분할

  • 수직 분할
  • 수평 분할

속성 역정규화(파생 속성 추가)

트랜잭션

  • 원자성 : 모두 수행되거나 모두 수행되지 않거나
  • 일관성 : 완료되면 일관성 있는 DB 상태여야 한다
  • 격리성 : 하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근 할 수 없음
  • 영속성 : 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 함

트랜잭션 스케줄

  • 직렬 스케줄 : 순차적
  • 비직렬 스케줄 : 비순차적
  • 직렬 가능 스케줄 : 직렬 스케줄 기법의 결과와 비직렬 스케줄 기법의 결과가 동일하게 나오는 경우

회복

  • 로그 : 트랜잭션이 수행되어 변경되는 데이터베이스 상황 정보를 기록(로그파일)하는 것

회복 기법

  • 즉시 갱신 기법 : 트랜잭션 실행 중에 변경되는 내용을 바로 DB에 적용
  • 지연 갱신 기법 : 트랜잭션이 부분 완료되면 DB에 적용
  • 검사 시점 기법 : 트랜잭션 실행 중 검사 시점을 지정해 그 때 완료된 내용을 DB에 적용
  • 그림자 페이징 : 로그를 사용하지 않고, DB를 동일한 크기의 단위인 페이지로 나누어 각 페이지마다 복사하여 보관하는 기법. 장애가 발생되면 그림자 페이지를 이용해 회복

REDO(재수행) UNDO(취소)

병행 제어

: 여러 트랜잭션이 실행되는 경우 트랜잭션 간의 격리성을 유지해 에러가 발생하지 않도록 하는 것

병행 제어를 하지 않았을 때의 문제점

  • 갱신 분실
  • 모순성
  • 연쇄 복귀
  • 비완료 의존성 : 하나의 트랜잭션 수행이 실패한 후 회복되기 전 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상

로킹

  • 트랜잭션의 고립성 같은 것,
  • 하나의 트랜잭션이 이미 DB에 접근해 있으면 다른 트랜잭션이 접근하지 못하게 막음
  • LOCK과 UNLOCK, 교착 상태가 있다.
  • 공유락과 배타락이 있다.

  • 2단계 로킹 기법에는 확장 단계와 축소 단계가 있다.

타임 스태프

: 각 트랜잭션이 데이터에 접근할 시간을 미리 지정해 기억시킨 뒤 그 시간의 순서에 따라 순서대로 데이터에 접근하여 수행하는 방법