728x90
반응형
무결성과 일관성
소개
데이터베이스에 저장되는 데이터들이 띄어야 하는 성질인 무결성과 일관성에 대해 간략하게 설명하겠습니다.
목차
주제 개요
데이터 무결성 (Data Integrity) : 데이터가 정확하고 일관되며 신뢰할 수 있는 상태를 유지하는 것.
- 엔티티 무결성(Entity Integrity) : 테이블의 각 행을 고유하게 식별하기 위해, PRIMARY KEY가 필요함
- 참조 무결성(Referential Integrity) : 테이블 간의 관계를 보장하기 위해 FOREIGN KEY 사용
CREATE TABLE departments (
id NUMBER PRIMARY KEY,
name VARCHAR2(100)
);
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
department_id NUMBER REFERENCES departments(id)
);
- 도메인 무결성(Domain Integrity) : 열의 값이 특정 도메인(유효 범위) 내에 있어야 함.
CREATE TABLE employees (
salary NUMBER CHECK (salary > 0) -- 급여는 0보다 커야 함
);
- 사용자 정의 무결성(User-difined Integrity) : 특정 비즈니스 규칙을 기반으로 데이터 무결성 정의.
- ex) PL/SQL을 활용한 사용자 정의 제약 조건
데이터 일관성 (Data Consistency) : 데이터베이스의 데이터가 모든 사용자에게 동일한 상태로 유지되는 것.
보장 방식
- 트랜잭션 관리 : 트랜잭션은 하나의 작업 단위로 처리되며, 모든 작업이 성공적으로 완료되거나 전부 취소되어야 함.
- COMMIT : 트랜잭션 완료 시 데이터 저장.
- ROLLBACK : 트랜잭션 오류 시 데이터 복구.
- 현재 트랜잭션 내에서만 영향 미침
- 이전에 COMMIT한 작업은 ROLLBACK으로 취소 불가
- SAVEPOINT : 특정 시점까지 트랜잭션을 부분적으로 롤백할 수 있음.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
SAVEPOINT 예제
-- 새로운 데이터 삽입
INSERT INTO employees (employee_id, name, salary) VALUES (5, 'Eve', 3500);
-- 저장점 설정
SAVEPOINT before_update;
-- 데이터 업데이트
UPDATE employees SET salary = 7000 WHERE employee_id = 1;
-- 데이터 확인
SELECT * FROM employees;
-- 저장점까지 롤백
ROLLBACK TO before_update;
-- 롤백 후 데이터 확인
SELECT * FROM employees;
> SAVEPOINT 이후 실행된 데이터 업데이트가 취소되고 "Eve"의 데이터 삽입은 유지됨.
ACID 특성
- 원자성(Atomicity) : 모든 작업이 완료되거나 모두 실행되지 않아야 함.
- 일관성(Consistency) : 트랜잭션 전후로 데이터 무결성 유지.
- 고립성(Isolation) : 다른 트랜잭션의 중간 상태에 영향을 받지 않음.
- 지속성(Durability) : 트랜잭션 완료 후 데이터가 영구적으로 저장 됨.
728x90
반응형
'CS > DB' 카테고리의 다른 글
SQL의 세 가지 주요 역할 : DDL, DML, DCL (0) | 2025.01.05 |
---|---|
SQL 개요와 RDBMS (0) | 2025.01.05 |