데이터 무결성

데이터의 정확성 또는 유효성을 의미한다. 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적, 명시적으로 정의한다. 데이터베이스가 갱신될 때마다 자동적으로 검사하므로 따로 검사할 필요가 없다.

 

도메인 제약조건

애트리뷰트 값이 반드시 원자값이어야 한다. 데이터 형식을 통해 값들의 유형을 제한하고, check 제약 조건을 통해 값들의 범위를 제한할 수 있음

 

키 제약조건

키 애트리뷰트에 중복된 값이 존재해서는 안된다는 것이다.

 

엔티티 무결성 제약조건

기본 키가 각 투플들을 식별하기 위해 사용되기 때문에 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없다는 제약조건이다. 단 대체 키에는 적용되지 않는다.

 

참조 무결성 제약조건

참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는 데 사용된다. 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족된다.

1. 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같음.

2. 널 값을 가진다.(외래 키가 자신의 릴레이션에서 기본키가 아니다.)

 

 

데이터베이스를 갱신할 때마다 무결성 제약조건을 유지시켜줘야 한다. 데이터베이스에 대한 갱신 연산은 삽입, 삭제, 변경 연산으로 구분하는데 DBMS는 각 갱신, 연산마다 필요한 조치를 취한다.

 

삽입

새로 삽입되는 투플의 기본 키 애트리뷰트의 값에 따라 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건을 위배할 수 있다. 참조되는 릴레이션에 새로운 투플이 삽입되면 참조 무결성 제약조건은 위배되지 않으나, 참조하는 릴레이션에 삽입될 경우에는 위배될 수 있다.

 

삭제

참조하는 릴레이션에서 투플이 삭제되면 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건, 참조 무결성 제약조건을 위배하지 않는다. 하지만 참조되는 릴레이션에서 투플이 삭제된다면 참조 무결성 제약조건을 위배하는 경우가 생긴다.

수정

DBMS는 수정하는 애트리뷰트가 기본 키인지 외래 키인지 검사한다. 수정하려는 애트리뷰트가 둘 다 아니면 참조 무결성 제약조건을 위배하지 않는다. 기본 키나 외래 키를 수정하는 것은 삽입이나 삭제를 하는 것과 같으므로 동일하게 적용된다.

 

참조 무결성 제약조건을 만족시키기 위한 DBMS가 제공하는 옵션

제한(restricted)

위배를 야기한 연산을 단순히 거절한다.

 

연쇄(cascade)

참조되는 릴레이션에서 투플을 삭제하고, 참조하는 릴레이션에서 이 투플을 참조하는 투플들도 함께 삭제해버린다.

 

널값(nullify)

참조되는 릴레이션에서 투플을 삭제하고, 참조하는 릴레이션에서 이 투플을 참조하는 투플들의 외래 키에 널값을 삽입한다.

 

디폴트 값

널값을 넣는 대신에 디폴트 값을 넣는다.

 

 

+ Recent posts