앞서 두개의 테이블을 연결해서 사용해봤다.
이번에는 두개가 아닌 여러개의 테이블에서의 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 를 가지고 있어, 조인이 가능하다.
이렇게 더 많은 테이블도 나눠서 설계하여 연결하는 것이 가능하다.
'IT 프로그래밍 관련 > MySQL' 카테고리의 다른 글
데이터베이스의 테이블 인덱스 생성 (0) | 2021.04.12 |
---|---|
MySQL null 을 채워주는 ifnull함수 (0) | 2021.03.17 |
MySQL 정규화, 테이블의 연결 join (0) | 2021.03.17 |
MySQL case end 조건식 (0) | 2021.03.17 |
MySQL에서의 in 과 not in (0) | 2021.03.17 |
댓글