데이터베이스 무결성 제약 조건
데이터베이스 무결성 제약 조건은 저장 데이터의 정확성과 일관성을 지키는 규칙이다. 이 규칙은 스키마에 선언되며, DBMS가 삽입·수정·삭제 때마다 자동으로 검사한다. 응용마다 검사 로직을 따로 두면 누락이 생기므로 DBMS에서 일원화한다. 무결성 제약은 대상에 따라…
주요 장면
대본
한 줄 정의
데이터베이스 무결성 제약 조건은 저장 데이터의 정확성과 일관성을 지키는 규칙이다.
이 규칙은 스키마에 선언되며, DBMS가 삽입·수정·삭제 때마다 자동으로 검사한다.
응용마다 검사 로직을 따로 두면 누락이 생기므로 DBMS에서 일원화한다.
무결성의 종류
무결성 제약은 대상에 따라 여러 종류로 나뉜다.
개체 무결성은 기본키, 참조 무결성은 외래키, 도메인 무결성은 컬럼 값이 대상이다.
사용자 정의 무결성은 CHECK나 트리거로 구현하는 업무 규칙이다.
개체·참조 무결성
개체 무결성은 기본키가 NULL이거나 중복되면 안 된다는 규칙이다.
참조 무결성은 외래키가 NULL이거나 부모 테이블의 기본키 값과 일치해야 한다는 규칙이다.
두 규칙은 관계형 모델의 기본 규칙이므로 DBMS가 기본으로 검사한다.
참조 동작
삭제할 때 참조 동작은 업무 의미에 따라 고른다.
RESTRICT는 자식이 있으면 삭제를 막고, CASCADE는 자식을 함께 지운다.
SET NULL은 자식의 외래키를 NULL로 바꿔 행을 보존한다.
주문과 주문상세 예시
앞서 던진 문제의 답은 RESTRICT다.
가상의 예로 주문상세의 ORDER_ID는 주문의 기본키를 참조하는 외래키다.
존재하지 않는 주문 번호는 거부되고, 주문상세가 남은 주문도 삭제가 막힌다.
수량 QTY에 CHECK를 두면 1 미만 값은 도메인 무결성에 따라 거부된다.
흔한 실수
시험에서 흔한 실수는 개체 무결성과 참조 무결성을 섞는 것이다.
외래키의 NULL 허용을 모두 금지로 쓰면 안 된다. 정의에 NULL 허용이 포함된다.
CASCADE를 무조건 좋다고 쓰면 위험을 놓친 것으로 보인다. UNIQUE의 다중 NULL도 확인한다.
핵심 정리
정리하면 무결성 제약은 정확성과 일관성을 DBMS가 자동으로 강제하는 장치다.
개체 무결성과 참조 무결성을 구분하고, 참조 동작은 업무 생명주기에 맞춰 고른다.
시험에서는 정의, 종류, 두 무결성의 비교, 유지 방법을 묻는다.