-
[Database] 데이터 정리하기 (N:N)카테고리 없음 2020. 3. 22. 22:13
앞서 내가 본 영화들을 어떻게 하면 효율적으로 정리할 수 있을까에 대해 다뤄보았다. 영화, 그리고 감독을 기준으로 테이블을 만들어 정리했다.
정리를 하다 보니 욕심이 생겨 장르 정보를 추가해서 아래와 같은 테이블을 작성했다.
1. full_table id(PK) movie director genre 1 기생충 봉준호 드라마, 스릴러 2 아메리칸 허슬 데이비드 O. 러셀 드라마 3 괴물 봉준호 스릴러 4 어라이벌 드니 빌뇌브 SF, 드라마 5 옥자 봉준호 드라마 6 라라랜드 데미언 셔젤 로맨스 7 조조 래빗 타이카 와이티티 코미디, 드라마 8 실버라이닝 플레이북 데이비드 O. 러셀 코미디, 드라마 9 위플래쉬 데미언 셔젤 드라마 10 문라이트 베리 젠킨스 드라마, 로맨스 정리를 하다보니 궁금한 점이 생긴다. 감독과 장르의 관계가 궁금해지기 시작했다. 어떻게 하면 감독과 장르의 관계를 한 눈에 볼 수 없을까?
* N:N
이전과 마찬가지로 데이터 간의 관계를 살펴보자. 먼저 한 감독은 여러 개의 장르를 가질 수 있다. 봉준호의 경우 드라마, 외에 스릴러 장르를 가지고 있다.
그렇다면 장르는 어떤가. 한 장르는 여러 개의 감독을 포함할 수 있다. 로맨스 장르의 경우 데미언 셔젤과 베리 젠킨스를 가지고 있다. 말하자면 감독과 장르는 다대 다, 즉 N:N의 관계를 가지고 있다.
이를 정리하기 위해 먼저 감독과 장르를 따로 떼어 각각의 테이블을 만들어보았다.
director_table genre_table director_id(PK) director genre_id(PK) director 1 봉준호 1 드라마 2 타이카 와이티티 2 스릴러 3 데미언 셔젤 3 SF 4 데이비드 O. 러셀 4 로맨스 5 드니 빌뇌브 5 코미디 6 베리 젠킨스 각 감독과 장르는 각각의 고유키(PK)를 가지고 있다. 이를 바탕으로 각 고유키를 참조하는 새로운 테이블을 아래와 같이 만들 수 있다.
director_genre_table
id(PK) director_id(FK) genre_id(FK) 1 1 1 2 1 2 3 2 1 4 2 5 5 3 1 6 3 4 7 4 1 8 4 5 9 5 1 10 5 3 11 6 1 12 6 4 감독과 장르 간의 관계를 보여주는 새로운 테이블이 그려졌다. director_id, genre_id 칼럼은 각각 director, genre 테이블을 참조하고 있다. 따라서 일괄 수정 등 데이터 관리가 한결 용이해졌음을 알 수 있다.