본문 바로가기
DataBase

[DB] 데이터 무결성(Integrity)과 정합성(Consistency)

by 데브드그 2022. 3. 19.

▶ 데이터 무결성(Data Integrity): 데이터 값이 정확한 상태

 

▶ 데이터 정합성(Data Consistency): 특정 데이터들의 값이 서로 일치한 상태.

 

- 중복 데이터를 많이 사용하면 데이터 간의 정합성을 맞추기 어렵다. 

- 비정규형을 사용해 아노말리(Anomaly: 이상현상)가 발생하면 정합성이 깨진다.

- 저합성은 데이터가 서로 모순 없이 일관되게 일치해야 함을 의미한다.

 

정합성 오류 예시

: 고객정보 테이블에서 A 고객의 고객번호를 C001에서 E001로 수정하였으나, 주문정보 테이블의 고객번호는 C001로 변경되지 않았을 경우 데이터 정합성 훼손. (고객정보 테이블의 데이터와 주문정보 테이블의 데이터 값이 서로 일치하지 않음)

 

▶ 데이터의 정합성은 이상이 없으나 무결성이 훼손되는 경우 발생: 중복 데이터 값이 다 틀린 값으로 일치

 

정합성 O, 무결성 X 예시

: A 고객의 성별 정보가 고객정보 테이블에서도 P라고 입력되었고, 주문정보 테이블에서도 P라고 되어있다. 이 경우 데이터의 값이 일치하여 데이터 정합성은 이상이 없다. 그러나 고객의 성별 정보는 반드시 M 혹은 F라는 값을 가져야 한다. 즉, 데이터의 값이 정확하지 않아 데이터의 무결성은 훼손된 것이다.

 

⇒ 관계형 데이터베이스의 가장 큰 목표는 "데이터 무결성을 높이는 것"

 

데이터 무결성의 제약조건

1) 도메인 무결성(Domain Integrity)

- 릴레이션 내의 투플(≒ 레코드, 인스턴스)들이 각 속성의 도메인에 지정된 값만을 가져야 한다.

- 엔터티의 특정 속성값은 데이터 타입의 길이, 같은 널 여부, 같은 기본값, 같은 허용 값 등 동일한 범주의 값만이 존재.

- 속성값과 관련된 무결성. 데이터 형식(type). 널(null/not null), 기본값(default), 체크(check) 등을 사용하여 지정

 

2) 개체 무결성(Entity Integrity)

- 기본키 제약(primary key constraint)이라고도 한다.

- 모든 인스턴스는 Null 값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다. (고유한 값이어야 한다)

- 참조 무결성과 함께 관계 데이터 모델의 핵심 개념

 

3) 참조 무결성(Referential Integrity)

- 외래키 제약(foreign key constraint)이라고도 한다.

- 참조되는(제공하는) 릴레이션을 부모(parent), 참조하는(제공받는) 릴레이션을 자식(child)이라고 한다.

- 부모 릴레이션의 도메인과 다른 값으로 삽입 및 수정되거나, 자식 릴레이션에서 참조하고 있는 값을 부모 릴레이션에서 삭제하거나 다른 값으로 변경할 수 없다.

- 참조되는 엔터티의 주 식별자 값고 일치하거나 Null 값이어야 한다.

 

4) 업무 무결성(Business Integrity)

- 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙.

- 업무 무결성을 물리적으로 강제하는 대표적인 방법으로는 트리거(Trigger)가 존재한다.

- 다양하게 정의될 수 있는 비즈니스 규칙이 데이터적으로 일관성을 유지하는 것이다.

 

 

 

 

참고

- https://dbaguru.tistory.com/432

- https://velog.io/@yangsijun528/%EB%AC%B4%EA%B2%B0%EC%84%B1%EA%B3%BC-%EC%A0%95%ED%95%A9%EC%84%B1%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

- SQL SERVER로 배우는 데이터베이스 개론과 실습

댓글