Advertisement
Guest User

Untitled

a guest
May 30th, 2017
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 32.54 KB | None | 0 0
  1. \documentclass[a4paper, oneside]{tufte-book}
  2.  
  3. \usepackage[italian]{babel}
  4. \usepackage[utf8]{inputenc}
  5.  
  6. \usepackage{tikz}
  7. \usetikzlibrary{shapes,positioning,calc}
  8.  
  9. \usepackage{amsmath}
  10. \usepackage[binary-units=true]{siunitx}
  11. \usepackage{hyperref, lipsum, booktabs, lettrine}
  12.  
  13. \usepackage{sectsty}
  14. \usepackage{xcolor}
  15. \definecolor{arvard}{RGB}{165, 28, 48}
  16. \sectionfont{\color{arvard}}
  17.  
  18. \usepackage{draftwatermark}
  19.  
  20. \usepackage{minted}
  21.  
  22. \title[Relazione Basi di Dati]{%
  23.     Relazione%
  24.     \par\noindent
  25.     Basi di Dati
  26. }
  27.  
  28. \author{Riccardo Nigrelli, \newline \noindent Matr. 20014421 \newline \noindent 20014421@studenti.uniupo.it}
  29.  
  30. \SetWatermarkText{\includegraphics[width=\textwidth,angle=-20,origin=c]{logo.pdf}}
  31. \SetWatermarkScale{1.3}
  32. \SetWatermarkVerCenter{120pt}
  33. \SetWatermarkHorCenter{520pt}
  34.  
  35. \begin{document}
  36.    
  37.  
  38.     \let\allcaps=\relax
  39.     \maketitle
  40.    
  41.     \let\cleardoublepage\clearpage
  42.     \cleardoublepage
  43.        
  44.     \tableofcontents
  45.    
  46.     \chapter{Progettazione Concettuale}
  47.        
  48.         \section{Requisiti iniziali}
  49.            
  50.             Si vuole realizzare una base di dati per la gestione di una piattaforma in cui gli utenti possono caricare, salvare e gestire immagini (si veda il file foto.pdf), organizzandole in contenitori dette bacheche (si veda il file board.pdf). Le immagini possono essere di proprietà dell'utente o scaricate da pagine web.
  51.  
  52.             I contenuti che vengono manipolati dagli utenti possono essere sfogliati nella pagina principale (si veda il file utente.pdf che mostra un esempio di pagina principale associata a un utente). Gli utenti possono quindi salvare con ``pin'' (puntine) le immagini a una delle loro tavole.
  53.            
  54.             Nella piattaforma le foto sono anche organizzate in categorie (topic, si veda il file topic.pdf), che forniscono un sistema di navigazione articolato in modo da aiutare gli utenti a condividere interessi. Per ogni topic vengono segnalati topic simili: due topic si definiscono simili se e solo se almeno il 20\% degli utenti possiede immagini di entrambi i topic in una delle proprie bacheche. Quando un utente disattiva il proprio profilo vengono cancellati tutti i pannelli da lui creati e le foto di cui è proprietario.
  55.        
  56.         \section{Glossario dei termini}
  57.        
  58.             \begin{center}
  59.                
  60.                 \begin{tabular}{llll}
  61.                    
  62.                     \toprule
  63.                     Termine         & Descrizione                   & Sinonimi                      & Collegamenti \\
  64.                     \midrule
  65.                    
  66.                     Utente          & Fruitore del servizio        & Proprietario                 & Bacheca, Immagini, Pin \\
  67.                     Immagini       & Immagini condivise         & Contenuti                    & Utente, Bacheca, Pin \\
  68.                     %Pin               & Azione di salvataggio     & Puntina                        & Utente, Bacheca, Immagini\\
  69.                     Argomenti      & Tipologia di immagine    & Topic                            & Immagini, Bacheca\\
  70.                     Bacheca        & Insieme di immagini        & Contenitore, Tavola, Pannelli       & Utente, Immagini \\
  71.  
  72.                     \bottomrule
  73.                    
  74.                 \end{tabular}  
  75.                
  76.             \end{center}   
  77.        
  78.         \section{Requisiti rivisti}
  79.            
  80.             Si vuole realizzare una base di dati per una piattaforma in cui gli utenti possono caricare, salvare e gestire immagini di loro proprietà o scaricate dal web.
  81.            
  82.             Il servizio offre la possibilità di organizzare le immagini in bacheche e/o di seguire quelle create da altri. Al loro interno l'interfaccia riporta dati come l'\textsc{utente proprietario}, il \textsc{titolo}, il \textsc{numero di immagini contenute} e il \textsc{numero di followers}. Ogni bacheca può essere seguita da più utenti; ma un utente non può seguire una bacheca di sua proprietà.
  83.            
  84.             La pagina di visualizzazione delle singole immagini, oltre a consentire il loro inserimento tra i preferiti, mostra informazioni riguardo \textsc{l'origine}, alla \textsc{descrizione}, all' \textsc{utente proprietario}, alla \textsc{bacheca ospitante} al \textsc{numero di likes} al \textsc{numero di pins}.
  85.            
  86.             L'utente è caratterizzato da una \textsc{email}, una \textsc{password}, dal numero di \textsc{followers}, di \textsc{following}, di \textsc{likes}, \textsc{pins}, \textsc{bacheche}. Essi con l'azione di ``pin'', posso salvare una determinata immagine in una specifica bacheca. Possono inoltre caricare un'immagine da un loro dispositivo oppure inserdo il link del sito di provenienza.
  87.            
  88.             Le categorie sono identificate da un \textsc{nome}. La somiglianza tra due categorie viene stabilita se e solo se almeno il 20\% degli utenti possiede immagini di entrambe in una delle proprie bacheche.
  89.            
  90.             Quando un utente disattiva il proprio profilo vengono cancellate tutte le bacheche e le immagini che ha condiviso.
  91.            
  92.         \section{Requisiti strutturati in gruppi di frasi omogenee}
  93.        
  94.             \begin{center}
  95.                 \begin{tabular}{p{.96\textwidth}}
  96.                     \toprule
  97.                     \textsc{Frasi di carattere generale}\\
  98.                     \midrule
  99.                     Si vuole realizzare una base di dati per una piattaforma in cui gli utenti possono caricare, salvare e gestire immagini di loro proprietà o scaricate dal web.\\
  100.                     \bottomrule
  101.                 \end{tabular}
  102.             \end{center}
  103.            
  104.             \begin{center}
  105.                 \begin{tabular}{p{.96\textwidth}}
  106.                     \toprule
  107.                     \textsc{Frasi relative agli utenti}\\
  108.                     \midrule
  109.                     L'utente è caratterizato da una \textsc{email}, una \textsc{password}, dal numero di \textsc{followers}, di \textsc{following}, di \textsc{likes}, \textsc{pins}, \textsc{bacheche}. Essi con l'azione di ``pin'', posso salvare una determinata immagine in una specifica bacheca. Possono inoltre caricare un'immagine da un loro dispositivo oppure inserdo il link del sito di provenienza. \\
  110.                     Quando un utente disattiva il proprio profilo vengono cancellate tutte le bacheche e le immagini che ha condiviso.\\
  111.                     \bottomrule
  112.                 \end{tabular}
  113.             \end{center}
  114.        
  115.             \begin{center}
  116.                 \begin{tabular}{p{.96\textwidth}}
  117.                     \toprule
  118.                     \textsc{Frasi relative alle bacheche}\\
  119.                     \midrule
  120.                         Il servizio offre la possibilità di organizzare le immagini in bacheche e/o di seguire quelle create da altri. Al loro interno l'interfaccia riporta dati come l'\textsc{utente proprietario}, il \textsc{titolo}, il \textsc{numero di immagini contenute} e il \textsc{numero di followers}. Ogni bacheca può essere seguita da più utenti; ma un utente non può seguire una bacheca di sua proprietà.\\
  121.                     \bottomrule
  122.                 \end{tabular}
  123.             \end{center}
  124.            
  125.             \begin{center}
  126.                 \begin{tabular}{p{.96\textwidth}}
  127.                     \toprule
  128.                     \textsc{Frasi relative alle categorie}\\
  129.                     \midrule
  130.                     Le categorie sono identificate da un \textsc{nome}. La somiglianza tra due categorie viene stabilita se e solo se almeno il 20\% degli utenti possiede immagini di entrambe in una delle proprie bacheche.\\
  131.                     \bottomrule
  132.                 \end{tabular}
  133.             \end{center}
  134.            
  135.             \begin{center}
  136.                 \begin{tabular}{p{.96\textwidth}}
  137.                     \toprule
  138.                     \textsc{Frasi relative alle immagini}\\
  139.                     \midrule
  140.                     La pagina di visualizzazione delle singole immagini, oltre a consentire il loro inserimento tra i preferiti, mostra informazioni riguardo \textsc{l'origine}, alla \textsc{descrizione}, all' \textsc{utente proprietario}, alla \textsc{bacheca ospitante} al \textsc{numero di likes} al \textsc{numero di pins}.\\  
  141.                     \bottomrule
  142.                 \end{tabular}
  143.             \end{center}
  144.  
  145.             \section{Analisi coerenza dei requisiti ristrutturati rispetto al glossario}
  146.                
  147.                 Dall'analisi di coerenza, risulta che tutti i termini definiti nel glossario sostituiscono propriamente tutti i loro sinonimi all'interno dei requisiti rivisti. Ciò permette a quest'ultimi di perdere ambiguità e chiarire in modo specifico a cosa si fa riferimento.
  148.                
  149.                
  150.             \section{Schema E-R e regole aziendali}
  151.            
  152.                 \begin{figure}
  153.                     \begin{fullwidth}
  154.                         \includegraphics[width=\linewidth]{ER}
  155.                     \end{fullwidth}
  156.                 \end{figure}
  157.                
  158.                 \newpage
  159.                 \noindent
  160.                 Le regole aziendali che ritengo non rappresentabili all'interno del modello E-R sono:
  161.                 \begin{itemize}
  162.                     \item L' impossibilità di un utente di seguire se stesso;
  163.                     \item L'impossibilità di seguire una bacheca di cui si è proprietari;
  164.                     \item L'impossibilità di un topic di essere simile a se stesso;
  165.                     \item La possibilità di stabilire se un argomento è simile ad un'altro se almeno il 20\% degli utenti possiede immagini di entrambi gli argomenti in una delle proprie bacheche;
  166.                     \item La possibilita di eliminare un utente unitamente ai suoi dati.
  167.                 \end{itemize}
  168.                
  169.             \section{Autovalutazione del modello E-R e  delle regole \newline \noindent aziendali}
  170.                 \begin{itemize}
  171.                     \item I costrutti sono stati utilizzati propriamente e sono stati messi tutti gli indentificatori delle entità e omessi quelli delle associazioni. È stato specificato il tipo di generalizzazione utilizzata. Sia per le entità che per le associazioni sono stati utilizzati solo ed esclusivamente nomi univoci. Tutte le regole aziendali inserite sono frutto di un'accurata analisi che ha portato a queste scelte. L'unico identificatore esterno che è stato utilizzato sfrutta una associazione la cui cardinalità è $(1,1)$. Non sono stati utilizzati identificatori basati su attributi opzionali o multivalore.
  172.                    
  173.                     \item Leggendo i requisiti iniziali ed analizzando lo schema realizzato, si evince che tutte le entità citate all'interno di questi sono state effettivamente inserite; la stessa cosa vale per le associazioni, tutte quelle inserite nello schema sono citate all'interno dei requisiti. Gli attributi, gli identificatori, le cardinalità sono congrui a quanto espresso all'interno dei requisiti.       
  174.                    
  175.                     \item Secondo una mia analisi, lo schema realizzato è leggibile. I nomi che ho scelto per le entità rappresentano propriamente il concetto che descrivono; i nomi delle associazioni sono stati scelti in modo da non creare difficoltà di lettura.
  176.                    
  177.                     \item Nello schema realizzato non sono presenti ridondanze indesiderate. A mio avviso, lo schema così realizzato è semplice ed intuitivo.
  178.                    
  179.                 \end{itemize}
  180.            
  181.             \chapter{Progettazione logica}
  182.            
  183.                 \section{Tavola dei volumi}
  184.                         \begin{minipage}{0.55\linewidth}
  185.                             \begin{tabular}{lcr%
  186.                                     S[table-format=3]%
  187.                                     S[table-format=3]%
  188.                                     S[table-format=1.1]
  189.                                 }
  190.                                 \toprule
  191.                                 Concetto        & Tipo      & Volume\\
  192.                                 \midrule
  193.                                 Utente          &   E       & \SI{6e7}{}\\
  194.                                 Immagini        &   E       & \SI{24e7}{}\\
  195.                                 Bacheca         &   E       & \SI{12e7}{}\\
  196.                                 Argomenti       &   E       & \SI{2e3}{}\\
  197.                                 \midrule
  198.                                
  199.                                 Follow          &   A       & \SI{9e8}{} \\
  200.                                 Inserisce       &   A       & \SI{24e7}{} \\
  201.                                 Pins            &   A       & \SI{15e8}{}\\
  202.                                 Likes           &   A       & \SI{12e8}{}\\
  203.                                 Include         &   A       & \SI{5e2}{}\\
  204.                                 Possiede        &   A       & \SI{12e7}{}\\
  205.                                 Segue           &   A       & \SI{12e8}{} \\
  206.                                 Tipologia       &   A       & \SI{125e7}{}\\
  207.                                 Somiglia        &   A       & \SI{2e2}{}\\
  208.                                 \bottomrule
  209.                             \end{tabular}
  210.                         \end{minipage}
  211.                         \begin{minipage}{0.9\linewidth}
  212.                             \begin{itemize}
  213.                                 \item Si suppone che la base di dati abbia un totale di $60$ milioni di \textsc{utenti};
  214.                                
  215.                                 \item Si stima che un utente carichi in media $4$ immagini al giorno, per cui avremo un totale di $240$ milioni di \textsc{immagini};
  216.                                
  217.                                 \item Si ipotizza che un utente in media \textsc{segua} $20$ degli altri utenti;
  218.                                
  219.                                 \item Si stima che un utente crei mediamente $2$ bacheche al giorno per un totale di $120$ milioni di \textsc{bacheche} e di occorrenze in \textsc{possiede};
  220.                                
  221.                                 \item Si stima che un utente segua mediamente $15$ bacheche al giorno per un totale di occorrenze per \textsc{follow} pari a $900$ milioni;
  222.                                
  223.                                 \item Si ipotizza in media un utente metta $20$ \textsc{like} in una giornata e che metta $25$ \textsc{pin}.  
  224.                                
  225.                                
  226.                             \end{itemize}
  227.                         \end{minipage}
  228.                    
  229.                 \section{Tavola delle operazioni}
  230.                    
  231.                         Analizzando i requisiti, ho dedotto che le operazioni svolte con maggiore frequenza sono:
  232.  
  233.                         \begin{center}
  234.                             \begin{tabular}{clcr%
  235.                                     S[table-format=3]%
  236.                                     S[table-format=3]%
  237.                                     S[table-format=1.1]
  238.                                 }
  239.                                 \toprule
  240.                                 Operazione & Descizione                                 & Tipo      & Frequenza\\
  241.                                 &                                           &           & {(al giorno)}\\
  242.                                 \midrule
  243.                                 1          & Registrazione di un nuovo utente           &   I       & \SI{4e4}{}\\
  244.                                 2          & Caricamento di una immagine                &   I       & \SI{3e6}{}\\
  245.                                 3          & Creazione di una bacheca                   &   I       & \SI{3e6}{}\\
  246.                                 4          & Like di una immagine                       &   I       & \SI{12e6}{}\\
  247.                                 5          & Pin di una immagine                        &   I       & \SI{17,5e6}{} \\
  248.                                 6          & Follow una bacheca                         &   I       & \SI{5e6}{} \\
  249.                                 7          & Seguire un utente                          &   I       & \SI{32e5}{}\\
  250.                                 8          & Visualizzare i contatori di una immagine   &   I       & \SI{144e6}{}\\
  251.                                 9          & Visualizzare i contatori di un utente      &   I       & \SI{96e6}{}\\
  252.                                 10         & Eliminazione di un'utente                  &   B       & \SI{2,5e3}{} \\
  253.                                 \bottomrule
  254.                             \end{tabular}
  255.                         \end{center}
  256.                                                                
  257.             \chapter{Ristrutturazione dello schema E-R}
  258.                 \section{Analisi delle ridondanze}
  259.                     Le ridondanze che secondo me sono da prendere in considerazione sono le seguenti.\\
  260.                     \bigskip
  261.                     \bigskip
  262.                     \noindent
  263.                     \textbf{N. FOLLOWING} - Attributo dell'entità \textit{UTENTE}\\
  264.                     \bigskip
  265.                     \noindent                  
  266.                     Tavola dei volumi e degli accessi che coinvolgono la ridondanza
  267.                     \bigskip
  268.                    
  269.                     \begin{minipage}{0.55\linewidth}   
  270.                         \begin{tabular}{llr}
  271.                             \toprule
  272.                             Concetto     & Tipo & Volume \\
  273.                             \midrule
  274.                             Utente       & E    & \SI{6e7}{}\\
  275.                             Follow       & A    & \SI{9e8}{}\\
  276.                             Segue        & A    & \SI{12e8}{}\\
  277.                             \bottomrule
  278.                         \end{tabular}
  279.                     \end{minipage}
  280.                     \begin{minipage}{0.55\linewidth}
  281.                         \begin{tabular}{clcr%
  282.                                 S[table-format=3]%
  283.                                 S[table-format=3]%
  284.                                 S[table-format=1.1]
  285.                             }
  286.                             \toprule
  287.                             Operazione & Descizione & Tipo & Frequenza\\
  288.                             \midrule
  289.                             $6$ & Follow una bacheca                        & I     & \SI{5e6}{}\\
  290.                             $7$ & Seguire un utente                         & I     & \SI{32e5}{}\\
  291.                             $9$ & Visualizzare i contatori di un utente     & I     & \SI{96e6}{} \\
  292.                             \bottomrule
  293.                         \end{tabular}
  294.                     \end{minipage}
  295.                     \\
  296.                     \bigskip
  297.                     \noindent
  298.                     -- Analisi dell'operazione $6$
  299.                     \\
  300.                     Tavola degli accessi in presenza della ridondanza\\
  301.                     \begin{tabular}{lccr}
  302.                         \toprule
  303.                         Concetto & Costrutto & Accessi & Tipo\\
  304.                         \midrule
  305.                         Utente  & E & 1 & Lettura\\
  306.                         Follow  & A & 1 & Scrittura\\
  307.                         Utente  & E & 1 & Scrittura\\
  308.                         \bottomrule
  309.                     \end{tabular}
  310.                     \\
  311.                     \bigskip
  312.                     Tavola degli accessi in assenza della ridondanza
  313.                     \\
  314.                     \begin{tabular}{lccr}
  315.                         \toprule
  316.                         Concetto & Costrutto & Accessi & Tipo\\
  317.                         \midrule
  318.                         Follow & A & 1 & Scrittura\\
  319.                         \bottomrule
  320.                     \end{tabular}
  321.                     \\
  322.                     \bigskip
  323.                     \noindent
  324.                     -- Analisi dell'operazione $7$
  325.                     \\
  326.                     Tavola degli accessi in presenza della ridondanza\\
  327.                     \begin{tabular}{lccr}
  328.                         \toprule
  329.                         Concetto & Costrutto & Accessi & Tipo\\
  330.                         \midrule
  331.                         Utente & E & 1 & Lettura\\
  332.                         Segue  & A & 1 & Scrittura\\
  333.                         Utente & E & 1 & Scrittura\\
  334.                         \bottomrule
  335.                     \end{tabular}
  336.                     \\
  337.                     \bigskip
  338.                     \bigskip
  339.                     \bigskip
  340.                     \bigskip
  341.                     \bigskip
  342.                     \bigskip
  343.                     \bigskip
  344.                     \bigskip
  345.                     Tavola degli accessi in assenza della ridondanza\\
  346.                     \begin{tabular}{lccr}
  347.                         \toprule
  348.                         Concetto & Costrutto & Accessi & Tipo\\
  349.                         \midrule
  350.                         Segue & A & 1 & Scrittura\\
  351.                         \bottomrule
  352.                     \end{tabular}  
  353.                     \\
  354.                     \bigskip
  355.                     \noindent
  356.                     -- Analisi dell'operazione $9$
  357.                     \\
  358.                     Tavola degli accessi in presenza della ridondanza\\
  359.                     \begin{tabular}{lccr}
  360.                         \toprule
  361.                         Concetto & Costrutto & Accessi & Tipo\\
  362.                         \midrule
  363.                         Utente & E & 1 & Lettura\\
  364.                         \bottomrule
  365.                     \end{tabular}
  366.                     \\
  367.                     \bigskip
  368.                     Tavola degli accessi in assenza della ridondanza\\
  369.                     \begin{tabular}{lccr}
  370.                         \toprule
  371.                         Concetto & Costrutto & Accessi & Tipo\\
  372.                         \midrule
  373.                         Utente & E & 1   & Lettura\\
  374.                         Follow & A & 15  & Scrittura\\
  375.                         Segue  & A & 20  & Scrittura\\
  376.                         \bottomrule
  377.                     \end{tabular}
  378.                    
  379.                     \bigskip   
  380.                     \bigskip
  381.                     \noindent
  382.                     Analisi del costo in spazio e in tempo in presenza della ridondanza
  383.                     -- Costo in spazio:\\
  384.                     Si assume di utilizzare $\SI{4}{\byte}$ per memorizzare il numero di following per utente. Avremmo quindi $4 \times (\SI{6e7}{}) = \SI{228,88}{\mega\byte}$\\
  385.                     \bigskip
  386.                     \noindent
  387.                     -- Costo in tempo:\\
  388.                     \begin{itemize}
  389.                         \item Operazione $6$: $2 \times (\SI{5e6}{})$ accessi in scrittura e $\SI{5e6}{}$ accesi in lettura al giorno;
  390.                         \item Operazione $7$: $2 \times (\SI{32e5}{})$ accessi in scrittura e $\SI{32e5}{}$ accesi in lettura al giorno;
  391.                         \item Operazione $9$: $\SI{96e6}{} accessi in lettura al giorno.$
  392.                     \end{itemize}
  393.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{137e6}{}$ accessi al giorno.\\
  394.                     %\bigskip  
  395.                     \bigskip
  396.                     \noindent
  397.                     Analisi del costo in spazio e in tempo in assenza della ridondanza\\
  398.                     \noindent
  399.                     -- Costo in spazio:\\
  400.                     $\SI{0}{\byte}$ \\
  401.                     \bigskip
  402.                     \noindent
  403.                     -- Costo in tempo:
  404.                     \begin{itemize}
  405.                         \item Operazione $6$: $\SI{5e6}{}$ accessi in scrittura al giorno;
  406.                         \item Operazione $7$: $\SI{32e5}{}$ accessi in scrittura al giorno;
  407.                         \item Operazione $9$: $36 \times (\SI{96e6}{})$ accessi in lettura al giorno.
  408.                     \end{itemize}
  409.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{34724e5}{}$ accessi al giorno.\\
  410.                     \bigskip
  411.                     \noindent
  412.                     Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
  413.                     \bigskip
  414.                     \bigskip
  415.                     \noindent
  416.  
  417.                     \textbf{N. IMMAGINI} - Attributo dell'entità \textit{BACHECA}\\
  418.                     \bigskip
  419.                     \noindent                  
  420.                     Tavola dei volumi e degli accessi che coinvolgono la ridondanza
  421.                     \bigskip
  422.                    
  423.                     \begin{minipage}{0.55\linewidth}   
  424.                         \begin{tabular}{llr}
  425.                             \toprule
  426.                             Concetto & Tipo & Volume \\
  427.                             \midrule
  428.                             Bacheca  &   E  & \SI{12e7}{}\\
  429.                             Pin      &   A  & \SI{15e8}{}\\
  430.                             Include  &   A  & \SI{5e2}{}\\
  431.                             \bottomrule
  432.                         \end{tabular}
  433.                     \end{minipage}
  434.                     \begin{minipage}{0.55\linewidth}
  435.                         \begin{tabular}{clcr%
  436.                                 S[table-format=3]%
  437.                                 S[table-format=3]%
  438.                                 S[table-format=1.1]
  439.                             }
  440.                             \toprule
  441.                             Operazione & Descizione & Tipo & Frequenza\\
  442.                             \midrule
  443.                             $2$ & Caricamento di una immagine       & I     & \SI{3e6}{}\\
  444.                             $5$ & Salvataggio di una immagine       & I      & \SI{17,5e6}{} \\
  445.                             \bottomrule
  446.                         \end{tabular}
  447.                     \end{minipage}
  448.                     \\
  449.                    
  450.                     \bigskip
  451.                     \noindent
  452.                     -- Analisi dell'operazione $2$
  453.                     \\
  454.                     Tavola degli accessi in presenza della ridondanza\\
  455.                     \begin{tabular}{lccr}
  456.                         \toprule
  457.                         Concetto & Costrutto & Accessi & Tipo\\
  458.                         \midrule
  459.                         Include & A & 1 & Scrittura\\
  460.                         Bacheca & E & 1 & Lettura\\
  461.                         Bacheca & E & 1 & Scrittura\\
  462.                         \bottomrule
  463.                     \end{tabular}
  464.                     \\
  465.                     \bigskip
  466.                     Tavola degli accessi in assenza della ridondanza
  467.                     \\
  468.                     \begin{tabular}{lccr}
  469.                         \toprule
  470.                         Concetto & Costrutto & Accessi & Tipo\\
  471.                         \midrule
  472.                         Include & A & 1 & Scrittura\\
  473.                         \bottomrule
  474.                     \end{tabular}
  475.                     \\
  476.                     \bigskip
  477.                     \noindent
  478.                     -- Analisi dell'operazione $5$
  479.                     \\
  480.                     Tavola degli accessi in presenza della ridondanza\\
  481.                     \begin{tabular}{lccr}
  482.                         \toprule
  483.                         Concetto & Costrutto & Accessi & Tipo\\
  484.                         \midrule
  485.                         Pin & A & 1 & Scrittura\\
  486.                         Bacheca & E & 1 & Lettura\\
  487.                         Bacheca & E & 1 & Scrittura\\
  488.                         \bottomrule
  489.                     \end{tabular}
  490.                     \\
  491.                     \bigskip
  492.                     Tavola degli accessi in assenza della ridondanza\\
  493.                     \begin{tabular}{lccr}
  494.                         \toprule
  495.                         Concetto & Costrutto & Accessi & Tipo\\
  496.                         \midrule
  497.                         Pin & A & 1 & Scrittura\\
  498.                         \bottomrule
  499.                     \end{tabular}  
  500.                    
  501.                     \bigskip   
  502.                     \bigskip
  503.                     \noindent
  504.                     Analisi del costo in spazio e in tempo in presenza della ridondanza
  505.                     -- Costo in spazio:\\
  506.                     Si assume di utilizzare $\SI{4}{\byte}$ per memorizzare il numero di immagini per bacheca. Avremmo quindi $4 \times (\SI{12e7}{}) = \SI{457,76}{\mega\byte}$\\
  507.                     \bigskip
  508.                     \noindent
  509.                     -- Costo in tempo:\\
  510.                     \begin{itemize}
  511.                         \item Operazione $2$: $2 \times (\SI{3e6}{})$ accessi in scrittura e $\SI{3e6}{}$ accesi in lettura al giorno;
  512.                         \item Operazione $5$: $\SI{17,5e6}{}$ accessi in lettura al giorno.\\
  513.                     \end{itemize}
  514.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{325e5}{}$ accessi al giorno.\\
  515.                     \bigskip   
  516.                     \bigskip   
  517.                     \bigskip
  518.                     \noindent
  519.                     Analisi del costo in spazio e in tempo in assenza della ridondanza\\
  520.                     \noindent
  521.                     -- Costo in spazio:\\
  522.                     $\SI{0}{\byte}$ \\
  523.                     \bigskip
  524.                     \noindent
  525.                     -- Costo in tempo:
  526.                     \begin{itemize}
  527.                         \item Operazione $2$: $\SI{3e6}{}$ accesi in scrittura al giorno;
  528.                         \item Operazione $5$: $\SI{17,5e6}{}$ accessi in scrittura al giorno.\\
  529.                     \end{itemize}
  530.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{41e6}{}$ accessi al giorno.\\
  531.                     \bigskip
  532.                     \noindent
  533.                     Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
  534.                     \bigskip
  535.                     \bigskip
  536.                     \noindent
  537.                     \textbf{LIKES} - Attributo dell'entità \textit{IMMAGINE}\\
  538.                     \bigskip
  539.                     \noindent                  
  540.                     Tavola dei volumi e degli accessi che coinvolgono la ridondanza
  541.                     \bigskip
  542.                    
  543.                     \begin{minipage}{0.49\linewidth}   
  544.                         \begin{tabular}{llr}
  545.                             \toprule
  546.                             Concetto    & Tipo  & Volume \\
  547.                             \midrule
  548.                             Immagine    &   E   & \SI{24e7}{}\\
  549.                             Likes       &   A   & \SI{12e8}{}\\
  550.                             \bottomrule
  551.                         \end{tabular}
  552.                     \end{minipage}
  553.                     \begin{minipage}{0.55\linewidth}
  554.                         \begin{tabular}{clcr%
  555.                                 S[table-format=3]%
  556.                                 S[table-format=3]%
  557.                                 S[table-format=1.1]
  558.                             }
  559.                             \toprule
  560.                             Operazione & Descizione & Tipo & Frequenza\\
  561.                             \midrule
  562.                             $4$ & Like di una immagine                      & I     & \SI{12e6}{}\\
  563.                             $8$ & Visualizzare i contatori di una immagine  & I     & \SI{144e6}{} \\
  564.                             \bottomrule
  565.                         \end{tabular}
  566.                     \end{minipage}
  567.                     \\
  568.                     \bigskip
  569.                     \noindent
  570.                     -- Analisi dell'operazione $4$
  571.                     \\
  572.                     Tavola degli accessi in presenza della ridondanza\\
  573.                     \begin{tabular}{lccr}
  574.                         \toprule
  575.                         Concetto  & Costrutto & Accessi & Tipo\\
  576.                         \midrule
  577.                         Likes     & A         & 1       & Scrittura\\
  578.                         Immagine  & E         & 1       & Lettura\\
  579.                         Immagine  & E         & 1       & Scrittura\\
  580.                         \bottomrule
  581.                     \end{tabular}
  582.                     \\
  583.                     \bigskip
  584.                     Tavola degli accessi in assenza della ridondanza
  585.                     \\
  586.                     \begin{tabular}{lccr}
  587.                         \toprule
  588.                         Concetto & Costrutto & Accessi & Tipo\\
  589.                         \midrule
  590.                         Likes    & A         & 1       & Scrittura\\
  591.                         \bottomrule
  592.                     \end{tabular}
  593.                     \\
  594.                     \bigskip
  595.                     \noindent
  596.                     -- Analisi dell'operazione $8$
  597.                     \\
  598.                     Tavola degli accessi in presenza della ridondanza\\
  599.                     \begin{tabular}{lccr}
  600.                         \toprule
  601.                         Concetto & Costrutto & Accessi & Tipo\\
  602.                         \midrule
  603.                         Immagine & A & 1 & Scrittura\\
  604.                         \bottomrule
  605.                     \end{tabular}
  606.                     \\
  607.                     \bigskip
  608.                     Tavola degli accessi in assenza della ridondanza\\
  609.                     \begin{tabular}{lccr}
  610.                         \toprule
  611.                         Concetto & Costrutto & Accessi & Tipo\\
  612.                         \midrule
  613.                         Immagine & E        & 1        & Lettura\\
  614.                         Likes    & A        & 15       & Lettura\\
  615.                         \bottomrule
  616.                     \end{tabular}  
  617.                    
  618.                     \newpage
  619.                     \bigskip   
  620.                     \bigskip
  621.                     \noindent
  622.                     Analisi del costo in spazio e in tempo in presenza della ridondanza
  623.                     -- Costo in spazio:\\
  624.                     Si assume di utilizzare $\SI{4}{\byte}$ per memorizzare il numero di like per ciascusa immagine. Avremmo quindi $4 \times (\SI{24e7}{}) = \SI{915,53}{\mega\byte}$\\
  625.                     \bigskip
  626.                     \noindent
  627.                     -- Costo in tempo:\\
  628.                     \begin{itemize}
  629.                         \item Operazione $4$: $2 \times (\SI{12e6}{})$ accessi in scrittura e $\SI{12e6}{}$ accesi in lettura al giorno;
  630.                         \item Operazione $8$: $\SI{144e6}{}$ accessi in lettura al giorno.\\
  631.                     \end{itemize}
  632.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{204e6}{}$ accessi al giorno.\\
  633.                     %\bigskip  
  634.                     \bigskip
  635.                     \noindent
  636.                     Analisi del costo in spazio e in tempo in assenza della ridondanza\\
  637.                     \noindent
  638.                     -- Costo in spazio:\\
  639.                     $\SI{0}{\byte}$ \\
  640.                     \bigskip
  641.                     \noindent
  642.                     -- Costo in tempo:
  643.                     \begin{itemize}
  644.                         \item Operazione $4$: $\SI{12e6}{}$ accesi in scrittura al giorno;
  645.                         \item Operazione $8$: $16 \times \SI{144e6}{}$ accessi in lettura al giorno.\\
  646.                     \end{itemize}
  647.                     Assumo che un accesso in scrittura costi il doppio rispetto ad un accesso in lettura, quindi si ha un totale di $\SI{2328e6}{}$ accessi al giorno.\\
  648.                     \bigskip
  649.                     \noindent
  650.                     Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
  651. %                   \bigskip
  652. %                   \bigskip
  653. %                   \noindent
  654.                        
  655.                 \section{Eliminazione delle generalizzazioni}
  656.                     La generalizzazione riguardante l'immagine, in fase di ristrutturazione si decide per accorpare le sotto entità nell'entità principale; quindi, all'entità principale si andrà ad aggiungere l'attributo `\textsc{link}` ereditato dalla sotto entità `\textsc{web}` il quale avrà cardinalità $(0, 1)$. Inoltre decido di aggiungere l'attributo `\textsc{origine}` in modo da distinguere univocamente l'origine dell'immagine. Questo attributo potrà assumere i seguenti due valori: `\textsc{locale}` o `\textsc{dal web}`.
  657.                
  658.                 \section{Eventuale partizionamento/accorpamento di entità e associazioni }
  659.                     Analizzando lo stato attuale dello schema, ho potuto constatare che non sono necessari partizionamenti e/o accorpamenti di entità o associazioni.
  660.                    
  661.                 \section{Eventuale scelta degli identificatori principali}
  662.                     L'entità \textsc{utente} viene identificata tramite l'email, in quanto è un valore univoco; l'entità \text{immagine} viene identificata mediante un id. Invece, per quanto riguarda gli identificatori esterni, decido di aggiungere alle entità l'attributo chiave dell'entità che la identifica.
  663.                    
  664.                 \section{Schema E-R ristrutturato e regole aziendali}
  665.                     \begin{figure}
  666.                         \begin{fullwidth}
  667.                             \includegraphics[width=\linewidth]{ER_ristrutturato}
  668.                         \end{fullwidth}
  669.                     \end{figure}
  670.                     \noindent
  671.                     Le regole aziendali che ritengo non rappresentabili all'interno del modello E-R sono:
  672.                     \begin{itemize}
  673.                         \item L' impossibilità di un utente di seguire se stesso;
  674.                         \item L'impossibilità di seguire una bacheca di cui si è proprietari;
  675.                         \item L'impossibilità di un topic di essere simile a se stesso;
  676.                         \item La possibilità di stabilire se un argomento è simile ad un'altro se almeno il 20\% degli utenti possiede immagini di entrambi gli argomenti in una delle proprie bacheche;
  677.                         \item La possibilita di eliminare un utente unitamente ai suoi dati;
  678.                         \item L'attributo `link` deve essere \textsc{NULL} nel caso in cui l'immagine venga caricata in locale.
  679.                     \end{itemize}
  680.                
  681.                 \newpage
  682.                 \section{Schema relazionale}
  683.                     \begin{center}
  684.                         \begin{tikzpicture}[relation/.style={rectangle split, rectangle split parts=#1, rectangle split part align=base, draw, anchor=center, align=center, text height=3mm, text centered}]\hspace*{-0.3cm}
  685.                        
  686.                         % RELATIONS
  687.                        
  688.                         \node (utentetitle) {\textbf{UTENTE}};
  689.                        
  690.                         \node [relation=7, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of utentetitle.west, anchor=west] (utente)
  691.                         {\underline{email}%
  692.                             \nodepart{two}   password
  693.                             \nodepart{three} pins
  694.                             \nodepart{four} n. bacheche
  695.                             \nodepart{five} followers
  696.                             \nodepart{six} following
  697.                             \nodepart{seven} likes
  698.                         };
  699.                        
  700.                         \node [below=1.3cm of utente.west, anchor=west] (segueutentetitle) {\textbf{SEGUE\_UTENTE}};
  701.                        
  702.                         \node [relation=2, rectangle split horizontal, rectangle split part fill={white}, below=0.6cm of segueutentetitle.west, anchor=west] (segueutente)
  703.                         {\nodepart{one} \underline{segue}
  704.                             \nodepart{two} \underline{seguito}
  705.                         };
  706.                        
  707.                         \node [below=1.1cm of segueutente.west, anchor=west] (bachecatitle) {\textbf{BACHECA}};
  708.                        
  709.                         \node [relation=4, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of bachecatitle.west, anchor=west] (bacheca)
  710.                         {\underline{titolo}%
  711.                             \nodepart{two}   \underline{emailBacheca}
  712.                             \nodepart{three} Followers
  713.                             \nodepart{four}  n. immagini
  714.                         };
  715.                    
  716.                         \node [below=1.4cm of bacheca.west, anchor=west] (followbachecatitle) {\textbf{FOLLOW\_BACHECA}};
  717.                        
  718.                         \node [relation=3, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of followbachecatitle.west, anchor=west] (followbacheca)
  719.                         {\underline{titolo}%
  720.                             \nodepart{two}   \underline{emailBacheca}
  721.                             \nodepart{three} \underline{emailUtente}
  722.                         };
  723.                        
  724.        
  725.                         \node [below=1.4cm of followbacheca.west, anchor=west] (immaginetitle) {\textbf{IMMAGINE}};
  726.                        
  727.                         \node [relation=7, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of immaginetitle.west, anchor=west] (immagine)
  728.                         {\underline{idFoto}%
  729.                             \nodepart{two}   utenteProprietario
  730.                             \nodepart{three} pins
  731.                             \nodepart{four} likes
  732.                             \nodepart{five} descrizione
  733.                             \nodepart{six} origine
  734.                             \nodepart{seven} link
  735.                            
  736.                         };
  737.                        
  738.                         \node [below=1.4cm of immagine.west, anchor=west] (argomentititle) {\textbf{ARGOMENTI}};
  739.                        
  740.                         \node [relation=1, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of argomentititle.west, anchor=west] (argomenti)
  741.                         {\underline{nome}
  742.                         };
  743.                        
  744.                        
  745.                         \node [below=1.4cm of argomenti.west, anchor=west] (somigliatitle) {\textbf{SOMIGLIA}};
  746.                        
  747.                         \node [relation=2, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of somigliatitle.west, anchor=west] (somiglia)
  748.                         {\underline{simile}%
  749.                             \nodepart{two}   \underline{non simile}
  750.                         };
  751.                        
  752.                         % FOREIGN KEYS
  753.                        
  754.                         \draw[-latex] (segueutente.one south) -- ++(0,-0.2) -| ($(segueutente.one south) + (3,0)$) |- ($(utente.one south) + (0.35,-0.50)$) -| ($(utente.one south) + (0.15,0)$);
  755.                        
  756.                         \draw[-latex] (segueutente.two south) -- ++(0,-0.3) -| ($(segueutente.two south) + (2,0)$) |- ($(utente.one south) + (0.5,-0.40)$) -| ($(utente.one south) + (0.25,0)$);
  757.                        
  758.                         \draw[-latex] (bacheca.two south) -- ++(0,-0.2) -| ($(bacheca.two south) + (6.5,0)$) |- ($(utente.one south) + (0.7,-0.30)$) -| ($(utente.one south) + (0.35,0)$);
  759.                        
  760.                         \draw[-latex] (followbacheca.one south) -- ++(0,-0.2) -| ($(followbacheca.one south) + (5.5,0)$) |- ($(bacheca.one south) + (0.7,-0.70)$) -| ($(bacheca.one south) + (0.35,0)$);
  761.                        
  762.                         \draw[-latex] (followbacheca.two south) -- ++(0,-0.3) -| ($(followbacheca.two south) + (5.5,0)$) |- ($(bacheca.two south) + (0.7,-0.60)$) -| ($(bacheca.two south) + (0.35,0)$);
  763.                        
  764.                         \draw[-latex] (followbacheca.three south) -- ++(0,-0.4) -| ($(followbacheca.three south) + (5.5,0)$) |- ($(utente.one south) + (0.7,-0.60)$) -| ($(utente.one south) + (0.35,0)$);
  765.                        
  766.                        
  767.                        
  768.                        
  769.                        
  770.                         \draw[-latex] (somiglia.one south) -- ++(0,-0.2) -| ($(somiglia.one south) + (3,0)$) |- ($(argomenti.one south) + (0.35,-0.50)$) -| ($(argomenti.one south) + (0.15,0)$);
  771.                        
  772.                         \draw[-latex] (somiglia.two south) -- ++(0,-0.3) -| ($(somiglia.two south) + (2,0)$) |- ($(argomenti.one south) + (0.5,-0.40)$) -| ($(argomenti.one south) + (0.25,0)$);
  773.                        
  774.                         \end{tikzpicture}
  775.                     \end{center}
  776.                
  777.                
  778.             \chapter{ DDL di creazione del database}
  779.            
  780.                 \inputminted{sql}{utente.sql}
  781.                
  782. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement