나의 계좌에서 다른 계좌로 이체할때, 돈을 인출하는 SQL 명령문과 계좌 B로 돈을 입금하는 SQL 명령문이 실행된다. 이를 트랜잭션으로 처리하려면 이 두 SQL 명령문을 하나의 트랜잭션에 묶을 수 있다. 트랜잭션은 두가지 특성이 있다. 처음 언급했다시피 성공하면 커밋되고 실패 하면 롤백 되는데 이는 트랜잭션의 원자성 덕분이다.
트랜잭션 내의 모든 SQL 명령문이 성공하거나 실패하는 경우, 모든 변경 사항이 적용되거나 적용되지 않는다는 것을 의미한다. 다시 말하면, 중간 단계에서 실패하면 변경 사항이 롤백되어 처음 상태로 돌아간다.
🗨 트랜잭션은 일관성이 있어야 된다. 한 작업단위에서 모든 처리가 완료된 후 데이터 베이스는 일련의 명령처리에 맞게 데이터가 유지되어야 한다.
트랜잭션은 데이터베이스를 일관된 상태로 유지한다. 트랜잭션 시작 전과 종료 후 데이터베이스는 일관된 상태여야 하는데 , 돈을 인출하는 SQL 명령문은 나의 잔액을 감소시키고, 입금하는 명령문은 다른 사람의 잔액을 증가시켜야 한다.
데이터의 무결성은 데이터의 정확성과 일관성을 나타내는 개념이다. 지정된 규칙과 제약 조건에 따라 저장되어야 한다. 데이터가 부정확하거나 비합법적인 값으로 오염되는 것을 방지하려는 목적으로 사용되며, 주로 기본 키, 외래 키, 도메인 제약 조건, 체크 제약 조건 등을 사용하여 보호된다. 특정 열에 숫자만 허용되고 음수 값이 들어가면 안 되는 경우, 데이터의 무결성을 위해 해당 열에 대한 체크 제약 조건을 설정할 수 있다.
데이터가 다양한 위치에서 일관된 상태로 유지되어야 함을 나타내는 개념이다. 여러 시스템 또는 데이터 저장소 간에 데이터의 일관성을 보장하기 위한 것이 주요 목표 이다. 데이터가 중복되거나 서로 다른 시스템 또는 데이터베이스 간에 충돌하는 경우에도 일관된 상태로 유지되어야 함을 의미한다. 예를 들어, 여러 서버 또는 데이터베이스 간에 동일한 데이터가 사용되는 분산 시스템에서, 모든 복제본은 동일한 정보를 나타내어야 하며, 데이터의 정합성은 이를 보장하는 데 중요하다.
즉 무결성은 데이터 설계 원칙에 초점을 두고 정확성과 일관성에 관심을 가지고 있고, 정합성은 여러 클라이언트가 동시에 접근할때 정확성과 일관성을 유지하는데 관심이 있다.