Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass[a4paper, oneside]{tufte-book}
- \usepackage[italian]{babel}
- \usepackage[utf8]{inputenc}
- \usepackage{tikz}
- \usetikzlibrary{shapes,positioning,calc}
- \usepackage{amsmath}
- \usepackage[binary-units=true]{siunitx}
- \usepackage{hyperref, lipsum, booktabs, lettrine}
- \usepackage{sectsty}
- \usepackage{xcolor}
- \definecolor{arvard}{RGB}{165, 28, 48}
- \sectionfont{\color{arvard}}
- \usepackage{draftwatermark}
- \usepackage{minted}
- \title[Relazione Basi di Dati]{%
- Relazione%
- \par\noindent
- Basi di Dati
- }
- \author{Riccardo Nigrelli, \newline \noindent Matr. 20014421 \newline \noindent 20014421@studenti.uniupo.it}
- \SetWatermarkText{\includegraphics[width=\textwidth,angle=-20,origin=c]{logo.pdf}}
- \SetWatermarkScale{1.3}
- \SetWatermarkVerCenter{120pt}
- \SetWatermarkHorCenter{520pt}
- \begin{document}
- \let\allcaps=\relax
- \maketitle
- \let\cleardoublepage\clearpage
- \cleardoublepage
- \tableofcontents
- \chapter{Progettazione Concettuale}
- \section{Requisiti iniziali}
- 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.
- 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.
- 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.
- \section{Glossario dei termini}
- \begin{center}
- \begin{tabular}{llll}
- \toprule
- Termine & Descrizione & Sinonimi & Collegamenti \\
- \midrule
- Utente & Fruitore del servizio & Proprietario & Bacheca, Immagini, Pin \\
- Immagini & Immagini condivise & Contenuti & Utente, Bacheca, Pin \\
- %Pin & Azione di salvataggio & Puntina & Utente, Bacheca, Immagini\\
- Argomenti & Tipologia di immagine & Topic & Immagini, Bacheca\\
- Bacheca & Insieme di immagini & Contenitore, Tavola, Pannelli & Utente, Immagini \\
- \bottomrule
- \end{tabular}
- \end{center}
- \section{Requisiti rivisti}
- 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.
- 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à.
- 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}.
- 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.
- 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.
- Quando un utente disattiva il proprio profilo vengono cancellate tutte le bacheche e le immagini che ha condiviso.
- \section{Requisiti strutturati in gruppi di frasi omogenee}
- \begin{center}
- \begin{tabular}{p{.96\textwidth}}
- \toprule
- \textsc{Frasi di carattere generale}\\
- \midrule
- 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.\\
- \bottomrule
- \end{tabular}
- \end{center}
- \begin{center}
- \begin{tabular}{p{.96\textwidth}}
- \toprule
- \textsc{Frasi relative agli utenti}\\
- \midrule
- 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. \\
- Quando un utente disattiva il proprio profilo vengono cancellate tutte le bacheche e le immagini che ha condiviso.\\
- \bottomrule
- \end{tabular}
- \end{center}
- \begin{center}
- \begin{tabular}{p{.96\textwidth}}
- \toprule
- \textsc{Frasi relative alle bacheche}\\
- \midrule
- 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à.\\
- \bottomrule
- \end{tabular}
- \end{center}
- \begin{center}
- \begin{tabular}{p{.96\textwidth}}
- \toprule
- \textsc{Frasi relative alle categorie}\\
- \midrule
- 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.\\
- \bottomrule
- \end{tabular}
- \end{center}
- \begin{center}
- \begin{tabular}{p{.96\textwidth}}
- \toprule
- \textsc{Frasi relative alle immagini}\\
- \midrule
- 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}.\\
- \bottomrule
- \end{tabular}
- \end{center}
- \section{Analisi coerenza dei requisiti ristrutturati rispetto al glossario}
- 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.
- \section{Schema E-R e regole aziendali}
- \begin{figure}
- \begin{fullwidth}
- \includegraphics[width=\linewidth]{ER}
- \end{fullwidth}
- \end{figure}
- \newpage
- \noindent
- Le regole aziendali che ritengo non rappresentabili all'interno del modello E-R sono:
- \begin{itemize}
- \item L' impossibilità di un utente di seguire se stesso;
- \item L'impossibilità di seguire una bacheca di cui si è proprietari;
- \item L'impossibilità di un topic di essere simile a se stesso;
- \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;
- \item La possibilita di eliminare un utente unitamente ai suoi dati.
- \end{itemize}
- \section{Autovalutazione del modello E-R e delle regole \newline \noindent aziendali}
- \begin{itemize}
- \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.
- \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.
- \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.
- \item Nello schema realizzato non sono presenti ridondanze indesiderate. A mio avviso, lo schema così realizzato è semplice ed intuitivo.
- \end{itemize}
- \chapter{Progettazione logica}
- \section{Tavola dei volumi}
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{lcr%
- S[table-format=3]%
- S[table-format=3]%
- S[table-format=1.1]
- }
- \toprule
- Concetto & Tipo & Volume\\
- \midrule
- Utente & E & \SI{6e7}{}\\
- Immagini & E & \SI{24e7}{}\\
- Bacheca & E & \SI{12e7}{}\\
- Argomenti & E & \SI{2e3}{}\\
- \midrule
- Follow & A & \SI{9e8}{} \\
- Inserisce & A & \SI{24e7}{} \\
- Pins & A & \SI{15e8}{}\\
- Likes & A & \SI{12e8}{}\\
- Include & A & \SI{5e2}{}\\
- Possiede & A & \SI{12e7}{}\\
- Segue & A & \SI{12e8}{} \\
- Tipologia & A & \SI{125e7}{}\\
- Somiglia & A & \SI{2e2}{}\\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \begin{minipage}{0.9\linewidth}
- \begin{itemize}
- \item Si suppone che la base di dati abbia un totale di $60$ milioni di \textsc{utenti};
- \item Si stima che un utente carichi in media $4$ immagini al giorno, per cui avremo un totale di $240$ milioni di \textsc{immagini};
- \item Si ipotizza che un utente in media \textsc{segua} $20$ degli altri utenti;
- \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};
- \item Si stima che un utente segua mediamente $15$ bacheche al giorno per un totale di occorrenze per \textsc{follow} pari a $900$ milioni;
- \item Si ipotizza in media un utente metta $20$ \textsc{like} in una giornata e che metta $25$ \textsc{pin}.
- \end{itemize}
- \end{minipage}
- \section{Tavola delle operazioni}
- Analizzando i requisiti, ho dedotto che le operazioni svolte con maggiore frequenza sono:
- \begin{center}
- \begin{tabular}{clcr%
- S[table-format=3]%
- S[table-format=3]%
- S[table-format=1.1]
- }
- \toprule
- Operazione & Descizione & Tipo & Frequenza\\
- & & & {(al giorno)}\\
- \midrule
- 1 & Registrazione di un nuovo utente & I & \SI{4e4}{}\\
- 2 & Caricamento di una immagine & I & \SI{3e6}{}\\
- 3 & Creazione di una bacheca & I & \SI{3e6}{}\\
- 4 & Like di una immagine & I & \SI{12e6}{}\\
- 5 & Pin di una immagine & I & \SI{17,5e6}{} \\
- 6 & Follow una bacheca & I & \SI{5e6}{} \\
- 7 & Seguire un utente & I & \SI{32e5}{}\\
- 8 & Visualizzare i contatori di una immagine & I & \SI{144e6}{}\\
- 9 & Visualizzare i contatori di un utente & I & \SI{96e6}{}\\
- 10 & Eliminazione di un'utente & B & \SI{2,5e3}{} \\
- \bottomrule
- \end{tabular}
- \end{center}
- \chapter{Ristrutturazione dello schema E-R}
- \section{Analisi delle ridondanze}
- Le ridondanze che secondo me sono da prendere in considerazione sono le seguenti.\\
- \bigskip
- \bigskip
- \noindent
- \textbf{N. FOLLOWING} - Attributo dell'entità \textit{UTENTE}\\
- \bigskip
- \noindent
- Tavola dei volumi e degli accessi che coinvolgono la ridondanza
- \bigskip
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{llr}
- \toprule
- Concetto & Tipo & Volume \\
- \midrule
- Utente & E & \SI{6e7}{}\\
- Follow & A & \SI{9e8}{}\\
- Segue & A & \SI{12e8}{}\\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{clcr%
- S[table-format=3]%
- S[table-format=3]%
- S[table-format=1.1]
- }
- \toprule
- Operazione & Descizione & Tipo & Frequenza\\
- \midrule
- $6$ & Follow una bacheca & I & \SI{5e6}{}\\
- $7$ & Seguire un utente & I & \SI{32e5}{}\\
- $9$ & Visualizzare i contatori di un utente & I & \SI{96e6}{} \\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $6$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Utente & E & 1 & Lettura\\
- Follow & A & 1 & Scrittura\\
- Utente & E & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza
- \\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Follow & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $7$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Utente & E & 1 & Lettura\\
- Segue & A & 1 & Scrittura\\
- Utente & E & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- \bigskip
- \bigskip
- \bigskip
- \bigskip
- \bigskip
- \bigskip
- \bigskip
- Tavola degli accessi in assenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Segue & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $9$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Utente & E & 1 & Lettura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Utente & E & 1 & Lettura\\
- Follow & A & 15 & Scrittura\\
- Segue & A & 20 & Scrittura\\
- \bottomrule
- \end{tabular}
- \bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in presenza della ridondanza
- -- Costo in spazio:\\
- 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}$\\
- \bigskip
- \noindent
- -- Costo in tempo:\\
- \begin{itemize}
- \item Operazione $6$: $2 \times (\SI{5e6}{})$ accessi in scrittura e $\SI{5e6}{}$ accesi in lettura al giorno;
- \item Operazione $7$: $2 \times (\SI{32e5}{})$ accessi in scrittura e $\SI{32e5}{}$ accesi in lettura al giorno;
- \item Operazione $9$: $\SI{96e6}{} accessi in lettura al giorno.$
- \end{itemize}
- 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.\\
- %\bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in assenza della ridondanza\\
- \noindent
- -- Costo in spazio:\\
- $\SI{0}{\byte}$ \\
- \bigskip
- \noindent
- -- Costo in tempo:
- \begin{itemize}
- \item Operazione $6$: $\SI{5e6}{}$ accessi in scrittura al giorno;
- \item Operazione $7$: $\SI{32e5}{}$ accessi in scrittura al giorno;
- \item Operazione $9$: $36 \times (\SI{96e6}{})$ accessi in lettura al giorno.
- \end{itemize}
- 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.\\
- \bigskip
- \noindent
- Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
- \bigskip
- \bigskip
- \noindent
- \textbf{N. IMMAGINI} - Attributo dell'entità \textit{BACHECA}\\
- \bigskip
- \noindent
- Tavola dei volumi e degli accessi che coinvolgono la ridondanza
- \bigskip
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{llr}
- \toprule
- Concetto & Tipo & Volume \\
- \midrule
- Bacheca & E & \SI{12e7}{}\\
- Pin & A & \SI{15e8}{}\\
- Include & A & \SI{5e2}{}\\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{clcr%
- S[table-format=3]%
- S[table-format=3]%
- S[table-format=1.1]
- }
- \toprule
- Operazione & Descizione & Tipo & Frequenza\\
- \midrule
- $2$ & Caricamento di una immagine & I & \SI{3e6}{}\\
- $5$ & Salvataggio di una immagine & I & \SI{17,5e6}{} \\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $2$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Include & A & 1 & Scrittura\\
- Bacheca & E & 1 & Lettura\\
- Bacheca & E & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza
- \\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Include & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $5$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Pin & A & 1 & Scrittura\\
- Bacheca & E & 1 & Lettura\\
- Bacheca & E & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Pin & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in presenza della ridondanza
- -- Costo in spazio:\\
- 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}$\\
- \bigskip
- \noindent
- -- Costo in tempo:\\
- \begin{itemize}
- \item Operazione $2$: $2 \times (\SI{3e6}{})$ accessi in scrittura e $\SI{3e6}{}$ accesi in lettura al giorno;
- \item Operazione $5$: $\SI{17,5e6}{}$ accessi in lettura al giorno.\\
- \end{itemize}
- 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.\\
- \bigskip
- \bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in assenza della ridondanza\\
- \noindent
- -- Costo in spazio:\\
- $\SI{0}{\byte}$ \\
- \bigskip
- \noindent
- -- Costo in tempo:
- \begin{itemize}
- \item Operazione $2$: $\SI{3e6}{}$ accesi in scrittura al giorno;
- \item Operazione $5$: $\SI{17,5e6}{}$ accessi in scrittura al giorno.\\
- \end{itemize}
- 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.\\
- \bigskip
- \noindent
- Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
- \bigskip
- \bigskip
- \noindent
- \textbf{LIKES} - Attributo dell'entità \textit{IMMAGINE}\\
- \bigskip
- \noindent
- Tavola dei volumi e degli accessi che coinvolgono la ridondanza
- \bigskip
- \begin{minipage}{0.49\linewidth}
- \begin{tabular}{llr}
- \toprule
- Concetto & Tipo & Volume \\
- \midrule
- Immagine & E & \SI{24e7}{}\\
- Likes & A & \SI{12e8}{}\\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \begin{minipage}{0.55\linewidth}
- \begin{tabular}{clcr%
- S[table-format=3]%
- S[table-format=3]%
- S[table-format=1.1]
- }
- \toprule
- Operazione & Descizione & Tipo & Frequenza\\
- \midrule
- $4$ & Like di una immagine & I & \SI{12e6}{}\\
- $8$ & Visualizzare i contatori di una immagine & I & \SI{144e6}{} \\
- \bottomrule
- \end{tabular}
- \end{minipage}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $4$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Likes & A & 1 & Scrittura\\
- Immagine & E & 1 & Lettura\\
- Immagine & E & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza
- \\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Likes & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- \noindent
- -- Analisi dell'operazione $8$
- \\
- Tavola degli accessi in presenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Immagine & A & 1 & Scrittura\\
- \bottomrule
- \end{tabular}
- \\
- \bigskip
- Tavola degli accessi in assenza della ridondanza\\
- \begin{tabular}{lccr}
- \toprule
- Concetto & Costrutto & Accessi & Tipo\\
- \midrule
- Immagine & E & 1 & Lettura\\
- Likes & A & 15 & Lettura\\
- \bottomrule
- \end{tabular}
- \newpage
- \bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in presenza della ridondanza
- -- Costo in spazio:\\
- 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}$\\
- \bigskip
- \noindent
- -- Costo in tempo:\\
- \begin{itemize}
- \item Operazione $4$: $2 \times (\SI{12e6}{})$ accessi in scrittura e $\SI{12e6}{}$ accesi in lettura al giorno;
- \item Operazione $8$: $\SI{144e6}{}$ accessi in lettura al giorno.\\
- \end{itemize}
- 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.\\
- %\bigskip
- \bigskip
- \noindent
- Analisi del costo in spazio e in tempo in assenza della ridondanza\\
- \noindent
- -- Costo in spazio:\\
- $\SI{0}{\byte}$ \\
- \bigskip
- \noindent
- -- Costo in tempo:
- \begin{itemize}
- \item Operazione $4$: $\SI{12e6}{}$ accesi in scrittura al giorno;
- \item Operazione $8$: $16 \times \SI{144e6}{}$ accessi in lettura al giorno.\\
- \end{itemize}
- 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.\\
- \bigskip
- \noindent
- Quindi possiamo concludere che, mantenere aggiornato il dato ridondante costa molto meno che ricalcolarlo.\\
- % \bigskip
- % \bigskip
- % \noindent
- \section{Eliminazione delle generalizzazioni}
- 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}`.
- \section{Eventuale partizionamento/accorpamento di entità e associazioni }
- Analizzando lo stato attuale dello schema, ho potuto constatare che non sono necessari partizionamenti e/o accorpamenti di entità o associazioni.
- \section{Eventuale scelta degli identificatori principali}
- 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.
- \section{Schema E-R ristrutturato e regole aziendali}
- \begin{figure}
- \begin{fullwidth}
- \includegraphics[width=\linewidth]{ER_ristrutturato}
- \end{fullwidth}
- \end{figure}
- \noindent
- Le regole aziendali che ritengo non rappresentabili all'interno del modello E-R sono:
- \begin{itemize}
- \item L' impossibilità di un utente di seguire se stesso;
- \item L'impossibilità di seguire una bacheca di cui si è proprietari;
- \item L'impossibilità di un topic di essere simile a se stesso;
- \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;
- \item La possibilita di eliminare un utente unitamente ai suoi dati;
- \item L'attributo `link` deve essere \textsc{NULL} nel caso in cui l'immagine venga caricata in locale.
- \end{itemize}
- \newpage
- \section{Schema relazionale}
- \begin{center}
- \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}
- % RELATIONS
- \node (utentetitle) {\textbf{UTENTE}};
- \node [relation=7, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of utentetitle.west, anchor=west] (utente)
- {\underline{email}%
- \nodepart{two} password
- \nodepart{three} pins
- \nodepart{four} n. bacheche
- \nodepart{five} followers
- \nodepart{six} following
- \nodepart{seven} likes
- };
- \node [below=1.3cm of utente.west, anchor=west] (segueutentetitle) {\textbf{SEGUE\_UTENTE}};
- \node [relation=2, rectangle split horizontal, rectangle split part fill={white}, below=0.6cm of segueutentetitle.west, anchor=west] (segueutente)
- {\nodepart{one} \underline{segue}
- \nodepart{two} \underline{seguito}
- };
- \node [below=1.1cm of segueutente.west, anchor=west] (bachecatitle) {\textbf{BACHECA}};
- \node [relation=4, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of bachecatitle.west, anchor=west] (bacheca)
- {\underline{titolo}%
- \nodepart{two} \underline{emailBacheca}
- \nodepart{three} Followers
- \nodepart{four} n. immagini
- };
- \node [below=1.4cm of bacheca.west, anchor=west] (followbachecatitle) {\textbf{FOLLOW\_BACHECA}};
- \node [relation=3, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of followbachecatitle.west, anchor=west] (followbacheca)
- {\underline{titolo}%
- \nodepart{two} \underline{emailBacheca}
- \nodepart{three} \underline{emailUtente}
- };
- \node [below=1.4cm of followbacheca.west, anchor=west] (immaginetitle) {\textbf{IMMAGINE}};
- \node [relation=7, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of immaginetitle.west, anchor=west] (immagine)
- {\underline{idFoto}%
- \nodepart{two} utenteProprietario
- \nodepart{three} pins
- \nodepart{four} likes
- \nodepart{five} descrizione
- \nodepart{six} origine
- \nodepart{seven} link
- };
- \node [below=1.4cm of immagine.west, anchor=west] (argomentititle) {\textbf{ARGOMENTI}};
- \node [relation=1, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of argomentititle.west, anchor=west] (argomenti)
- {\underline{nome}%
- };
- \node [below=1.4cm of argomenti.west, anchor=west] (somigliatitle) {\textbf{SOMIGLIA}};
- \node [relation=2, rectangle split horizontal, rectangle split part fill={white}, anchor=north west, below=0.6cm of somigliatitle.west, anchor=west] (somiglia)
- {\underline{simile}%
- \nodepart{two} \underline{non simile}
- };
- % FOREIGN KEYS
- \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)$);
- \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)$);
- \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)$);
- \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)$);
- \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)$);
- \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)$);
- \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)$);
- \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)$);
- \end{tikzpicture}
- \end{center}
- \chapter{ DDL di creazione del database}
- \inputminted{sql}{utente.sql}
- \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement