FOREIGN KEY의 사용법, 예제

728x90

DB를 사용할 때 종종 여러가지 테이블을 한군데로 묶어서 사용하고 싶을 때가 있다.

만약 특정 연결값이 있다면 한번에 묶어서 VIEW로 볼 수도 있고 그 값이 변경이 된다면 그 연결된 값도 변경이 되면 좋지 않을까?

 

그래서 사용할 수 있는 것이 FOREIGN KEY이다

 

예시를 들어보자

 

만약 유저 정보와 그 유저의 거래정보를 저장하는 테이블이 있다고 가정하자

 

유저 테이블:

 

 

거래정보 테이블:

 

유저테이블의 num값을 FOREIGN KEY의 references로 삼고 userboard의 num을 foreign key의 자식 객체로 정의하려면 아래와 같이 정의한다.

ALTER TABLE userboard ADD FOREIGN KEY(num) REFERENCES userinfo(num) [ON DELETE CASCADE / ON UPDATE CASECADE];

 

  • ON DELETE CASCADE
    외래 키에서 참조하는 키가 포함된 행을 삭제하려고 하면 해당 외래 키가 포함되어 있는 모든 행도 삭제
  • ON UPDATE CASCADE
    외래 키에서 참조하는 키 값이 포함된 행에서 키 값을 업데이트 하면 해당 외래 키를 구성하는 모든 값도 키에 지정된 새 값으로 업데이트되도록 지정

 

위의 CASCADE 값까지 지정하게 되면 데이터베이스가 아래의 제약사항을 가지고 연결된다.

  • 자식데이터베이스인 거래정보 테이블의 num은 부모데이터베이스인 유저 테이블이 가지고 있는 num값 밖에 넣지못한다.
  • 또한 부모테이블의 num값이 바뀌면 자식테이블의 num값도 같이 변경되어 값을 서로 연결시킬 수 있다.
  • num값이 지워지면 자식테이블의 전체 테이블(row)도 지워진다.

 

728x90