9장 데이터 무결성과 트랜잭션 : 데이터베이스 운영 기본 규칙

·2024년 1월 9일
0

모두의 SQL

목록 보기
8/10

데이터 무결성과 제약 조건

  • 데이터 무결성
    • 데이터베이스에 저장된 데이터 값과 사용자가 의도한 데이터 값은 일치해야 함
    • 데이터는 정확성, 유효성, 일관성, 신뢰성이 지켜져야 함
      → 이를 위해 데이터를 처리할 때마다 검사하여 무결성을 유지하는 것을 데이터 무결성이라 함
  • 데이터 무결성의 종류
    유형설명
    개체 무결성기본 키로 선택된 열은 고유해야 하며 null 값을 가질 수 없음
    참조 무결성기본 키와 외래 키의 관계
    외래 키가 있는 테이블의 경우에는 기본 키와 외래 키 간의 관계가 항상 유지됨을 보장함
    참조하는 외래 키가 존재하면 행은 삭제될 수 없고 기본 키도 변경될 수 없음
    영역 무결성데이터 형태, 범위, 기본값, 유일성에 관한 제한
    주어진 속성 값은 그 속성이 정의된 도메인에 속한 값이어야 함
    (예) 값이 0 이상, YN 값 준수 여부, 기본값은 1 등
    비즈니스 무결성사용자의 업무 규칙에 따른 비즈니스적인 제약 조건
    (예) 제약 조건, DEFAULT, TRIGGER 등의 사용자 정의
  • 제약 조건
    - 정해 놓은 규칙에 맞는 데이터만 입력받고 규칙에 어긋나는 데이터는 거부하여 데이터 무결성을 지키는 방법

트랜잭션 : 데이터 처리의 기본 작업 단위

  • 트랜잭션

    • 데이터베이스의 DML(삽입, 갱신, 삭제)과 관련된 논리적인 작업을 완수하기 위한 기본 작업 단위
    • 관계형 데이터베이스 시스템은 트랜잭션을 통해 비정상 종료에 대해 데이터의 신뢰성과 일관성을 보장함
  • 트랜잭션의 특징(ACID)

    개념내용
    원자성트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다. (all or nothing)
    일관성트랜잭션의 실행이 성공적으로 완료되면 데이터베이스는 모순 없이 일관성이 보존된 상태여야 한다.
    고립성어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼 수 없다,
    지속성트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야 한다.
  • 트랜잭션의 수행 단계

    상태설명
    실행트랜잭션을 실행 중
    부분 완료DML 등 트랜잭션의 명령을 실행한 후의 상태
    완료트랜잭션이 성공적으로 완료
    실패데 이상 정상적으로 실행될 수 없음을 발견
    철회트랜잭션이 복원되어 트랜잭션 수행 이전 상태로 돌아감
  • 커밋과 롤백

    개념설명
    커밋트랜잭션의 모든 미결정 데이터를 영구적으로 반영함으로써 트랜잭션을 종료한다
    롤백트랜잭션의 모든 미결정 데이터 변경을 포기함으로써 트랜잭션을 종료한다
  • 커밋 이전

    • 데이터 변경 이전의 상태로 복구가 가능(롤백)하다.
    • 현재 사용자만 DML 작업의 결과를 확인할 수 있으며 다른 사용자는 확인할 수 없다.
    • 변경 중인 행은 접근 제어되어 다른 사용자가 변경할 수 없다.
  • 커밋 이후

    • 데이터베이스에 데이터를 영구적으로 변경/적용하며 기존 데이터는 상실된다.
    • 모든 사용자가 결과를 확인할 수 있다.
    • 접근 제어가 해지되어 다른 사용자가 변경할 수 있다.

(참고) DML은 수동 커밋을 해야 하고 DDL은 자동으로 커밋됨

  • 동시성 제어

    • 동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 지원
  • 동시성 제어 기법

    제어 기법설명
    락킹트랜잭션이 데이터에 잠금을 설정하면 다른 트랜잭션은 해당 데이터에 대해 잠금이 해제될 때까지 접근 / 수정 / 삭제가 불가능함
    타임스탬프시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭션에 부여함으로써 트랜잭션 간의 접근 순서를 미리 정함
    적합성 검먼저 트랜잭션을 수행하고 트랜잭션을 종료할 때 적합성을 검증하여 데이터베이스에 최종 반영

0개의 댓글