데이터 무결성과 제약조건
무결성 : 데이터의 결점 없음
데이터 무결성 종류
- 개체 무결성 : 기본 키로 선택된 열은 고유해야 하며 null 값을 가질 수 없다.
- 참조 무결성 : 기본 키와 외래 키의 관계. 외래 키가 있는 테이블의 경우에는 기본 키와 외래 키간의 관계가 항상 유지된다.
- 도메인 무결성 : 데이터 형태, 범위, 기본값, 유일성에 관한 제한으로 주어진 속성 값은 그 속성이 정의된 도메인에 속한 값이어야 한다.
- 비즈니스 무결성 : 사용자의 업무 규칙에 따른 비즈니스적인 제약 조건이다.
제약 조건
- 기본 키 제약 조건 : UNIQUE + NOT NULL을 만족
- 외래 키 제약 조건 : 열 값이 부모 테이블의 참조 열의 값을 반드시 참조해야 한다. 참조되는 열은 UNIQUE하거나 기본 키
- 유일 키 : 중복된 값을 허용하지 않는다. 유일한 값으로 존재해야 한다 (NULL 값 허용 가능)
- NOT NULL : null 값을 허용하지 않는다. 값을 반드시 입력해야 한다.
- CHECK : 범위나 조건 등 지정된 값만 허용한다.
무결성과 제약 조건은 데이터를 정상으로 유지하기 위한 장치이므로 DML명령어를 사용하기 전에 반드시 확인
트랜잭션
데이터베이스의 DML, 즉 삽입, 갱신, 삭제와 관련된 논리적인 작업을 말한다. 트랜잭션은 DML 실행과 동시성 제어를 위한 중요한 개념이다.
트랜잭션의 특징 ACID
- 원자성 Atomicity : 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다.
- 일관성 Consistency : 트랜잭션의 실행이 성공적으로 완료되면 데이터베이스는 모순 없이 일관성이 보존된 상태여야 한다.
- 고립성 Isolation : 어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼 수 없다.
- 지속성 Durabiliy : 트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야 한다.
트랜잭션의 수행 단계
실행 → 부분완료 → 완료(commit)
실행 → 부분완료 → 실패 → 철회(rollback)
동시성 제어
동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 지원한다.
동시성 제어 기법
락킹, 타임스탬프, 적합성검증
출처: 모두의 SQL (저자 : 김도연)