ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Database] 데이터 정리하기 (N:N)
    카테고리 없음 2020. 3. 22. 22:13

    Jojo Rabbit(2019)

    앞서 내가 본 영화들을 어떻게 하면 효율적으로 정리할 수 있을까에 대해 다뤄보았다. 영화, 그리고 감독을 기준으로 테이블을 만들어 정리했다.

    정리를 하다 보니 욕심이 생겨 장르 정보를 추가해서 아래와 같은 테이블을 작성했다.

    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 테이블을 참조하고 있다. 따라서 일괄 수정 등 데이터 관리가 한결 용이해졌음을 알 수 있다. 

    댓글