참조 무결성

SQL로 배우는 관계형 데이터베이스 입문

Timo Grossenbacher

Data Journalist

참조 무결성

  • 다른 테이블을 참조하는 레코드는 해당 테이블의 기존 레코드를 참조해야 합니다
  • 두 테이블 간에 지정됩니다
  • 외래 키를 통해 적용됩니다
SQL로 배우는 관계형 데이터베이스 입문

참조 무결성 위반

테이블 A에서 테이블 B로의 참조 무결성이 위반되는 경우...

  • ...테이블 A의 레코드가 참조하는 테이블 B의 레코드가 삭제된 경우.
  • ...테이블 B에 존재하지 않는 레코드를 참조하는 레코드가 테이블 A에 삽입된 경우.
  • 외래 키로 위반을 방지합니다!
SQL로 배우는 관계형 데이터베이스 입문

위반 처리 방법

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
SQL로 배우는 관계형 데이터베이스 입문

위반 처리 방법 (계속)

ON DELETE...

  • ...NO ACTION: 오류 발생
  • ...CASCADE: 참조하는 모든 레코드 삭제
  • ...RESTRICT: 오류 발생
  • ...SET NULL: 참조 열을 NULL로 설정
  • ...SET DEFAULT: 참조 열을 기본값으로 설정
SQL로 배우는 관계형 데이터베이스 입문

몇 가지 예시를 살펴보겠습니다!

SQL로 배우는 관계형 데이터베이스 입문

Preparing Video For Download...