[DB] 참조무결성과 CASECADE

·2025년 1월 5일

데이터베이스

목록 보기
7/22
post-thumbnail

참조 무결성

  • 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙
  • 즉, 외래키는 참조하는 릴레이션(테이블)의 기본키가 실제로 존재해야하거나 NULL이어야함
  • 부모 테이블에서 레코드 삭제(DELETE) 또는 수정(UPDATE) 작업이 수행될 때, 해당 레코드의 기본키를 참조하는 자식 테이블의 레코드가 존재할 시 참조 무결성 제약 조건 위반 오류가 발생
  • 이를 통해, 데이터의 일관성과 무결성을 유지

CASECADE

  • 부모 테이블에서 레코드 삭제 또는 수정 작업이 수행될 때, 참조 무결성 제약 조건을 유지하기 위해 자식 테이블에서 자동으로 특정 작업을 수행하도록 설정하는 것
    • ON DELETE CASECADE: 부모 테이블에서 특정 레코드를 삭제하면, 해당 레코드의 기본 키를 참조하는 자식 테이블의 레코드도 자동으로 삭제되는 옵션
    • ON UPDATE CASECADE: 부모 테이블에서 특정 레코드의 기본 키 값이 수정되면, 이를 참조하는 자식 테이블의 외래 키 값도 자동으로 업데이트되는 옵션
CREATE TABLE course (
	...
    dept_name VARCHAR(20),
    FOREIGN KEY (dept_name) REFERENCES department
    ON DELETE CASCADE
    ON UPDATE CASCADE
    ...
);

이외의 옵션
SET NULL: 부모 테이블에서 레코드 삭제(DELETE) 또는 수정(UPDATE) 시, 자식 테이블에서 참조 중인 외래 키 값을 NULL로 설정하는 옵션
SET DEFAULT: 부모 테이블의 레코드가 삭제되거나 수정될 때, 자식 테이블의 외래 키 값을 미리 정의된 기본값으로 설정하는 옵션
NO ACTION: 부모 테이블의 레코드가 삭제되거나 수정될 때, 트랜잭션이 커밋될 때 참조 무결성을 확인하여 위반시 작업 차단
RESTRICT: NO ACTION과 거의 유사하나, 부모 테이블의 레코드가 삭제되거나 수정될 때, 즉시 참조 무결성을 확인하여 위반시 작업 차단


Reference

https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html#foreign-key-referential-actions

0개의 댓글