앞 문제에서는 캐릭터 이름을 중복 저장하지 않으므로 이름이 바뀌어도 한 행만 고치면 된다고 설명했습니다.
다만 그 예시는 조금 인위적이었습니다. 프로그램 이름과 배우 이름은 중복되어 있었으니까요.
어떤 이름도 중복되지 않게 하려면 테이블을 더 두고 조인을 여러 번 사용해야 합니다.
여기에는 캐릭터, TV 프로그램, 배우 테이블이 있습니다. 이 테이블들은 사물(엔티티라고도 합니다)을 나타냅니다.
그 밖에 character_tv_show와 character_actor라는 관계 테이블이 있어 두 엔티티 사이의 관계를 담습니다.
이는 관계를 유연하게 표현하는 방법입니다. 어떤 캐릭터는 여러 프로그램에 나오고, 어떤 배우는 여러 캐릭터를 연기한 것으로 알려져 있기 때문입니다.
각 캐릭터 이름과 그 프로그램 이름을 얻으려면 이렇게 쓸 수 있습니다.
SELECT character.name, tv_show.name
FROM character
INNER JOIN character_tv_show
ON character.id = character_tv_show.character_id
INNER JOIN tv_show
ON character_tv_show.tv_show_id = tv_show.id;
조인을 두 번 사용해 각 캐릭터 이름과 그를 연기하는 배우를 짝지을 수 있나요? 다음 컬럼을 선택하세요: character.name, actor.name