데이터베이스 무결성(Database Integrity)은 저장된 정보가 유효하고 일관된 상태를 유지하는 것을 의미합니다. 무결성은 일반적으로 제약 조건(constraints), 즉 데이터베이스가 절대 위반할 수 없는 일관성 규칙으로 정의됩니다. 이러한 제약 조건은 개별 속성(컬럼)에 적용될 수도 있고, 테이블 간의 관계에 적용될 수도 있습니다.
무결성 제약 조건은 승인된 사용자가 데이터베이스에서 수행하는 변경 작업(삽입, 수정, 삭제)이 데이터 일관성의 손실로 이어지지 않도록 보장합니다. 따라서 무결성 제약 조건은 데이터베이스가 실수로 손상되는 것을 막아주는 안전장치 역할을 합니다.
데이터 무결성은 크게 다음과 같은 다섯 가지 유형으로 나눌 수 있습니다.
1. 논리적 무결성(Logical Integrity)
관계형 데이터베이스에서 논리적 무결성은 데이터가 다양한 방식으로 활용되더라도 그 상태가 온전하게 유지되도록 보장합니다. 논리적 무결성은 물리적 무결성과 마찬가지로 사람의 실수나 해커의 공격으로부터 정보를 보호하지만, 그 보호 방식은 서로 다릅니다.
논리적 무결성은 오류가 발생했을 때 문제가 됩니다. 대표적인 예로 사람이 데이터베이스에 정보를 수동으로 입력하는 과정에서 실수하는 경우를 들 수 있습니다. 데이터 무결성이 훼손되는 흔한 원인으로는 소프트웨어 버그와 악성코드(멀웨어), 그리고 데이터베이스 내 한 위치에서 다른 위치로 데이터를 이동할 때 일부 필드가 누락되는 경우 등이 있습니다.
2. 참조 무결성(Referential Integrity)
참조 무결성은 데이터가 일관되게 저장되고 사용될 수 있도록 강제하는 모든 절차와 규칙을 정의합니다. 이는 외래 키(foreign key) 개념과 밀접한 관련이 있습니다.
외래 키의 원칙에 따르면 외래 키 값은 두 가지 상태 중 하나를 가질 수 있습니다. 첫 번째는 다른 테이블의 기본 키(primary key) 값을 참조하는 것이고, 두 번째는 NULL(널) 값인 것입니다. NULL은 단순히 두 테이블 사이에 관계가 없음을 의미하거나, 아직 관계가 확인되지 않았음을 나타낼 수 있습니다.
3. 사용자 정의 무결성(User-Defined Integrity)
사용자 정의 무결성은 개체 무결성, 참조 무결성, 도메인 무결성으로 커버되지 않는 영역에서 사용자가 직접 정의한 데이터 집합이나 비즈니스 규칙을 말합니다. 예를 들어 회사가 직원들의 시정 조치 내역을 입력하기 위한 컬럼을 만든다면, 이 데이터는 '사용자 정의' 무결성에 해당합니다.
4. 도메인 무결성(Domain Integrity)
도메인 무결성은 모든 데이터 항목이 올바른 도메인(허용된 값의 범위)에 속하도록 보장하는 일련의 규칙과 절차입니다. 예를 들어 사용자가 거리 주소 입력란에 생년월일을 입력하면, 시스템은 오류 메시지를 표시하여 잘못된 정보가 해당 필드에 입력되는 것을 방지합니다.
5. 물리적 무결성(Physical Integrity)
물리적 무결성은 데이터가 저장 및 검색되는 전 과정에서 그 완전성과 정확성이 보호되는 것을 의미합니다. 자연재해 발생, 정전, 해커에 의한 데이터베이스 기능 방해 등이 일어나면 물리적 무결성은 위험에 노출될 수 있습니다.
데이터 무결성이 중요한 이유
데이터 무결성 개념은 데이터베이스의 모든 데이터가 추적 가능하고 다른 정보와 연결될 수 있음을 보장합니다. 덕분에 모든 데이터를 언제든 복구하고 검색할 수 있습니다. 잘 정의되고 체계적으로 통제되는 데이터 무결성 시스템을 갖추면 안정성, 성능, 재사용성, 유지보수성이 모두 향상됩니다.