유형 | 설명 |
---|---|
개체 무결성 | 기본 키로 선택된 열은 고유해야 하며 null 값을 가질 수 없음 |
참조 무결성 | 기본 키와 외래 키의 관계 외래 키가 있는 테이블의 경우에는 기본 키와 외래 키 간의 관계가 항상 유지됨을 보장함 참조하는 외래 키가 존재하면 행은 삭제될 수 없고 기본 키도 변경될 수 없음 |
영역 무결성 | 데이터 형태, 범위, 기본값, 유일성에 관한 제한 주어진 속성 값은 그 속성이 정의된 도메인에 속한 값이어야 함 (예) 값이 0 이상, YN 값 준수 여부, 기본값은 1 등 |
비즈니스 무결성 | 사용자의 업무 규칙에 따른 비즈니스적인 제약 조건 (예) 제약 조건, DEFAULT, TRIGGER 등의 사용자 정의 |
트랜잭션
트랜잭션의 특징(ACID)
개념 | 내용 |
---|---|
원자성 | 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다. (all or nothing) |
일관성 | 트랜잭션의 실행이 성공적으로 완료되면 데이터베이스는 모순 없이 일관성이 보존된 상태여야 한다. |
고립성 | 어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼 수 없다, |
지속성 | 트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야 한다. |
트랜잭션의 수행 단계
상태 | 설명 |
---|---|
실행 | 트랜잭션을 실행 중 |
부분 완료 | DML 등 트랜잭션의 명령을 실행한 후의 상태 |
완료 | 트랜잭션이 성공적으로 완료 |
실패 | 데 이상 정상적으로 실행될 수 없음을 발견 |
철회 | 트랜잭션이 복원되어 트랜잭션 수행 이전 상태로 돌아감 |
커밋과 롤백
개념 | 설명 |
---|---|
커밋 | 트랜잭션의 모든 미결정 데이터를 영구적으로 반영함으로써 트랜잭션을 종료한다 |
롤백 | 트랜잭션의 모든 미결정 데이터 변경을 포기함으로써 트랜잭션을 종료한다 |
커밋 이전
커밋 이후
(참고) DML은 수동 커밋을 해야 하고 DDL은 자동으로 커밋됨
동시성 제어
동시성 제어 기법
제어 기법 | 설명 |
---|---|
락킹 | 트랜잭션이 데이터에 잠금을 설정하면 다른 트랜잭션은 해당 데이터에 대해 잠금이 해제될 때까지 접근 / 수정 / 삭제가 불가능함 |
타임스탬프 | 시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭션에 부여함으로써 트랜잭션 간의 접근 순서를 미리 정함 |
적합성 검 | 먼저 트랜잭션을 수행하고 트랜잭션을 종료할 때 적합성을 검증하여 데이터베이스에 최종 반영 |