From fd9b7cb7499e12d899b1734c3419da1e9076b63b Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Jun 2020 02:54:35 +0200 Subject: [PATCH] Aggiungi 4-4-dati-derivati.md, 4-6-normalizzazione.md e inizia 5-1-tecnologia-sql.md --- 4-4-dati-derivati.md | 59 ++++++++++++++++++++++++++++++++++++ 4-6-normalizzazione.md | 3 ++ 5-1-tecnologia-sql.md | 2 ++ README.md | 9 ++++-- img/0-README/alexandria.png | Bin 1907 -> 7181 bytes 5 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 4-4-dati-derivati.md create mode 100644 4-6-normalizzazione.md create mode 100644 5-1-tecnologia-sql.md diff --git a/4-4-dati-derivati.md b/4-4-dati-derivati.md new file mode 100644 index 0000000..90adaa7 --- /dev/null +++ b/4-4-dati-derivati.md @@ -0,0 +1,59 @@ +# 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. + +![](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 riportano sotto tutti i calcoli effettuati. + +## 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 | + +## 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` (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` | + +## Tabella dei costi + +### Senza dato derivato + +| 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** | + +### 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 write | **4** | +| __OP2__ | Si va a vedere il dato derivato nella tabella dell'`Utente` interessato. | 1 read | **1** | + +## Risultato + +| Metodo | Costo __OP1__ | Costo __OP2__ | Costo totale | +|--------|---------------|---------------|--------------| +| Senza dato derivato | 2 * 100 | 100 * 500 | 50200 | +| Con dato derivato | 4 * 100 | 1 * 500 | 900 | + + diff --git a/4-6-normalizzazione.md b/4-6-normalizzazione.md new file mode 100644 index 0000000..44fb068 --- /dev/null +++ b/4-6-normalizzazione.md @@ -0,0 +1,3 @@ +# Verifica di normalizzazione + +Dopo aver costruito lo [schema logico](4-5-schema-logico.md), si è constatato che la base di dati fosse in forma normale, e che non fosse necessaria alcuna ulteriore modifica. diff --git a/5-1-tecnologia-sql.md b/5-1-tecnologia-sql.md new file mode 100644 index 0000000..20e8680 --- /dev/null +++ b/5-1-tecnologia-sql.md @@ -0,0 +1,2 @@ +# Tecnologia SQL + diff --git a/README.md b/README.md index 4894052..e841330 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,11 @@ Le specifiche di questo progetto sono disponibili nel file [`spec.pdf`](0-spec.p 2. [Eliminazione delle chiavi esterne](4-2-eliminazione-chiavi-esterne.md) 3. [Trasformazione degli attributi composti](4-3-trasformazione-degli-attributi-composti.md) - 4. [Schema logico](4-4-schema-logico.md) - 5. Verifica di normalizzazione + + 4. [Dati derivati](4-4-dati-derivati.md) + 5. [Schema logico](4-5-schema-logico.md) + 6. [Verifica di normalizzazione](4-6-normalizzazione.md) +5. **Progettazione fisica** + +6. **Programmazione database** diff --git a/img/0-README/alexandria.png b/img/0-README/alexandria.png index d9e95b0a18dd00b43a50719ae3f94c0f7df4fa81..eea396beede304d0bb2d813cf3507102b8da0cc1 100644 GIT binary patch delta 7149 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 delta 1805 zcmV+o2lDuhIP(sWBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm1v`jz z$WWau_=Px16^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|}?mh0_0Yam~RI_UwP&La)#baVNw<-o+;YSz)n16szVy2!*FJ|C5zV6}U z>s^#*d7t}p^eK6h0X~st?f%Ws^E4huXp zWMoqF#35p_*uioKvy!0_PZLKJRik_%>$1Xmi?dp(vDQ8L3xj!WCCzo3VZ^b71duoJ^1oUqM7uRh~-UBXofT1T{G9*Xx(-aB? z;QfrgDF+PR0=;W)Z>@ctJ^&f&YWW5@I0QzEl)dip?jxSg-u^w)>hA}9?{cdM%R~$S z000JJOGiWi{{a60|De66laosp9|;2-5IPZ0Q9L-4a~3FnOG!jQRCwC$on3CLFc3zQ zs%jROMYK!nBHG2}iTi{^xg?D3`LlhFR7I@{%sBAzjj_#jS(fDj004h@*WTgp*R8uo zxPL#2^Le!mfYo)xdDpQxX8ZzwziyZN_oGYU27nmeW=L`?*4%jk0C7AJ$<;*y03ePB z0to={3X?v6N5lsJaE=GgtT!hK0N_?uucG7q`AqZ>K>$c0j?qqVE$#Qe0{~1Zj%Ol? zg9HExSBvR`J-M_qv1FzKM8J6$kID4G%wOPswhZGQ0l-BZdl*N!jSpc202gu0EIQ1w z1^_8jP9FpSKpYR8BLF~HSzTN1O5I(J$l)9Tpc`?2JbHR85y1WU#hPOQ0HhMfGp8sK zyk~>FagG3>fqS3hD`C8UKZ?ucbsLH3(dP&NX~prCFly`<=Li7ZJ4Y>Hl!_nD5dcz( zqopuP1QO>60O`ar!;@m1BLJim$J(dTn(h(j2mooFVneH)W0qI|pfAiG$gHBX|BN70EC4;T zuDrkhK^z;%RKikD13(&a%yf6bIRXIA5$6a1I7gf#03;X3)t&7>Bb{P~SOB08)Q9q% zP0RcJy17l=%M=R$OfHU$a|8gyu|RaTA{9MLCc3QFTK36n`KX9^rT?q3Pp_M##rNfZ zoqyIGEWW>YFEKb;=wbW!nhR~e4~bihTCPlTJgxcOnq390?c|wvOZ-+b%$|SNc99Ua z5_pR+z7p51NY<9x+9yHH@jOJyavxE7YwSy_?PktDbGxJx$0Gr3ag0X}@W_=~yQ*k` zJIkY0+-i^AyRcig-RSxE6jOLv{meOk)+T(m?OET7M06MhcZ$T z|BTneu+A}q6No-3Yfe~8fwUYC+M2gz+e?q%QeyU+zsG9*83gtbs?1QPqR<8*Zd^PQ;7YY{@fTK8n(&yNRKq8C)ILGO}=+aeC01!uD~T&~_$aEZx>3@1ET2?D>z}F7!E0T1rc1LQrA@&JpLB*1=f`qqOYz zzSEDk9^%aT_ueizM~70P<%B5Ru4YPLhNaAU7KYjLAGKYWAro}REa{VfkqUZ?h*_*C zF3o#%w={eHy|xQatAoV1#u2vMiKTgSs3x&>Zn+( z%J!Of=9I?cwRYpELIC5m%bWJayFLZo|LhydV|n(-SS(J6n$p8!?K}h$ft;aT)WlJ` zgujPCW{E}fgzyqZ1QLONq+N{4>NCNbZI(>y%F4CdYn+G?agQP{v*$lTyQn^pk-S0A zQvkEXQd-7GE^_A^>34vj2|`E*pM6Klp6;1b}h4 vlx~0k0s!JTsc-@ST$g28=xqQ1_{%?n+Ov-jFgLsa0000