데이저 무결성 vs 데이터 정합성 개념 비교
개념 정리
- 데이터 무결성(Data Integrity): 데이터가 정확하고 완전해야 한다
- 데이터 정합성(Data Consistency): 데이터가 서로 모순이 없이 일관되게 일치해야 한다
비교
무결성 훼손 예시
product table
product_id | product_name |
---|---|
-1 | 냉동 블루베리 |
order table
order_id | product_id | product_name |
---|---|---|
1 | -1 | 냉동 블루베리 |
product table와 order table에서 product_id는 반드시 1 이상의 값을 가져야할 때,
- product_id는 모두 -1로 일치하므로 데이터 정합성은 지켜졌으나, 1 이상의 값을 가지지 않음으로 데이터 무결성은 훼손되었다.
정합성 훼손 예시
product table
product_id | product_name |
---|---|
1 | 냉동 블루베리 |
order table
order_id | product_id | product_name |
---|---|---|
1 | 2 | 냉동 블루베리 |
product table와 order table에서 product_id는 반드시 1 이상의 값을 가져야할 때,
- product_id는 모두 1 이상의 값을 가지므로 데이터 무결성은 지켜졌으나, 테이블마다 서로 값이 일치하지 않음(product.product_id=1, order.product_id=2)으로 데이터 정합성은 훼손되었다.
사용 예시
트랜잭션 Transaction
- 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
- 데이터베이스의 상태는 INSERT, SELECT, UPDATE, DELETE와 같은 DML(데이터 조작어, Data Manipulation Language)로 변화하는데 이때 트랜잭션은 여러 조작어를 하나의 단위로 묶을 때 사용한다.
- 트랜잭션을 사용하면 게시판에 게시글을 새로 등록하고(INSERT), 게시판에 전체 게시글 조회하기(SELECT) 를 하나의 단위로 처리할 수 있게 된다.
트랜잭션의 ACID 원칙
Atomic (원자성)
트랜잭션의 모든 작업이 모두 성공하거나, 모두 실패해야 한다. (부분적으로 실행된 상태는 존재하지 않는다.)
Consistent (일관성)
트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다. 이 부분이 바로 무결성을 직접적으로 지키는 속성이다.
Isolated (고립성)
둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다.
Durable (지속성)
트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다.
댓글남기기