|
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.
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 |
3° 145 L |
5° 145 L |
3° 145 L |
3° 145 L |
Realizzazione |
R |
2° 145 L |
4° 145 L |
- |
- |
Disco |
E |
1° 50 L |
3° 50 L |
- |
- |
Classificazione |
R |
- |
2° 50 L |
- |
- |
Genere |
E |
- |
1° 1 L |
1° 1 L |
1° 1 L |
Caratterizzazione |
R |
- |
- |
2° 145 L |
2° 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 |
1° 50 L |
3° 50 L |
1° 50 L |
3° 50 L |
Classificazione |
R |
- |
2° 50 L |
- |
2° 50 L |
Genere |
E |
- |
1° 1 L |
- |
1° 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.
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.
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.
Figura 6: Modello Logico della Base di Dati
|