nare.it  

PROGETTAZIONE LOGICA

RISTRUTTURAZIONE SCHEMA E-R

TABELLE DEI VOLUMI E DELLE OPERAZIONI

Iniziamo a identificare le operazioni principali dell'applicazione. Dai requisiti sulle operazioni, si evince chiaramente che le operazioni più frequenti sono quelle richieste dai visitatori, cioè le operazioni dalla 1 alla 10; procediamo, quindi, considerando le tabelle dei volumi e delle operazioni relative a tali operazioni.
Tabella dei Volumi
Tabella delle Operazioni
Concetto Tipo Volume
Artista E 500
Disco E 2000
Redattore E 5
Intervista R 250
Recensione R 2500
Realizzazione R 5800
NOTA: Il volume della relazione Realizzazione è stato calcolato in base al fatto che, come indicato nei requisiti, il 70% dei dischi (1400) è realizzato da 1 artista, il 25% (500) da 8 artisti e il 5% (100) da 4 artisti, da cui si ricava che, in media, l'associazione Realizzazione contiene (1400*1)+(500*8)+(100*4)=5800 istanze
Operazione Frequenza
OP01 100/giorno
OP02 100/giorno
OP03 100/giorno
OP04 50/giorno
OP05 40/giorno
OP06 20/giorno
OP07 50/giorno
OP08 50/giorno
OP09 50/giorno
OP10 30/giorno

ANALISI DELLE RIDONDANZE

Dallo schema E-R concettuale (e relativa documentazione) scaturisce la presenza di alcune ridondanze. Le più significative scaturiscono dalla presenza di attributi derivati (vedi regole di derivazione RD01 e RD02 nella Progettazione Concettuale); per decidere se conservare o meno queste ridondanze, occorre riferirsi alle tabelle degli accessi delle operazioni che coinvolgono gli attributi ridondanti.
Prima di questo, però, occorre soffermarsi con più attenzione sull'attributo Genere dell'entità DISCO e sull'omonimo attributo dell'entità ARTISTA. Così come è stato modellato, l'attributo Genere dell'entità ARTISTA (se si decidesse di mantenere la ridondanza) dovrebbe essere trasformato in una associazione, in quanto si tratta di un attributo multivalore. Consideriamo, poi, il tipo di operazioni che coinvolgono questo attributo: si tratta principalmente di operazioni di ricerca effettuate dai visitatori del sito; di certo sarebbe più semplice fornire ai visitatori un elenco dei generi musicali dal quale scegliere quello in base al quale effettuare la ricerca. Si pensi, ad esempio, a una situazione in cui un visitatore ricerchi gli artisti (o i dischi) aventi un genere che contiene la stringa di testo "hip-hop" e immaginiamo che i redattori abbiano indicato questo genere come "hip hop": il visitatore non otterrà i risultati che ci si aspetterebbe. Ancora, consideriamo che molti dischi (e, quindi, molti artisti) presentano uno stesso valore dell'attributo Genere, il che genera una ridondanza nei dati che potrebbe essere trascurata ma che va considerata nel contesto delle altre considerazioni che stiamo facendo; per tale motivo prendiamo in considerazione la possibilità di trasformare l'attributo Genere dell'entità DISCO in una entità in relazione con l'entità DISCO. Tutto ciò detto, analizziamo in dettaglio gli accessi per le operazioni sensibili riferendoci alle possibili soluzioni illustrate in Figura 1: nel caso (a) si conserva solo l'attributo Genere dell'entità DISCO senza mantenere la ridondanza (quindi i generi di un artista dovranno essere ricavati dall'attributo Genere di DISCO per mezzo dell'associazione REALIZZAZIONE); nel caso (b) questo attributo è trasformato nell'entità GENERE posta in relazione con DISCO mediante la associazione CLASSIFICAZIONE e, ancora, non si conserva la ridondanza; nel caso (c) si considerà ancora l'entità GENERE posta in relazione con l'entità ARTISTA mediante la associazione CARATTERIZZAZIONE, conservando stavolta la ridondanza ma considerando il genere come attributo dell'entità DISCO; nel caso (d) si considerà ancora l'entità GENERE posta in relazione con l'entità ARTISTA mediante la associazione CARATTERIZZAZIONE e con l'entità DISCO mediante la associazione CLASSIFICAZIONE, mantenendo quindi la ridondanza e considerando il genere di un disco non come attributo ma come entità associata a DISCO. In Figura 1 abbiamo omesso gli attributi non coinvolti in questa analisi.
Schema E-R: Possibili Soluzioni
Figura 1: Possibili soluzioni (clicka sull'immagine per ingrandire)
Le operazioni sensibili sono OP05 e OP07; le operazioni OP17 e OP19, che pure coinvolgono il genere di disco/artista, non le prendiamo in considerazione in quanto sono richieste assai di rado. Ricordiamo le definizioni delle operazioni:
  • OP05 - Visualizza l'elenco degli artisti caratterizzati da un determinato genere; l'elenco conterrà nome d'arte e provenienza dell'artista.
    Frequenza: 40 volte al giorno.
  • OP07 - Visualizza l'elenco dei dischi di un determinato genere; l'elenco conterrà titolo del disco, nomi d'arte degli artisti che lo hanno realizzato.
    Frequenza: 50 volte al giorno.
Una più approfondita raccolta dei requisiti consente di affermare che si prevede la presenza di 40 generi diversi, che tali generi sono equamente rappresentati nei dischi (vale a dire che, essendoci circa 2000 dischi, la classificazione di questi prevede in media 50 dischi per ogni genere), che il 50% degli artisti (250) fa dischi tutti dello stesso genere, il 30% (150) fa dischi di 2 generi diversi, il 20% (100) fa dischi di 3 generi diversi; inoltre, si ha che un genere è una stringa alfanumerica di 15 caratteri (15byte), il nome d'arte di un artista è una stringa alfanumerica di 30 caratteri (30byte), il codice di un disco è un indice numerico rappresentabile con al più 4byte. Considereremo anche l'ipotesi di utilizzare un codice numerico per identificare gli artisti, che richiederà al più 4byte piuttosto che i 30 richiesti dal nome d'arte; l'aggiunta di questo identificatore non comporta un incremento eccessivo nell'occupazione richiesta dall'entità ARTISTA (solo 2000byte in più) ma consente di ridurre notevolmente il peso delle associazioni che coinvolgono questa entità; un discorso del tutto analogo si può fare per l'identificatore di GENERE; consideriamo, quindi, la possibilità di usare gli identificatori numerici di 4byte per le entità GENERE e ARTISTA (che chiameremo IDgenere e IDartista); in Figura 2 è riportata tra parentesi l'occupazione richiesta nel caso si considerino questi identificatori. Osserviamo, però, che l'introduzione di questi nuovi identificatori comporterebbe la necessità di introdurre nuovi indici sulle tabelle che rappresenteranno le entità in questione; infatti, sia per ARTISTA che per GENERE si deve contemplare l'ipotesi di considerare degli indici sugli attributi, rispettivamente, Nome d'arte e Nome, perché rispetto a tali attributi si effettueranno operazioni di ricerca; se si scelgono identificatori diversi, a questi indici si andranno ad aggiungere quelli associati agli identificatori.
In Figura 2 sono sintetizzate le occupazioni di memoria previste nei 4 casi, mentre in Figura 3 sono riportate le tabelle degli accessi per le operazioni OP05 e OP07 nei 4 casi.

  Caso (a) Caso (b) Caso (c) Caso (d)
Artista 30*500
 =15000
(34*500
 =17000)
30*500
 =15000
(34*500
 =17000)
30*500
 =15000
(34*500
 =17000)
30*500
 =15000
(34*500
 =17000)
Disco 15*2000
 =30000
(15*2000
 =30000)
- 15*2000
 =30000
(15*2000
 =30000)
-
Genere - 15*40
 =600
(19*40
 =760)
15*40
 =600
(19*40
 =760)
15*40
 =600
(19*40
 =760)
Classificazione - (15+4)*2000
 =38000
((4+4)*2000
 =16000)
- (15+4)*2000
 =38000
((4+4)*2000
 =16000)
Caratterizzazione - - (30+15)*850
 =38250
((4+4)*850
 =6800)
(30+15)*850
 =38250
((4+4)*850
 =6800)
Occupazione
Totale (KB)
43.94
(45.90)
52.34
(32.97)
83.84
(53.28)
89.41
(39.61)
(*): In considerazione del fatto che il 50% degli artisti (250) è caratterizzato da un solo genere, il 30% (150) da due generi e il 20% (100) da tre generi, per l'associazione CARATTERIZZAZIONE si prevedono in media 250*1 + 150*2 + 100*3 = 850 occorrenze
Figura 2: Occupazioni di memoria riferite agli attributi coinvolti
Operazione OP05
Visualizza l'elenco degli artisti caratterizzati da un determinato genere (40 volte al giorno)
Concetto
E/R
Caso (a)
Caso (b)
Caso (c)
Caso (d)
Artista
E

145
L

145
L

145
L

145
L
Realizzazione
R

145
L

145
L
-
-
Disco
E

50
L

50
L
-
-
Classificazione
R
-

50
L
-
-
Genere
E
-

1
L

1
L

1
L
Caratterizzazione
R
-
-

145
L

145
L
Costo Totale
340
391
291
291
Operazione OP07
Visualizza l'elenco dei dischi di un determinato genere (50 volte al giorno)
Concetto
E/R
Caso (a)
Caso (b)
Caso (c)
Caso (d)
Artista
E
-
-
-
-
Realizzazione
R
-
-
-
-
Disco
E

50
L

50
L

50
L

50
L
Classificazione
R
-

50
L
-

50
L
Genere
E
-

1
L
-

1
L
Caratterizzazione
R
-
-
-
-
Costo Totale
50
101
50
101
Valutazione combinata
Numero totale giornaliero di accessi nei quattro casi, valutati in base alla frequenza prevista per le operazioni
Costo
Totale
16100
20690
14140
16690
Figura 3: Tabelle degli accessi
Ecco come sono stati valutati gli accessi.
Operazione OP05
  • Caso (a)
    Si deve innanzitutto accedere a DISCO per recuperare i dischi che presentano il voluto valore di Genere; essendo previsti in media 50 dischi per ogni genere, saranno necessari 50 accessi in lettura all'entità DISCO. Occorre poi accedere a REALIZZAZIONE per trovare gli artisti che hanno realizzato i dischi in questione; sappiamo che mediamente il 70% dei dischi è realizzato da un artista, il 25% da 8 artisti e il 5% da 4 artisti, per cui ci aspettiamo che, mediamente, sarà necessario effettuare 50*(0.70*1 + 0.25*8 + 0.05*4)=145 accessi in lettura all'associazione REALIZZAZIONE e altrettanti all'entità ARTISTA.
  • Caso (b)
    Occorre innanzitutto un accesso in lettura all'entità GENERE, quindi 50 accessi in lettura all'associazione CLASSIFICAZIONE, attraverso la quale individuiamo i dischi classificati in base al dato genere, e quindi altrettanti accessi all'entità DISCO. Quindi si procede, come per il caso (a), effettuando 145 accessi in lettura prima all'associazione REALIZZAZIONE e quindi all'entità ARTISTA.
  • Caso (c)
    Innanzitutto si accede una volta in lettura all'entità GENERE, quindi occorre accedere all'associazione CARATTERIZZAZIONE per individuare gli artisti caratterizzati dal dato genere; il numero di accessi necessari si ricava con le medesime considerazioni fatte nei casi precedenti, per cui possiamo concludere che sarà necessario effettuare 145 accessi in lettura all'associazione CARATTERIZZAZIONE e altrettanti all'entità ARTISTA.
  • Caso (d)
    La situazione è identica al caso (c).
Operazione OP07
  • Caso (a)
    Occorrono solo 50 accessi i lettura all'entità DISCO .
  • Caso (b)
    Occorre innanzitutto un accesso in lettura all'entità GENERE, quindi 50 accessi in lettura all'associazione CLASSIFICAZIONE, attraverso la quale individuiamo i dischi classificati in base al dato genere, e quindi altrettanti accessi all'entità DISCO.
  • Caso (c)
    Come nel caso (a).
  • Caso (d)
    Come nell caso (b).
Analizzando le tabelle realizzate, è facile dedurre che il miglior compromesso si ottiene nel caso (d) in presenza degli identificatori numerici di cui abbiamo discusso in precedenza; in questo caso, infatti, non si richiede un numero di accessi troppo superiore al minimo (che si ha nel caso (c) ) e, nel contempo, si ha una occupazione di memoria di poco superiore a quella minima necessaria, che peraltro si ottiene nel caso (b) che è, però, il caso che richiede il maggior numero di accessi giornalieri. Anche in virtù delle considerazioni fatte circa l'opportunità di considerare una entità GENERE al fine di poter realizzare una interfaccia utente più amichevole e funzionale, decidiamo di conservare la ridondanza e di modellare la situazione come nel caso (d), introducendo, però, nuovi identificatori numerici per le entità GENERE e ARTISTA; benché questa scelta comporterà la necessità di considerare più indici, riteniamo che sia comunque la scelta migliore in termini di rapporto prestazioni/occupazione di memoria.

Analizziamo adesso l'altra ridondanza, quella che riguarda gli attributi Valutazione, Voto Medio e Numero Voti dell'entità DISCO.
La valutazione, in questo caso, è più semplice, in quanto si fa riferimento ad una sola entità. Le operazione coinvolte sono la OP03 (visualizzazione dell'elenco dei 5 dischi preferiti dai visitatori, stilata in base al valore dell'attributo Valutazione, 100 volte al giorno) e la OP10 (assegnazione di un voto al disco, 30 volte al giorno). L'attributo ridondante Valutazione può essere di certo memorizzato con 8byte, e quindi richiede una occupazione di memoria di circa 2000*8byte=15.6Kbyte, che non è estremamente alta; la decisione va presa essenzialmente in base al costo computazionale delle operazioni. La presenza dell'attributo ridondante non crea praticamente alcun costo aggiuntivo per l'operazione OP10: tale operazione richiederà comunque un solo accesso in scrittura all'entità DISCO, l'unica differenza consiste nell'esigenza di aggiornare il valore di tre attributi piuttosto che di due, oltre che nel calcolo del valore del terzo attributo, cosa che non ha costo computazionale rilevante. Per quanto riguarda l'operazione OP03, la presenza dell'attributo ridondante non altera il numero di accessi (comunque bisogna prelevare i 5 dischi preferiti) ma può velocizzare la ricerca qualora si preveda un indice sull'attributo, anche se si deve, in tal caso, considerare che un indice richiede una certa occupazione di memoria. Vista la frequenza dell'operazione di visualizzazione della classifica dei dischi con migliore valutazione, si opta per il mantenimento dell'attributo ridondante Valutazione.

ELIMINAZIONE DEGLI ATTRIBUTI MULTIVALORE

Già nel precedente paragrafo abbiamo eliminato l'attributo multivalore Genere dell'entità ARTISTA. Nello schema E-R concettuale vi sono altri due attributi multivalore: l'attributo Sito dell'entità ARTISTA e l'attributo Brano dell'entità DISCO, quest'ultimo anche composto. La soluzione del problema è semplice; osserviamo solo che ciò che in effetti deve essere memorizzato è la URL del sito di un artista, per cui introdurremo l'entità SITO con l'attributo Url; introdurremo anche l'entità BRANO con gli attributi Titolo e Numero. Le entità introdotte, SITO e BRANO, saranno poste in relazione rispettivamente con le entità ARTISTA tramite l'associazione LINK, e con l'entità DISCO tramite l'associazione TRACK LIST. Per quanto riguarda gli identificatori delle nuove entità, osserviamo che le regole di vincolo RV02 ed RV03 (vedi Progettazione Concettuale) implicano che i brani di un medesimo disco presentino valori diversi per l'attributo Numero; inoltre, il titolo di un brano non basta ad identificarlo; in base a ciò, possiamo concludere che l'entità BRANO, la quale partecipa all'associazione TRACK LIST con cardinalità minima e massima pari a 1, può essere identificata esternamente, in quanto un brano è identificato univocamente dal numero e dal disco a cui si riferisce. Per l'entità SITO il discorso è analogo: la URL non basta a identificare un sito (si ammette la possibilità che un medesimo sito possa riguardare artisti diversi) ma di certo uno stesso artista non può avere due siti diversi con la stessa URL, per sui SITO può essere identificata esternamente attraverso la relazione LINK, a cui partecipa con cardinalità minima e massima pari a uno, in quanto un sito è identificato univocamente dalla URL e dall'artista cui si riferisce. Tutto ciò considerato, perveniamo alla modellazione raffigurata nel frammento di schema E-R riportato in Figura 4.
Schema E-R: Frammento
Figura 4: Partizionamento per eliminare gli attributi multivalore

SCHEMA E-R RISTRUTTURATO

Integrando i frammenti di schema E-R ottenuti sopra, e con riferimento allo schema E-R concettuale, otteniamo lo schema E-R ristrutturato di Figura 5.
Schema E-R Ristrutturato
Figura 5: Schema E-R ristrutturato (clicka sull'immagine per ingrandire)

DOCUMENTAZIONE DELLO SCHEMA E-R RISTRUTTURATO

DIZIONARIO DEI DATI

Entità
Entità Attributi Itentificatore Descrizione
Redattore Cognome, Nome, Email (0..1), User-ID, Password User-ID Un redattore è un individuo responsabile della gestione dei contenuti della webzine; realizza recensioni di dischi e interviste agli artisti; modifica i contenuti della webzine via Internet, utilizzando un user-ID univoco e una password per l'autenticazione; un redattore può essere univocamente identificato anche dai suoi cognome e nome
Artista IDartista, Nome d'arte, Foto (0..1), Descrizione, Nazione (0..1) IDartista Un Artista è un individuo, o un gruppo di individui, caratterizzato da un nome d'arte univoco e proveniente da una determinata nazione, operante nel campo della musica; un artista può realizzare dischi; un artista ha una descrizione e può avere una foto; un artista è caratterizzato in base ai generi dei dischi che ha realizzato; un artista può avere siti web che lo riguardano; un artista può rilasciare interviste ai redattori della webzine
Disco Codice, Casa Discografica, Foto (0..1), Anno, Valutazione, Voto Medio (0..1), Numero Voti (0..1), Titolo Codice Un disco è una registrazione, avente un titolo e identificata da un codice, contenente uno o più brani musicali; un disco è realizzato da uno o più artisti; un disco è pubblicato da una casa discografica in un determinato anno; un disco può essere recensito da un redattore ; un disco è classificato in base al suo genere ; un disco può avere una foto della copertina; un disco può essere votato dai visitatori della webzine e quindi può avere un voto medio e un numero di voti ottenuti, dai quali si ricava una valutazione complessiva del disco
Genere IDgenere, Nome IDgenere Un Genere è una parola che indica una peculiarità artistica attribuibile a un artista o a un disco; gli artisti sono caratterizzati dai generi che suonano, i dischi sono classificati in base al genere; non possono esservi generi diversi con lo stesso nome
Brano Titolo, Numero Numero +
id. esterno
Un Brano è una composizione musicale contenuta in un disco; ha un titolo ed è caratterizzato da un numero che ne indica la posizione all'interno della track list del disco
Sito Url Url +
id. esterno
Un Sito è una risorsa sul web riguardante un artista, caratterizzato dalla sua URL; non possono esservi siti diversi con la medesima URL
Relazioni
Relazione Attributi Entità coinvolte Descrizione
Realizzazione Nessuno Artista (0,N), Disco (1,N) Esprime il concetto che gli artisti realizzano dischi; un disco è realizzato da uno o più artisti; un artista realizza 0 o più dischi
Intervista Titolo, Data, Testo Artista (0,N), Redattore (0,N) Esprime il concetto che un artista rilascia interviste ai redattori della webzine; un redattore può occuparsi di 0 o più interviste; un artista può rilasciare 0 o più interviste; le interviste sono realizzate in una determinata data e sono caratterizzate da un testo e da un titolo
Recensione Titolo, Data, Testo, Voto Disco (0,1), Redattore (0,N) Esprime il concetto che un disco può essere recensito da un redattore della webzine; un redattore può occuparsi di 0 o più recensioni; un disco può avere al più una recensione; le recensioni sono realizzate in una determinata data e sono caratterizzate da un testo e da un titolo, oltre che da un voto attribuito dal redattore indicante la sua opinione sul disco recensito
Classificazione Nessuno Disco (1,1), Genere (0,N) Esprime il concetto che un disco può essere classificato in base al suo genere; un disco è sempre classificato da uno e un sol genere; più dischi possono essere classificati dal medesimo genere; un genere può non classificare alcun disco
Caratterizzazione Nessuno Genere (0,N), Artista (0,N) Esprime il concetto che un artista può essere caratterizzato da uno o più generi; un artista è caratterizzato dai generi che classificano i dischi realizzati dall'artista; se un artista non ha realizzato alcun disco, quindi, non ha generi caratterizzanti, mentre può essere caratterizzato da più generi se ha realizzato più dischi e di generi diversi; un genere può caratterizzare più di un artista
Link Nessuno Sito (1,1) [I], Artista (0,N) Esprime il concetto che possono esistere dei link a siti web di un artista; ogni artista può avere più link a siti diversi, ogni sito riguarda uno e un solo artista
Track List Nessuno Disco (1,N), Brano (1,1) [I] Esprime il concetto che un disco contiene brani in una sequenza ordinata chiamata track list del disco; la track list di un disco è composta da almeno un brano; un brano fa parte di una e una sola track list di un solo disco; la posizione del brano all'interno della track list è individuata da un numero intero
[I] l'entità è identificata esternamente per mezzo della relazione

REGOLE DI DERIVAZIONE

  • RD01 - Il valore dell'attributo Valutazione dell'entità DISCO si ottiene dal prodotto dei valori degli attributi Voto Medio e Numero Voti della medesima entità; se questi ultimi non sono definiti o hanno valore nullo, il valore di Valutazione è 0.
  • RD02 - Un artista è caratterizzato da un genere se e solo se l'artista ha realizzato almeno un disco classificato in base a quel genere; da ciò segue che l'associazione CARATTERIZZAZIONE può essere derivata dalle associazioni REALIZZAZIONE e CLASSIFICAZIONE; più precisamente, valgono le seguenti regole:
    a) se esiste un'occorrenza dell'associazione CARATTERIZZAZIONE che pone in relazione l'occorrenza A dell'entità ARTISTA e l'occorrenza G dell'entità GENERE, allora esiste almeno una occorrenza dell'associazione REALIZZAZIONE che pone in relazione l'occorrenza A di ARTISTA con una occorrenza D di DISCO che a sua volta è in relazione con l'occorrenza G di GENERE per mezzo di una occorrenza dell'associazione CLASSIFICAZIONE;
    b) se esiste una occorrenza dell'associazione REALIZZAZIONE che pone in relazione l'occorrenza A di ARTISTA con l'occorrenza D di DISCO che a sua volta è in relazione con l'occorrenza G di GENERE per mezzo di una occorrenza dell'associazione CLASSIFICAZIONE, allora esiste una occorrenza dell'associazione CARATTERIZZAZIONE che pone in relazione l'occorrenza A di ARTISTA e l'occorrenza G di GENERE.

REGOLE DI VINCOLO

  • RV01 - L'attributo Voto Medio dell'entità DISCO può assumere solo valori numerici compresi fra 0 e 10.
  • RV02 - Il valore dell'attributo Numero dell'entità BRANO deve essere un numero intero strettamente positivo.
  • RV03 - Tutte le occorrenze dell'entità BRANO che sono in relazione, tramite l'associazione TRACK LIST, con una medesima occorrenza dell'entità DISCO devono presentare valori dell'attributo Numero consecutivi a partire da 1.
  • RV04 - L'attributo Voto dell'associazione RECENSIONE deve essere un numero intero compreso fra 0 e 10.
  • RV05 - Non possono esservi occorrenze diverse dell'associazione INTERVISTA che pongono in relazione le medesime occorrenze delle entità ARTISTA e REDATTORE e nel contempo presentano un medesimo valore dell'attributo Data: ciò equivale a dire che un redattore non può intervistare il medesimo artista più di una volta nello stesso giorno, mentre è ammissibile che nello stesso giorno il medesimo redattore intervisti artisti diversi o il medesimo artista sia intervistato da redattori diversi, e ancora si ammette il caso che un redattore intervisti più volte lo stesso artista purché in giorni diversi.
  • RV06 - La coppia di attributi (Cognome,Nome) è un identificatore per l'entità REDATTORE.
  • RV07 - L'attributo Nome è un identificatore per l'entità GENERE.
  • RV08 - L'attributo Nome d'arte è un identificatore per l'entità ARTISTA.

QUALITÀ DELLO SCHEMA E-R RISTRUTTURATO;
VERIFICA DI NORMALIZZAZIONE

Lo schema E-R ristrutturato conserva le caratteristiche di correttezza e leggibilità, nonché di completezza, come è facile verificare riscontrando che tutti i dati di interesse sono rappresentati e tutti i concetti coinvolti nelle operazioni indicate nelle specifiche possono essere raggiunti "navigando" attraverso lo schema. Lo schema E-R non è minimale, in quanto presenta le ridondanze già discusse in precedenza e documentate appropriatamente, le quali, comunque, vengono conservate in quanto si ritiene che questa scelta sia più convenienti per quanto riguarda l'efficienza della base di dati. Ricordiamo che tali ridondanze provengono dal fatto che l'attributo Valutazione dell'entità DISCO è derivato dagli attributi Voto Medio e Numero Voti della medesima entità, e che l'associazione CARATTERIZZAZIONE può essere derivata dalle associazioni REALIZZAZIONE e CARATTERIZZAZIONE, come testimonia il ciclo presente nello schema. Osserviamo, inoltre, che nello schema sono presenti altri due cicli, precisamente:
REDATTORE-RECENSIONE-DISCO-REALIZZAZIONE-ARTISTA-INTERVISTA-REDATTORE
e
REDATTORE-RECENSIONE-DISCO-CLASSIFICAZIONE-GENERE-CARATTERIZZAZIONE-ARTISTA-INTERVISTA-READTTORE
È facile riscontrare, peraltro, che a tali cicli non corrispondono delle ridondanze in quanto essi non rappresentano alcuna derivazione di concetti.
Una attenta analisi dello schema ci permette di concludere che tutte le entità sono in forma normale di Boyce-Codd, in quanto le uniche dipendenze funzionali che si riscontrano sono dipendenze da una chiave; unica eccezione è costituita dall'entità DISCO per la quale vi è la dipendenza funzionale VotoMedio NumeroVoti → Valutazione, ma questa situazione è già stata discussa e si è deciso di mantenere la ridondanza; del resto, questa dipendenza funzionale non è indicativa di una errata rappresentazione di concetti indipendenti mediante una sola entità. Infine, tutte le associazioni sono binarie e, quindi, sono necessariamente in forma normale di Boyce-Codd.

TRADUZIONE VERSO IL MODELLO RELAZIONALE

La traduzione delle entità e delle associazioni molti-a-molti è immediata e non presenta la necessità di scegliere fra diverse possibili soluzioni: ogni associazione viene rappresentata con una relazione nel modello logico. Per le associazioni uno-a-molti e uno-a-uno, invece, esistono diverse possibilità di traduzione ed è quindi necessaria una scelta: è il caso delle associazioni RECENSIONE, CLASSIFICAZIONE, LINK e TRACK LIST, tutte di tipo uno-a-molti; peraltro, solo per l'associazione RECENSIONE accade che l'entità che partecipa con cardinalità massima pari a 1 presenti cardinalità minima pari a 0 (si tratta dell'entità DISCO), mentre per le altre l'entità che ha cardinalità massima pari ha 1 ha anche cardinalità minima pari a 1. Per le associazioni CLASSIFICAZIONE, LINK e TRACK LIST, dunque, è preferibile rappresentare l'associazione nella relazione che rappresenta anche l'entità che vi partecipa con cardinalità minima e massima pari a 1, che, rispettivamente, è DISCO, SITO e BRANO; per l'associazione RECENSIONE, invece, possiamo scegliere di rappresentarla nella relazione che rappresenta anche l'entità DISCO, accettando di avere valori nulli per gli attributi di RECENSIONE, oppure di rappresentarla come relazione a sè stante, il che esclude il "problema" dei valori nulli ma richiede una relazione in più; scegliamo di rappresentare l'associazione RECENSIONE con una relazione a sè stante.

Riassumendo, lo schema E-R sopra riportato può essere tradotto nel seguente schema logico:
  • REDATTORE (UserID,Password,Cognome,Nome,Email)
    Rappresenta l'entità REDATTORE del modello E-R; per semplicità di notazione abbiamo rinominato gli attributi User-ID ed E-mail come, rispettivamente, UserID ed Email.
  • ARTISTA (IDartista,NomeArtista,Descrizione,Nazione,Foto)
    Rappresenta l'entità ARTISTA del modello E-R; per semplicità di notazione abbiamo rinominato l'attributo Nome d'arte come NomeArtista.
  • GENERE (IDgenere,NomeGenere)
    Rappresenta l'entità GENERE del modello E-R; per chiarezza di notazione abbiamo rinominato l'attributo Nome come NomeGenere.
  • DISCO (Codice,Titolo,Anno,CasaDiscografica,Foto,VotoMedio,NumeroVoti, Valutazione,IDgenere)
    Rappresenta sia l'entità DISCO che l'associazione uno-a-molti CLASSIFICAZIONE del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDgenere e l'attributo IDgenere della relazione GENERE; per semplicità di notazione abbiamo rinominato gli attributi eliminando da essi gli spazi.
  • INTERVISTA (IDredattore,IDartista, Data,Titolo,Testo)
    Rappresenta l'associazione molti-a-molti INTERVISTA del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDredattore e l'attributo UserID della relazione REDATTORE, nonché fra l'attributo IDartista e l'attributo IDartista della relazione ARTISTA. La chiave primaria non è, come si sarebbe potuto pensare, costituita solo dalla coppia (IDredattore,IDartista); infatti, la regola di vincolo RV05 ci porta a concludere che una intervista è univocamente identificata dal redattore, dall'artista ma anche dalla data in cui è fatta, potendosi prevedere che un medesimo redattore faccia un'intervista al medesimo artista, purché in date diverse.
  • RECENSIONE (CodiceDisco,IDredattore,Data,Titolo,Testo,Voto)
    Rappresenta l'associazione uno-a-molti RECENSIONE del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDredattore e l'attributo UserID della relazione REDATTORE, nonché fra l'attributo CodiceDisco e l'attributo Codice della relazione DISCO. L'associazione uno-a-molti RECENSIONE del modello E-R poteva essere rappresentata anche nella relazione DISCO, prevedendo la presenza di valori nulli sugli attributi rappresentativi del concetto "recensione" per quei dischi che recensione non hanno: abbiamo preferito, piuttosto, rappresentare il concetto con una relazione a sè. Essendoci non più di una recensione per ogni disco, la chiave primaria di questa relazione è CodiceDisco.
  • REALIZZAZIONE (IDartista, CodiceDisco)
    Rappresenta l'associazione molti-a-molti REALIZZAZIONE del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDartista e l'attributo IDartista della relazione ARTISTA, nonché fra l'attributo CodiceDisco e l'attributo Codice della relazione DISCO.
  • CARATTERIZZAZIONE (IDartista,IDgenere)
    Rappresenta l'associazione molti-a-molti CARATTERIZZAZIONE del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDartista e l'attributo IDartista della relazione ARTISTA, nonché fra l'attributo IDgenere e l'attributo IDgenere della relazione GENERE.
  • SITO (Url,IDartista)
    Rappresenta sia l'entità SITO che l'associazione uno-a-molti LINK del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo IDartista e l'attributo IDartista della relazione ARTISTA.
  • BRANO (CodiceDisco,NumeroBrano, Titolo)
    Rappresenta sia l'entità BRANO che l'associazione uno-a-molti TRACK LIST del modello E-R; vi è un vincolo di integrità referenziale fra l'attributo CodiceDisco e l'attributo Codice della relazione DISCO; l'attributo Numero dell'associazione TRACK LIST è stato rinominato, per semplicità di notazione, come NumeroBrano.
Una rappresentazione grafica del modello logico è riportata in Figura 6.
Modello Logico
Figura 6: Modello Logico della Base di Dati