IT 프로그래밍 관련/MySQL

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

지나는행인 2021. 3. 17. 23:32
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 를 가지고 있어, 조인이 가능하다.

 

 

 

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