foreiner852 2025. 2. 10. 10:22

데이터의 정확성과 일관성을 보장하기 위한 개념

 

대부분의 관계형 데이터베이스는 데이터 정합성을 보장하는 것을 목적으로 한다.

이것을 위해

1. 트랜잭션 관리

2. 무결성 제약 조건

3. 동시성 제어

4. 백업과 복구

의 내용을 필수적으로 가지게 된다.

이중 무결성은 크게 3가지로 분류된다.
범위(Domain) 무결성
참조(Referential) 무결성

개체(Entity) 무결성

 

1. Domain Integrity

 각 데이터가 데이터의 형식, 값 범위, 제약 조건을 준수하는 것.

테이블을 생성할때 제약조건을 거는것에 해당하며 각 컬럼의 데이터 형식을 저장할 내용에 맞게 설정하지 않거나, 이름을 명료하게 하지 않을경우 무결성에 문제가 생길 수 있다.

2. Referential Integrity

 복수의 테이블에 대하여 관계를 일관되게 유지하는 것을 의미한다.

주로 외래키를 사용해 구성하는 내용을 말하며 cascade등을 사용하여 무결성을 보장한다.

관계형 데이터베이스에서 "관계형"에 해당하는 내용이다.

3. Entity Integrity

각 row의 키가 중복되지 않는 것을 의미한다.

기본키를 설정하면 기본적으로 보장되는 내용이다.

 

위 내용을 db에서 체크하고 규칙에 어긋나면 데이터 변경을 막는다.

그럼으로 db와 인터페이스를 가진 프로그램을 설계할때는 다음과 같은 내용을 필수적으로 가져야 한다.

1. 입력 검증

 입력이 잘못된 경우에는 다른 데이터와의 참조 무결성을 해치게 될 위험이 있다.

 원하지 않는 데이터가 개체 무결성을 위해 데이터베이스를 점유하게 된다.

2. 보안 검증

 UI상으로 특정 유저만 접근해야하는 내용이 있으며 이것이 확인되지 않을경우 검증되지 않은 사용자가 잘못된 데이터를 입력하거나 삭제할 수 있다.

3. 검증 기록

 모든 경우의 수를 프로그래밍 하는 것은 아주 어려우며 문제가 발생했을때 결과만을 가지고 있다면 해결하는것이 사실상 불가능에 가깝다.

로그를 만들고 데이터를 추적해야 문제가 발생할때 해결이 가능하다.