Nell’esercizio precedente abbiamo spiegato che i nomi dei personaggi non erano duplicati, così che, se il nome di un personaggio cambiasse, andrebbe modificato in una sola riga.
L’esempio però era un po’ artificiale, perché i nomi delle serie e degli attori erano duplicati.
Per non duplicare nessun nome servono più tabelle e più join.
Abbiamo tabelle per i personaggi, le serie TV e gli attori. Queste tabelle rappresentano delle cose (dette anche entità).
Oltre a queste, abbiamo le tabelle di relazione character_tv_show e character_actor, che descrivono il legame fra due entità.
È un modo flessibile di rappresentare le relazioni fra entità diverse, dato che alcuni personaggi possono comparire in più serie e alcuni attori sono noti per aver interpretato più personaggi.
Per ottenere il nome di ogni personaggio insieme al nome della sua serie possiamo scrivere
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;
Riesci a usare due join per abbinare il nome di ogni personaggio all’attore che lo interpreta? Seleziona le colonne: character.name, actor.name