Foreign key ( 외래키 )
외래키 ( Foreign key )
: 여러개의 테이블이 있을 때 데이터 무결성을 유지하기 위해 중요하다.
외래키를 설정하면 참조 무결성을 강제할 수 있으며, 다른 테이블의 데이터를 변경할 때 해당 외래키를
참조하는 모든 테이블의 데이터도 함께 변경된다. 이를 통해 데이터 일관성과 정확성을 유지할 수 있다.
- 외래키로 설정하기 위해서는 기본적으로 primary key 설정이 되어있어야한다.
- 외래키와 기본키의 타입이 일치해야한다.
- 다음과 같이 예를 들 수 있다.
위 예시에서는 orders 테이블의 product_id 피륻가 products 테이블의 product_id 필드를 참조하도록 외래키 제약조건을 설정했다.
orders 테이블의 product_id 필드는 products 테이블의 product_id 필드와 관계를 맺게 되며,
products 테이블의 product_id 값이 변경될 때 orders 테이블의 해당 값을 참조하는 모든 레코드가 영향을 받는다.
** 외래키 제약조건에서 참조할 필드와 참조할 테이블의 이름을 모두 명시해야하며, 이 때 참조할 필드는 소괄호로
묶어야한다.
alter table board add constraint foreign key (id) references member (id);
또는 테이블을 생성할 때
Foreign key (필드명) references 참조테이블(참조필드);
- member와 board 테이블을 다음과 같이 설정
- member table의 value
- board 의 id 필드가 member의 id 필드가 외래키로 참조하고 있기 때문에, member 테이블에 존재하지 않는
id는 board 데이터베이스에 insert 할 수 없다. ( 게시판에 글을 쓸 수 없다고 봐야함 )
-> id 'abcd' 로 insert 했을 때만 board 테이블에 행이 추가됐다.
** board 게시판을 create 할 때 no 에 auto_increament와 regdate 에 default now() 같은 요소도 주의하자