참조 무결성(referential integrity)은 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수(테이블) 간의 일관성(데이터 무결성)을 말한다. 참조 무결성은 종종 기본 키 또는 키가 아닌 후보 키외래 키의 조합으로 강제 적용된다. 참조 무결성이 강제 적용되면 외래 키가 선언된 관계 변수의 외래 키를 구성하는 속성(열)의 값은 그 관계 변수의 부모가 되는 관계 변수의 기본 키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다. 예를 들어, 다른 관계 변수의 외래 키에 의해 참조되는 쌍(dupe 행)을 제거하는 것은 참조 무결성을 파괴해 버리게 되기 때문에 관계 데이터베이스 관리 시스템(RDBMS) 참조 무결성을 유지하도록 일반적으로 삭제를 방지한다. 예외적으로 참조하는 외래 키를 포함하는 쌍을 연결하고 제거하는 것이 수반되어 삭제를 수행할 수 있으며,이 경우 참조 무결성이 유지된다. 외부 키에 의해 참조되는 듀프를 제거할 수 있는 지 여부는 데이터 정의 언어(DDL)에 의한 참조 무결성 제약 조건(constraint)에 의해 정의된다.

참조무결성을 강제적용 당하지 않은 관계 데이터베이스의 예, 이 예에서는 앨범 관계 변수(앨범 테이블)의 외부 키( artist_id )의 값에 존재하지 않는 아티스트를 참조하고 있다. 즉, 외래 키 값에 해당 참조되는 관계 변수의 기본 키가 없는 것이 있다. 여기서 "Aerosmith"라는 아티스트가 artist_id가 "4"로 존재하고 있었지만,이 아티스트가 아티스트 관계 변수에서 제거되어 버린 것이다. 그러나 앨범 "Eat the Rich"가 아티스트를 참조하고 있다. 참조 무결성을 강제 적용되면 이러한 것은 일어나지 않고 미연에 방지된다.

예제 편집

직원 데이터베이스는 직원이 근무하는 부서의 정보를 유지하고 있다. 직원 관계 변수(Employees 테이블)의 "부서 번호" 속성은 외부 키 로서 선언되고, 부서 관계 변수의 기본 키로 선언된 "부서 번호" 속성을 참조하고 있다. 있는 부서에서 실제로 근무하고 있는 직원이 있으면 해당 부서의 정보를 부서 관계 변수에서 제거하는 것은 참조 무결성을 파괴하기 때문에 관계형 데이터베이스 관리 시스템 (RDBMS)에 의해 제거 실행은 저지당할 것이다.(참조 무결성 제약 조건이 연쇄 삭제를 허용하지 않은 경우).