# Ch05-2.md

## 무결성 제약조건(integrity constraint)

* 개념
  * 데이터가 정확하고 유효하게 유지된 상태
  * 데이터 베이스에 저장된 *데이터의 무결성을 보장*하고 데이터베이스의 상태를 *일관되게 유지*하는 것
* 종류
  * 개체 무결성 제약조건
  * 참조 무결성 제약조건

## 개체 무결성 제약조건

* 개념
  * entity integrity constraint
  * 기본키를 구성하는 모든 속성은 널 값을 가지면 안 된다
    * 널값이 된다면 튜플의 유일성을 판단할 수 없어 기본키의 목적을 상실

## 참조 무결성 제약조건

* 개념
  * referential integrity constraint
  * 외래키는 참조할 수 없는 값을 가질 수 없다 - 자신이 참조하는 릴레이션에 기본키 값으로 **존재**하는 값, 즉 참조 가능한 값만 가져야한다. - 외래키가 자신이 참조하는 릴레이션의 기본키와 상관없는 값을 가지게 되면 본래 목적을 상실하기 때문

    > 외래키가 널 값인 경우 참조 무결성을 위반한걸까?
    >
    > * 그렇지만은 않다.
    > * 널 값은 데이터가 속성 값을 모를 뿐, 존재하지 않는 값이라고 무조건 판단하기는 어렵다.
