본문으로 바로가기

   

 

참조 무결성을 위한 FOREIGN KEY 제약 조건

  • - 다음은 ERD(Entity Relation Diagram)로서 테이블을 생성하기에 앞서 데이터베이스 모델링 과정에서 업무를 분석한 후 얻어낸 개체와 관계를 다이어그램으로 나타낸 것입니다.

  • - ERD 를 보고 데이터베이스를 구현할 때에는 부서나 사원과 같은 개체는 테이블로 정의하고 소속이란 관계는 참조의 무결성을 위한 특정 컬럼에 외래 키 제약 조건으로 정의합니다.

  • 참조 무결성은 두 테이블 사이(사원, 부서)의 주종관계에 의해서 결정되는데 주체가 되는 테이블은 부모 테이블이 되고 종속이 되는 테이블은 자식 테이블이 됩니다.

사원은 회사 내에서 존재하는 부서에 소속되어야 합니다.
  • 위와 같이 표현하면 부서가 주체(부모 테이블) 사원이 종속(자식 테이블)이 됩니다.

  • 주체 관계가 애매한 경우 먼저 정의되어야 하는 테이블이 부모 테이블, 나중에 정의되어야 하는 테이블이 자식 테이블이 됩니다.

  • 외래 키(FOREIGN KEY) 제약 조건은 자식 테이블인 사원 테이블 (EMP)의 부서 번호(DEPNTO) 컬럼에 부모 테이블인 부서 테이블(DEPT)의 부서번호(DEPTNO)를 부모 키로 지정하는 것입니다.

  • 이때 주의할 점은 부모 키가 되기 위한 컬럼은 반드시 부모 테이블의 기본키(PRIMARY KEY)나 유일키(UNIQUE)로 설정되어 있어야 한다는 것입니다.

 

 

EX) 외래키 제약 조건을 설정해봅시다.

CREATE TABLE EMP07
( EMPNO NUMBER(4) CONSTRAINT EMP07_EMPNO_PK PRIMARY KEY,
ENAME VARCHAR2(10) CONSTRAINT EMP07_ENAME_NN UNIQUE,
JOB VARCHAR2(9),
DEPTNO NUMBER(2) CONSTRAINT EMP07_DEPTNO_FK REFERENCES DEPT(DEPTNO));

 

 

EX) EMP07 테이블에 부서 테이블에 존재하지 않는 부서번호를 갖는 사원 정보를 추가해 봅시다.