더북(TheBook)

④ 외래키

외래키Foreign key는 테이블 간의 참조 데이터 무결성을 위한 제약조건이다.

    CONSTRAINT 외래키명 FOREIGN KEY(컬럼명, ...)
    REFERENCES 참조 테이블(참조 테이블 컬럼명, ...)

 

사원 테이블에는 부서번호(department_id) 컬럼이 있고, 부서정보는 부서 테이블(departments)에 있다. 만약 신규 사원이 입사해 데이터를 입력하는 와중에 부서 테이블에 없는 부서번호를 입력한다면 어떻게 될까? 논리적으로 봐도 합당하지 않고 이 신입사원에 대한 부서정보를 제대로 찾을 수 없다. 즉 참조 무결성이 깨진다. 하지만 외래키를 생성해 놓으면 부서정보에 없는 부서번호를 입력할 때 오라클은 오류를 발생시켜 잘못된 데이터가 입력되는 것을 방지한다. 참조 무결성을 보장하는 것이다.

삭제도 마찬가지다. 사원 테이블에서 사용하고 있는 부서 정보를 부서 테이블에서 삭제하면 무결성이 깨진다. 하지만 외래키를 생성해 놓으면 부서 테이블에서 해당 부서정보를 삭제할 때 오류가 발생해 데이터 삭제를 막아 참조 무결성이 보장된다. 부서 테이블에서 부서번호를 변경하는 것 역시 해당 부서가 참조되고 있다면 수정할 수 없다.

외래키에 대한 제약사항은 다음과 같다.

  • 반드시 참조하는 테이블이 먼저 생성되어야 하며, 참조키가 참조 테이블의 기본키로 만들어져 있어야 한다.

  • 외래키에 사용할 수 있는 컬럼 개수는 최대 32개다.

  • 여러 컬럼을 외래키로 만들려면, 참조하는 컬럼과 외래키 컬럼의 순서와 개수는 같아야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.