본문 바로가기
프로그래밍/데이터베이스

[DB설계] RDB 데이터 무결성과 정합성 내용 정리

by 잡학다방 2024. 12. 31.
반응형

 

 

 

데이터 무결성

무결성은 데이터 값이 정확한 상태

Data Integrity가 주로 데이터 무결성으로 번역되나,

정확하다는 의미에서 데이터 완전성이나 정확성이라는 표현이 더 간결

데이터 정합성

정합성은 무결성과 유사하게 사용되는 용어

어떤 데이터들의 값이 서로 일치할 때 데이터 정합성이 맞다고 표현

중복 데이터를 많이 사용하면 데이터끼리 정합성을 맞추기 어렵고

궁극적으로는 서로 달라지는 경우(정합성이 깨지는 경우) 발생 가능

비정규형을 사용하여 이상현상이 발생하면 데이터 정합성이 깨진다.

무결성과 정합성의 비교

정합성은 데이터가 서로 모순 없이 일관되게 일치해야 한다는 의미

무결성은 데이터가 정확하고 완전해야 한다는 의미 → 데이터는 제대로된(멀쩡한, 모델러나 개발자가 의도한) 상태로 존재해야 한다.

어떤 데이터는 정합성에는 이상이 없으나 무결성은 훼손된 상태일 수 있다.

ex) 중복 데이터가 전부 동일하나 옳바르지 않은 값으로 일치하면 정합성은 만족하나 무결성은 훼손된 상태 → 특정 사용자의 주소에 전부 False 가 들어간 경우

따라서 무결성의 정의가 더 넓은 개념

무결성을 지키는 것이 데이터 모델링의 최고의 목표

데이터 무결성의 종류

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

무결성에는 다음의 4가지 종류가 있다.

엔터티 무결성(Entity Integrity)

참조 무결성(Referential Integrity)

도메인 무결성(Domain Integrity)

업무 무결성(Business Integrity)

엔터티 무결성(Entity Integrity)

엔터티에 존재하는 모든 인스턴스는 고유해야 한다.

인스턴스를 대표하는 속성(Primary Key)에는 Null 값이 올 수 없다.

→ 엔터티에는 동일한 주 식별자가 존재할 수 없으며 주 식별자 속성은 모르는 값인 Null 값을 허용할 수 없다.

두 번째 인스턴스는 첫 번째 인스턴스와 중복이므로 엔터티 무결성 위반

세 번째 인스턴스의 주문번호 속성은 Primary Key인데 null 이므로 엔터티 무결성 위반

참조 무결성(Referential Integrity)

참조 무결성: 엔터티의 왜래 식별자 속성은 참조되는 엔터티의 주 식별자 값과 일치하거나 Null 값이어야 한다.

즉 외래 식별자 속성 값이 상위 엔터티의 인스턴스에 반드시 존재하거나 Null 이어야 한다.

참조 무결성은 두 엔터티의 연관된 인스턴스 사이에 일관성을 유지하기 위한 제약으로 사용

이 제약은 관계형 데이터베이스에서 집합(엔터티) 사이에 연산할 수 있도록 하는 대단히 중요한 개념

주문 릴레이션은 고객 릴레이션을 참조하므로 주문 릴레이션의 고객번호 속성은 외래 식별자

이때 주문 릴레이션의 고객번호 속성 값은 고객 릴레이션의 주 식별자인 고객번호 속성에 존재해야 한다.

참조 무결성은 데이터 모델에서 절대적으로 필요한 중요한 요소이며 제약

참조 무결성은 FK(Foreign Key) 제약에 의해서 지켜진다.

도메인 무결성

도메인 무결성은 속성 값과 관련된 제약

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

동일한 속성에 사용되는 값들은 동일한 성격의 값이 사용되어야 한다.

도메인 무결성 예시

고객이름 속성에 "Homer"는 허용, 777은 불가

전화번호 속성에 "555-5555"는 허용, "오오오~오오오오"는 불가

도메인 무결성은 기본 값, Null 허용 여부, 체크 조건 등으로 지켜질 수 있다.

업무 무결성

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

넓게 보면 엔터티 무결성이나 참조 무결성, 도메인 무결성도 업무 무결성에 포함

업무 무결성 예시

주문 금액 3만 원 이상이면 무료배송

초회 보험료를 입금하지 않은 보험 계약은 무효

업무 무결성은 범위가 넓어 주로 프로그램(의 로직)에서 확인

업무 무결성을 물리적으로 강제하는 대표적인 방법에는 트리거가 존재

반응형