Database - 무결성 제약 조건

Bomin Seo·2022년 7월 22일
0

데이터 무결성

  • 데이터의 정확성 또는 유효성을 의미
  • 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적 또는 명시적으로 정의한다.
  • 데이터베이스가 갱신될 때 DBMS가 자동적으로 일관성 조건을 검사하므로 응용프로그램들은 일관성 조건을 검사할 필요가 없다.

도메인 제약조건

  • 각 애튜리뷰트 값이 반드시 원자값이어야 한다. (묵시적)

  • 애튜리뷰트 값의 디폴트값, 가능한 값들의 범위 등을 지정할 수 있다.

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

  • SQL2는 도메인을 명시적으로 정의하는 것을 허용하지만, ORACLE을 지원하지 않는다.


키 제약 조건

  • 키 애트리뷰트에 중복된 값이 존재해서는 안된다.
ID int NOT NULL UNIQUE

기본 키와 엔티티 무결성 제약 조건

엔티티

  • 사람, 장소 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 물리적 또는 논리적 객체, 하나의 릴레이션에는 동일한 애튜리뷰트를 갖는 엔티티들만 속한다.
  • 릴레이션의 기본 키를 구성하는 어떤 애튜리뷰트도 널값을 가질 수 없다는 제약조건
  • 대체 키에는 적용되지 않는다.
  • 사용자는 릴레이션을 생성하는 데이터 정의문에서 어떤 애튜리뷰트가 릴레이션의 기본 키의 구성요소인가를 DBMS에게 알려준다.

외래키와 참조 무결성 제약 조건

  • 참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성 유지에 사용된다.
  • 릴레이션 사이의 관계들이 기본 키 참조를 기반으로 묵시적으로 표현되기에 중요하다.

참조 무결성 제약조건의 성립 조건 (두가지 조건 중 하나만 성립되도 만족한다)

  • 외래 키의 값이 참조되는 투플의 기본 키 값과 같은 경우
  • 참조되는 기본 키 값과 같지 않을 경우 널값을 가져야한다.
    • 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키로 구성되지 않아야 한다.

무결성 제약 조건의 유지

  • 데이터베이스에 대한 갱신 연산은 삽입, 삭제, 수정 연산으로 구분한다
  • DBMS는 각각의 갱신 연산에 대하여 데이터 베이스가 무결성 제약조건을 만족하도록 한다.

삽입연산에서의 무결성 제약 조건 유지

  • 참조되는 릴레이션에 새로운 투플이 삽입되면 참조 무결성 제약조건은 위배되지 않고, 이외의 다른 제약 조건은 위배될 수도 있다.
  • 참조하는 릴레이션에 새로운 투플이 삽입되면 모든 무결성 제약 조건을 위배할 수도 있다.
  • 제약 조건을 위배하는 삽입 연산은 DBMS가 거절함으로써 무결성을 유지한다.

삭제연산에서의 무결성 제약 조건 유지

  • 참조하는 릴레이션에서의 투플 삭제는 모든 제약 조건을 위배하지 않는다.
  • 참조되는 릴레이션에서의 삭제는 참조 무결성 제약 조건을 위배할 수도 있다.

수정연산에서의 무결성 제약 조건 유지

  • DBMS가 수정하는 애트리뷰트가 외래 키인지 기본 키인지에 대하여 식별한다.
    • 수정 대상 애트리뷰트가 외래키/기본키가 아니라면 수정 연산은 참조 무결성 조건을 위배하지 않는다.
  • 기본키/외래키를 수정하는 것은 삭제 후 삽입하는 연산과 동일한 방식으로 적용된다.

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

ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}

제한

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

연쇄 (CASCADE)

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

Null value

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

default

  • 널값을 넣는 대신에 디폴트 값을 삽입한다.
profile
KHU, SWCON

0개의 댓글