1
Fork 0
mirror of https://github.com/Steffo99/alexandria.git synced 2024-11-21 21:34:19 +00:00
bdd-2020-alexandria/4-4-dati-derivati.md

3.2 KiB

Dati derivati

In Alexandria non sono presenti molti dati quantitativi: la maggior parte degli attributi sono infatti qualitativi, e come tali meglio descritti da stringhe.

Si è considerata la possibilità di inserire nella base di dati un attributo contenente il conteggio di Elementi posseduti da un utente.

Si riportano sotto tutti i calcoli effettuati per decidere se aggiungere o no il dato derivato.

Tabella dei volumi

Secondo una stima effettuata, l'utente medio di Alexandria leggerà all'anno 18 libri, ascolterà 6 audiolibri, guarderà 52 film e giocherà a 24 giochi, per un totale di circa 100 Elementi per Utente all'anno.

Si ottiene, dunque, la seguente tabella dei volumi:

Concetto Tipo Volume
Utente Entità 1/utente
Elemento (audiolibri) Entità 6/utente/anno
Elemento (libro) Entità 18/utente/anno
Elemento (film) Entità 52/utente/anno
Elemento (gioco) Entità 24/utente/anno

Si considera solo la categoria degli audiolibri: se per essi è conveniente mantenere il dato derivato, allora lo sarà anche per tutti gli altri tipi di elemento, in quanto hanno volumi maggiori.

Tabella delle operazioni

Si stima che ogni utente riceverà circa 500 visite alla suo profilo all'anno.

Si sono valutate due diverse operazioni:

Operazione Descrizione Tipo Frequenza Schema
OP1 Creazione di un nuovo Elemento (audiolibro) Interattiva 6/utente/anno Elemento (audiolibro)
OP2 Visualizzazione del conteggio di Elementi di qualsiasi tipo creati da un Utente specifico Interattiva 500/utente/anno Elemento (audiolibro)

Tabella dei costi

Si sono utilizzati i seguenti costi per realizzare la tabella dei costi:

  • read: costo 1
  • write: costo 2
  • update: composta da 1 read e 1 write, costo 3

Senza dato derivato

Operazione Procedura Costi Costo totale
OP1 Si inserisce una nuova tupla nella tabella Elemento (audiolibro). 1 write 2
OP2 Si interroga la tabella Elemento (audiolibro), filtrando le tuple che non sono state create dall'utente desiderato, e si contano le tuple restituite. 6 read 6

Con dato derivato

Operazione Procedura Costi Costo totale
OP1 Si inserisce una nuova tupla nella tabella Elemento (audiolibro) e si aggiorna il dato derivato della tupla dell'Utente creatore. 1 write + 1 update 5
OP2 Si va a vedere il dato derivato nella tabella dell'Utente desiderato. 1 read 1

Risultato

Metodo Costo OP1 Costo OP2 Costo totale
Senza dato derivato 2 * 100 6 * 500 3200
Con dato derivato 5 * 100 1 * 500 1000

Dato che 1000 < 3200, conviene creare il dato derivato nella tabella Utente.

La stessa cosa vale per gli Elementi di libri, film e giochi: avendo volumi maggiori, essi possono solo aumentare il costo dell'OP2 senza dato derivato.