본문 바로가기
IT 프로그래밍 관련/MySQL

MySQL 여러 테이블에서 foreign key 사용법

by 지나는행인 2021. 3. 17.
728x90

앞서 두개의 테이블을 연결해서 사용해봤다.

 

이번에는 두개가 아닌 여러개의 테이블에서의 foreign key 사용법에 대해 보겠다.

 

 

 

 

 

 

 

 

tv 프로그램에 관한 리뷰 앱을 개발한다고 가정하면,

 

아래와 같은 테이블들과 ,  그 테이블들의 연결이 필요하다.

 

리뷰를 쓴 사람들의 정보가 있고,

 

tv프로그램에 관한 정보가 있고, 

 

리뷰에 관한 정보를 담은 테이블을 만드는데,  여기서 리뷰정보 테이블은, 

 

어떤 프로그램 리뷰를 썼는지 , 누가 썼는지 알아야 한다.

 

그렇기에 리뷰 테이블에서는 두개의 테이블과 연결이 되어야 한다.

(리뷰쓴사람의 정보와, tv프로그램을 가져와 연결이 되도록 해야한다.)

 

이렇게 테이블을 만들어 보겠다.   

1
2
3
4
5
6
7
create table reviewers (id int auto_increment primary key
first_name varchar(100), last_name varchar(100) ) ;
 
create table series (id int auto_increment primary key
title varchar(100), released_year int, genre varchar(100) );
 
create table reviews (id int auto_increment primary key
rating double, reviewer_id int , series_id int
                      foreign key( reviewer_id ) references reviewers(id),    
                      foreign key( series_id ) references series(id) )  ;
 
cs

각각의 테이블의 id를 primary key 로 만들어준다.

 

그리고 reviews 테이블에서는 reviewers테이블의 id컬럼을 받는 reviewer_id컬럼과,

 

series테이블의 id컬럼을 받는 series_id 컬럼을 만들고, 

 

외래키 ( foreign key ) 로 지정하여 만든다.

 

세 테이블을 연결하는 방법 코드이다.   

1
2
3
4
5
6
7
select *
from series as s
join reviews as r
    on s.id = r.series_id
join reviewers as rv
    on r.reviewer_id = rv.id
order by s.title;
cs

series 를 기준으로 하고   , reviews를 조인시킨다.   reviews 에는 series_id (외래키)가 있어 조인이 될 수 있다.

 

그 두 테이블을 먼저 합친 후 , reviewers 를 다시 조인 시킨다.

 

reviwes 에는 reviewers 의 id컬럼을 참조하는 외래키 reviewer_id 를 가지고 있어, 조인이 가능하다.

 

 

 

이렇게 더 많은 테이블도 나눠서 설계하여 연결하는 것이 가능하다.

 

 

댓글