참고: https://www.ibm.com/docs/en/cics-ts/5.4?topic=processing-acid-properties-transactions
https://www.techopedia.com/definition/27386/consistency-databases
DataBase의 "일관성(Consistency)"은 Transaction이 성공적으로 완료되어도 항상 데이터베이스를 일관된 상태로 유지해야 한다는 원칙을 의미 한다.
즉, Transaction의 실행 결과가 데이터베이스의 일관성을 유지하는 데 기여하는 무결성 제약 조건을 준수해야한다는 것을 의미한다.
< 일관성을 보장하는 Transaction의 예시 >
START TRANSACTION;
-- 송금자 계좌에서 돈을 빼기
UPDATE Accounts SET balance = balance - 1000 WHERE account_id = 1;
-- 수신자 계좌에 돈 추가
UPDATE Accounts SET balance = balance + 1000 WHERE account_id = 2;
COMMIT;
위의 코드에서는 "START TRACSACTION"과 "COMMIT" 사이에 이루어지는 모든 작업이 원자성을 가지기에
이에 따라 일관성이 보장 된다.
< 트랜잭션 실행결과가 무결성 제약 조건을 준수해야 하는 이유 >
1) 정확성 보장 :
무결성 제약조건은 데이터가 정확하고 유효한 값만 가지도록 보장한다.
예를 들어, 특정 필드에는 숫자만 입력되어야 하며, 또 다른 필드에는 NULL 값이 허용 되지 않는 등의
규칙을 설정할 수 있다.
2) 일관성 유지 :
무결성 제약조건은 데이터베이스의 일관성을 유지하는데 중요한 역할을 한다.
예를 들어, 외래 키 제약 조건은 RDBMS에서 Table간의 관계를 정의하고 유지하는데 사용한다.
이를 통해 무효한 데이터나 참조 무결성 오류를 방지할 수 있다.
3) 신뢰성 ↑ :
무결성 제약조건이 준수되면, 데이터베이스에 저장된 정보가 신뢰성이 높아진다.
이는 비즈니스 결정이나 분석에 사용되는 데이터의 품질이 보장되므로, 더 나은 결과를 얻을 수 있다.
따라서, 트랜잭션의 실행결과가 무결성 제약조건을 준수하도록 하는 것은 데이터베이스 시스템의 정확성,일관성,신뢰성을 보장하는데 필수적이다.
< 무결성 제약 조건 >
1.Domain constraints condition in RDBMS : 각 열은 명시적으로 선언된 도메인(예:숫자, 문자열, 날짜 등)의 값만 가져야 한다.도메인이란 데이터베이스 테이블의 특정 열에 허용되는 값의 집합을 말한다.
예를 들어, 개발자가 특정 필드의 타입을 '정수(int)'로 설정했다면, 그 필드에는 정수 값만 입력될 수 있다.
만약 문자열(String)이나 다른 데이터 타입 값이 그 필드에 입력되려고 하면, 데이터베이스 시스템은 그것을 거부하고 오류 메세지를 반환할 것이다.
2.기본 키 제약 조건: 기본 키는 테이블의 각 레코드를 고유하게 식별하는 역할을 한다.
그래서 기본 키 필드는 고유한 값만 가져야 하며, NULL 값을 가질 수 없다. 즉, 같은 테이블에 어떤 레코드도 같은 기본 키 값을 가질 수 없다. (두 개의 테이블이 있다고 가정 했을 때, 두 개의 테이블에 같은 이름을 가진 기본키가 있어도 된다.
기본 키 제약 조건은 같은 테이블 내에서 각 레코드를 고유하게 식별할 수 있어야 한다는 것을 의미한다. 즉, 동일한 테이블 내에서 같은 기본 키 값을 갖는 레코드가 있으면 안된다는 것.)
3.외래 키 제약 조건: 외래 키는 다른 테이블의 특정 레코드를 참조하는 역할을 한다. 외래 키 필드의 값은 참조하는 테이블의 기본 키 값 중 하나여야 한다. 이를 통해 관계형 데이터베이스에서 테이블 간의 관계를 정의하고 유지할 수 있다.
4.사용자 정의 제약 조건: 개발자 또는 데이터베이스 관리자가 특정 비즈니스 규칙이나 도메인 규칙을 데이터베이스에 추가하기 위해 설정하는 조건.
예를 들어 '나이'라는 열의 값이 0보다 크고 120보다 작아야 한다는 규칙을 사용자 정의 제약 조건으로 설정할 수 있다.
이는 나이 값이 현실적인 범위 내에 있어야 한다는 제약을 나타낸다.
< 사용자 정의 제약 조건 예제 코드 (MySQL) >
--테이블 생성
CREATE TABLE Users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
CONSTRAINT CHK_AGE CHECK (age > 0 AND age < 120)
);
'SQL 이론' 카테고리의 다른 글
DataBase Key (0) | 2023.05.16 |
---|---|
DBMS(Database Management System) (0) | 2023.05.16 |
Mysql 설치 및 DBeaver 설치 방법 (Windows) (0) | 2023.05.14 |
트랜잭션(Transaction) (0) | 2023.04.13 |
row와 column이 뭐에요? (0) | 2022.07.28 |