From 8cd524cba4e253c53994959f4ec57e46e9f13c43 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Jun 2020 16:09:39 +0200 Subject: [PATCH] Aggiungi dato derivato allo schema logico --- 4-4-dati-derivati.md | 28 ++++++++++++++++------------ 4-5-schema-logico.md | 5 +++++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/4-4-dati-derivati.md b/4-4-dati-derivati.md index 3ed56c5..67fc243 100644 --- a/4-4-dati-derivati.md +++ b/4-4-dati-derivati.md @@ -2,11 +2,11 @@ In Alexandria non sono presenti molti dati quantitativi: la maggior parte degli attributi sono infatti qualitativi, e come tali meglio descritti da stringhe. -![](img/4-4-dati-derivati/con-e-senza.png) - -Si è considerata la possibilità di inserire nella base di dati un attributo contenente il **conteggio** di `Elementi` posseduti da un utente, ma dopo un'analisi dei costi l'ipotesi è stata scartata perchè **non conveniente**. +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. + + +Si riportano sotto tutti i calcoli effettuati per decidere se aggiungere o no il dato derivato. ## Tabella dei volumi @@ -22,6 +22,8 @@ Si ottiene, dunque, la seguente tabella dei volumi: | `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. @@ -30,8 +32,8 @@ Si sono valutate due diverse operazioni: | Operazione | Descrizione | Tipo | Frequenza | Schema | |------------|-------------|------|-----------|--------| -| __OP1__ | Creazione di un nuovo `Elemento` (di un tipo qualunque) | Interattiva | **100**/utente/anno | `Elemento` | -| __OP2__ | Visualizzazione del conteggio di `Elementi` di qualsiasi tipo creati da un `Utente` specifico | Interattiva | **500**/utente/anno | `Elemento` | +| __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 @@ -44,21 +46,23 @@ Si sono utilizzati i seguenti costi per realizzare la tabella dei costi: | Operazione | Procedura | Costi | Costo totale | |------------|-----------|-------|--------------| -| __OP1__ | Si inserisce una nuova tupla nella tabella `Elemento` corrispondente. | 1 write | **2** | -| __OP2__ | Si interrogano le tabelle degli `Elementi`, filtrando quelle che non sono state create dall'utente richiesto, e conteggiando le tuple restituite. | 6 read + 18 read + 52 read + 24 read | **100** | +| __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` corrispondente 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` interessato. | 1 read | **1** | +| __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 | 100 * 500 | 50200 | +| 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_. diff --git a/4-5-schema-logico.md b/4-5-schema-logico.md index 981691c..e796ed4 100644 --- a/4-5-schema-logico.md +++ b/4-5-schema-logico.md @@ -8,6 +8,7 @@ Di seguito si riporta l'intero schema logico dopo aver effettuato tutte le trasf - **Chiave primaria** - → [Chiave esterna](#legenda) - _Opzionale_ + - [♦](4-4-dati-derivati.md) Dato derivato ## Categoria generale @@ -17,6 +18,10 @@ Di seguito si riporta l'intero schema logico dopo aver effettuato tutte le trasf - _Email_ - È amministratore - È bannato +- [♦](4-4-dati-derivati.md) Elementi (libro) posseduti +- [♦](4-4-dati-derivati.md) Elementi (audiolibro) posseduti +- [♦](4-4-dati-derivati.md) Elementi (film) posseduti +- [♦](4-4-dati-derivati.md) Elementi (gioco) posseduti ## Categoria condivisa tra libri e audiolibri