Sql

Foreign key ( 외래키 )

hojomu 2023. 3. 17. 11:41

외래키 ( 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() 같은 요소도 주의하자