Questo è il secondo esempio, che porteremo avanti per tutto il
manuale, di progettazione e realizzazione di una base di dati. Tutte le
scelte sono attuate per semplificare al massimo la realizzazione del database,
lo scopo è quello di fornire un’idea e un metodo per risolvere
anche problemi più complessi di quelli analizzati.
PROBLEMA
Siamo interessati a memorizzare la collezione di CD musicali di
casa. Le informazioni che interessano sono quelle relative al titolo dell’album
e al nome dell’autore. Ove sia possibile, si intende registrare, inoltre,
i titoli delle canzoni di un album, la casa discografica e il genere musicale.
ANALISI DEI REQUISITI
Cosa siamo interessati a rappresentare:
Si vogliono memorizzare i CD e le musicassette di casa, i dati che interessano
sono il titolo dell’album, cognome e nome dell’autore o il nome del gruppo,
la casa discografica, e il genere musicale. Della casa discografica interessa
il nome, indirizzo Internet e il numero di telefono.
Si possono incontrare cantanti o singoli gruppi, per semplificare si considera
il cognome come il nome del gruppo musicale.
Lo stesso titolo può apparire su più album (capita di trovare
autori diversi che hanno utilizzato lo stesso titolo di album, o autori
che in diversi album hanno la stessa canzone).
Una canzone (titolo della canzone) appartiene ad un solo album, per semplificare
il database, quindi se due album contengono canzoni con lo stesso titolo,
ci saranno più righe sull’archivio.
Dati che non possono mancare:
Un album è caratterizzato per sua natura dal titolo, questo significa
che non potrà esistere sulla tabella che rappresenta i CD e le
musicassette un record senza titolo, non avrebbe nessun significato.
Per gli autori l’unico dato importante è il cognome.
Per le case discografiche l’unico dato importante è il nome.
Per le canzoni il dato importante è il titolo.
Integrità referenziali:
Quando eliminiamo (o aggiorniamo) un autore, tutti i suoi album devono
essere eliminati (o aggiornati).
Quando eliminiamo (o aggiorniamo) un album, tutti le canzoni corrispondenti
devono essere eliminate (o aggiornate).
Quando eliminiamo (o aggiorniamo) una casa discografica, devono rimanere
gli album. Se la casa discografica viene aggiornata, devono essere aggiornati
anche gli album.
PROGETTAZIONE
Definizione delle tabelle.
Dall’analisi dei requisiti risulta che ci sono 4 oggetti da rappresentare:
album, autori, case discografiche e canzoni.
Per ogni tabella si devono definire i campi e le caratteristiche dei
campi. Procediamo creando uno schema su un foglio di carta, per ogni
tabella, simile a quelli rappresentati nelle figura 8.01 – 8.04.
FIG. 8.01
Avendo già l’esperienza dell’archivio libreria, ci preoccupiamo
subito di scegliere o aggiungere un campo chiave primaria in ogni tabella.
FIG. 8.02
FIG. 8.03
FIG. 8.04
Definizione delle relazioni.
Un album può avere più autori, un autore può aver
pubblicato più album. La relazione è molti a molti.
Un album ha più canzoni, una canzone corrisponde ad un solo album.
La relazione è uno a molti, la tabella album rappresenta il lato
uno, la tabella canzoni il lato molti.
Un album corrisponde ad una casa editrice, una casa editrice corrisponde
a più album. La relazione è uno a molti, la tabella album
è il lato molti, la tabella case editrici è il lato uno.
Tracciamo uno schema grafico, figura 8.05.
FIG. 8.05
Normalizzazione delle tabelle.
Tutte le regole sono rispettate, ma sappiamo che la relazione molti
a molti tra la tabella album e la tabella autori non può essere
creata in un DBMS. Come si è visto, si deve creare una nuova
tabella relazione, che contiene i due campi chiave primaria della tabelle
considerate, la figura 8.06 visualizza la tabella relazioni, da aggiungere
allo schema.
FIG. 8.06
La chiave primaria della tabella relazioni sono i due campi, Album
e Autore, insieme.
Anche lo schema delle relazioni deve essere modificato, come nella figura
8.07.