CS/DB(데이터베이스)

무결성 제약조건

sunhokim28 2024. 9. 28. 02:30

무결성 제약조건(Integrity Constraint)

DB에서의 무결성이란 데이터의 정확성,일관성을 나타냄

즉,데이터에 결함이 없는 상태를 말한다.

무결성 제약조건은 DB의 정확성,일관성을 보장하기 위해 저장,삭제,수정 등을 제약하기 위한 조건이다.

데이터 무결성(Data integrity)

 데이터의 정확성 또는 유효성을 의미한다.

일관된 데이터베이스 상태를 정의(시스템 카탈로그,Data dictionary)하는 규칙들을 묵시적으로 또는 명시적으로 정의함

데이터베이스가 갱신될 때 DBMS가 자동적으로 일관성 조건을 검사하므로 응용 프로그램들은 일관성 조건을 검사할 필요가 없음.

도메인 제약조건(Domain constaraint)

각 애트리뷰트에 올 수 있는 값을 지정.또한 각 애트리뷰트 값이 반드시 원자값(데이터 정확성이 올라감)이어야 함

애트리뷰트 값의 디폴트(Default)값,가능한 값들의 범위 등을 지정할 수 있음

디폴트 값이란,아무것도 지정하지않은 애트리뷰트들이 존재할때 그곳에 들어갈 기본값이다.null값이 될 수 도 있고,다른 애트리뷰트를 지정할 수 도 있다.

데이터 형식을 통해 값들의 유형을 제한하고,CHECK 제약 조건을 통해 값들의 범위를 제한

키 제약 조건(Key constraint)

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

기본 키와 엔티티 무결성 제약조건(Entitiy Integrity Constraint)

릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 null값을 가질 수 없다.당연하지만 키로서의 역할을 못한다.

대체 키에는 적용되지 않는다.

외래 키와 참조 무결성 제약조건(Referential integrity constraint)

참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용됨.

릴레이션 R2,R1이 있고 R2의 외래 키가 R1의 기본 키를 참조할 때 참조 무결성 제약조건은 두 조건중 하나가 성립되면 만족한다.

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

2.외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 null값을 가진다.

무결성 제약조건의 유지

데이터베이스에 대한 갱신 연산은 삽입,삭제,수정으로 구분한다.

DBMS는 각각의 갱신 연산에 대하여 DB가 무결성 제약조건들을 만족하도록 조취를 취한다.

DBMS는 외래 키가 갱신되거나,참조된 기본 키가 갱신되었을 때 참조 무결성 제약 조건이 위배되지 않도록 해야함.

 

삽입

참조되는 테이블에 새로운 투플이 삽입되면 참조 무결성 제약조건은 위배되지 않는다.(단순추가니깐?)

하지만 참조하는 테이블에 기본 키 애트리뷰트의 값에 따라서 도메인 제약조건,키 제약조건,엔티티 무결성 제약조건등을 위배할 수도 있다.

삭제

참조하는 릴레이션에서 투플이 삭제되면 상관없지만 참조되는 릴레이션에서 투플이 삭제되면 참조 무결성 제약조건을 위배할 수 있다.

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

제한(Restricted)

제약조건 위배를 야기한 연산을 단순히 거절 

ex)오류메시지와 함께 취소

연쇄(Cascade)

참조되는 릴레이션에서 투플을 삭제하고,참조하는 릴레이션에서 이 투플을 참조하는 투플들도 함께 삭제 >> 모두 삭제

ORACLE을 기반으로 하는 데이터베이스 배움터(홍의경 저)의 사진을 참고하였음.Copyright에 문제가 될시 삭제 하겠음.

널값(Nulltify)

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

디폴트값(Default value)

null값을 넣는 대신 디폴트값을 넣는다.

수정(Recorrection)

DBMS가 수정하는 애트피뷰트에 대해 기본 키인지 외래 키인지 검사함.이에 해당되지 않으면 수정 연산이 참조 무결성 제약조건을 위배하지 않음.

사실 Logic자체는 삽입 + 삭제다.