mirror of
https://github.com/Steffo99/alexandria.git
synced 2024-11-21 21:34:19 +00:00
Aggiungi dato derivato allo schema logico
This commit is contained in:
parent
2d11cf5b6b
commit
8cd524cba4
2 changed files with 21 additions and 12 deletions
|
@ -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.
|
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.
|
||||||
|
|
||||||
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**.
|
<!--TODO: creare una nuova immagine-->
|
||||||
|
|
||||||
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
|
## Tabella dei volumi
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ Si ottiene, dunque, la seguente tabella dei volumi:
|
||||||
| `Elemento (film)` | Entità | **52**/utente/anno |
|
| `Elemento (film)` | Entità | **52**/utente/anno |
|
||||||
| `Elemento (gioco)` | Entità | **24**/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
|
## Tabella delle operazioni
|
||||||
|
|
||||||
Si stima che ogni utente riceverà circa 500 visite alla suo profilo all'anno.
|
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 |
|
| Operazione | Descrizione | Tipo | Frequenza | Schema |
|
||||||
|------------|-------------|------|-----------|--------|
|
|------------|-------------|------|-----------|--------|
|
||||||
| __OP1__ | Creazione di un nuovo `Elemento` (di un tipo qualunque) | Interattiva | **100**/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` |
|
| __OP2__ | Visualizzazione del conteggio di `Elementi` di qualsiasi tipo creati da un `Utente` specifico | Interattiva | **500**/utente/anno | `Elemento (audiolibro)` |
|
||||||
|
|
||||||
## Tabella dei costi
|
## Tabella dei costi
|
||||||
|
|
||||||
|
@ -44,21 +46,23 @@ Si sono utilizzati i seguenti costi per realizzare la tabella dei costi:
|
||||||
|
|
||||||
| Operazione | Procedura | Costi | Costo totale |
|
| Operazione | Procedura | Costi | Costo totale |
|
||||||
|------------|-----------|-------|--------------|
|
|------------|-----------|-------|--------------|
|
||||||
| __OP1__ | Si inserisce una nuova tupla nella tabella `Elemento` corrispondente. | 1 write | **2** |
|
| __OP1__ | Si inserisce una nuova tupla nella tabella `Elemento (audiolibro)`. | 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** |
|
| __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
|
### Con dato derivato
|
||||||
|
|
||||||
| Operazione | Procedura | Costi | Costo totale |
|
| 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** |
|
| __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` interessato. | 1 read | **1** |
|
| __OP2__ | Si va a vedere il dato derivato nella tabella dell'`Utente` desiderato. | 1 read | **1** |
|
||||||
|
|
||||||
## Risultato
|
## Risultato
|
||||||
|
|
||||||
| Metodo | Costo __OP1__ | Costo __OP2__ | Costo totale |
|
| 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 |
|
| Con dato derivato | 5 * 100 | 1 * 500 | 1000 |
|
||||||
|
|
||||||
<!--Wait, questa è una contraddizione!-->
|
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_.
|
||||||
|
|
|
@ -8,6 +8,7 @@ Di seguito si riporta l'intero schema logico dopo aver effettuato tutte le trasf
|
||||||
- **Chiave primaria**
|
- **Chiave primaria**
|
||||||
- → [Chiave esterna](#legenda)
|
- → [Chiave esterna](#legenda)
|
||||||
- _Opzionale_
|
- _Opzionale_
|
||||||
|
- [♦](4-4-dati-derivati.md) Dato derivato
|
||||||
|
|
||||||
## Categoria generale
|
## Categoria generale
|
||||||
|
|
||||||
|
@ -17,6 +18,10 @@ Di seguito si riporta l'intero schema logico dopo aver effettuato tutte le trasf
|
||||||
- _Email_
|
- _Email_
|
||||||
- È amministratore
|
- È amministratore
|
||||||
- È bannato
|
- È 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
|
## Categoria condivisa tra libri e audiolibri
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue