- 데이터 무결성 제약 조건의 종류
무결성 제약 조건 | 설명 |
NOT NULL | 열이 NULL을 포함할 수 없음 |
고유 키(unique key) | 테이블의 모든 행에서 고유한 값을 갖는 열 또는 열 조합을 지정 |
기본 키(primary key) | 해당 컬럼 값은 반드시 존재해야 하며 유일해야 함 (UNIQUE, NOT NULL 제약조건을 결합한 형태) |
참조 키(foreign key) | 한 열과 참조된 테이블의 열 간에 외래 키 관계를 설정하고 시행 |
CHECK | 해당 칼럼에 저장 가능한 데이터 값의 범위나 조건 지정 |
1. NOT NULL 무결성 제약 조건
- 해당 컬럼의 값이 NULL을 가질 수 없다는 것을 정의하는 제약 조건
- 테이블 레벨이 아닌 열 레벨로만 지정 가능하다.
- NOT NULL 무결성 제약조건이 지정된 칼럼은 반드시 값을 입력해야 한다. (생략 시 오류 발생)
- 기존 데이터를 NULL로 수정하는 경우에도 오류 발생
2. 고유 키 무결성 제약 조건
- 한 테이블 내에서 칼럼이 동일한 값을 가질 수 없음을 정의하는 제약 조건
- 열 레벨 또는 테이블 레벨로 정의할 수 있다.
- NULL은 고유 키 제약 조건에 위배되지 않으므로 입력할 수 있다. (NULL은 항상 UNIQUE 함)
- 고유 키 무결성 제약 조건이 정의되면 테이블에 제약 조건과 같은 이름의 인덱스가 자동적으로 생성
3. 기본 키 무결성 제약 조건
- 기본 키는 테이블 내에 저장된 행을 유일하게 식별할 수 있는 식별자로 사용
- 하나 이상의 컬럼에 의해 테이블의 모든 행을 구별하기 위한 식별자를 정의하기 위한 제약 조건
- 관계형 데이터 모델에서 테이블은 행을 원소로 가지는 집합으로 정의되어 집합 내의 모든 행을 구별할 수 있는 식별자가 필요
- 고유 키 제약 조건과 NOT NULL 제약 조건을 결합한 개념
4. 참조 무결성 제약 조건
- 한 테이블의 컬럼 값이 자신 또는 다른 테이블의 컬럼 값과 일치시키기 위한 제약 조건
- 자식 테이블 : 다른 테이블의 컬럼 값을 참조하는 테이블
- 부모 테이블 : 다른 테이블에 의해 참조되는 테이블
- 외래 키 : 부모 테이블의 컬럼 값을 참조하는 자식 테이블의 컬럼
- 참조 키 : 자식 테이블에서 참조하는 부모 테이블의 컬럼
- 갱신 제한과 삭제 제한에서 허용되는 DML 명령문
DML 명령 | 부모 테이블 | 자식 테이블 |
INSERT | 참조 키 값이 고유 경우에만 가능 | 외래 키 값이 참조 키 값 중의 하나와 일치하거나 null인 경우에 가능 |
UPDATE | 참조 키 값을 참조하는 자식 테이블의 컬럼 값이 없는 경우에만 가능 | 수정되는 외래 키 값이 참조 키 값 중 의 하나와 일치할 경우에 가능 |
DELETE RESTRICT |
참조 키 값을 참조하는 자식 테이블의 컬럼 값이 없는 경우에만 가능 | 항상 가능 |
DELETE CASCADE |
항상 가능 | 항상 가능 |
5. CHECK 무결성 제약 조건
- 컬럼에서 허용 가능한 데이터의 범위나 조건을 지정
- 데이터 입력이나 수정 시 실수로 부정확한 값 입력 예방
- 하나의 컬럼에 여러 개의 CHECK 무결성 제약 조건을 지정 가능
- CURRVAL, NEXTVAL과 같은 가상 컬럼이나 SYSDATE, USER와 같은 함수는 사용 불가능