diff --git a/compitino/modello_compitino/dominio.tex b/compitino/modello_compitino/dominio.tex new file mode 100644 index 0000000..17aef8d --- /dev/null +++ b/compitino/modello_compitino/dominio.tex @@ -0,0 +1,5 @@ +% !TEX root = ../main.tex + +Descrizione del dominio. + +Nominare le classi di interesse, specificarne gli attributi e indicarne le relazioni con le altre classi. \ No newline at end of file diff --git a/compitino/modello_compitino/piani_di_accesso.tex b/compitino/modello_compitino/piani_di_accesso.tex new file mode 100644 index 0000000..3ae00b9 --- /dev/null +++ b/compitino/modello_compitino/piani_di_accesso.tex @@ -0,0 +1,51 @@ +% !TEX root = ../main.tex +\subsection{Query a} + +\paragraph{Piano di accesso logico della query a} +\begin{center} + \begin{forest} + [{$\pi^{b}$ R.C, S.D} + [{$\bowtie$ R.E = S.F} + [{$\sigma$ C $>=$ 10} + [Tabella1 R] + ] + [Tabella2 S] + ] + ] + \end{forest} +\end{center} + +\paragraph{Piano di accesso fisico della query a senza indici} +\begin{center} + \begin{forest} + [{Project(\{C, D\})} + [{SortMerge(R.E = S.F)} + [{Sort(\{E\})} + [{Project(\{E, C\})} + [{Filter(C $>=$ 10)} + [{TableScan(Tabella R)}] + ] + ] + ] + [{Sort(\{F\})} + [{Project(\{C, F\})} + [{TableScan(Tabella S)}] + ] + ] + ] + ] + \end{forest} +\end{center} + +\paragraph{Piano di accesso fisico della query a con due indici} +\begin{center} + \begin{forest}, baseline, qtree + [{Project(\{C, D\})} + [{IndexNestedLoop(R.E = S.F)} + [{IndexFilter(Tabella R,\\ IndRC, C $>=$ 10)}] + [{IndexFilter(Tabella S,\\IndSF, S.F = R.E)}] + ] + ] + \end{forest} +\end{center} +Indici necessari: \texttt{IndRC} (indice della tabella R sull’attributo C) e \texttt{IndSF} (indice della tabella S sull'attributo F). \ No newline at end of file diff --git a/compitino/modello_compitino/queries.tex b/compitino/modello_compitino/queries.tex new file mode 100644 index 0000000..6a98470 --- /dev/null +++ b/compitino/modello_compitino/queries.tex @@ -0,0 +1,14 @@ +% !TEX root = ../main.tex + +\begin{enumerate}[label=\alph*.] + \item Uso di proiezione, join e restrizione + + Per ogni record di R con valore di C maggiore o uguale a 10 e che ha un valore di E uguale a un valore di F nella tabella S, riportare R.C e S.D. +\begin{lstlisting}[style=SQLu] +SELECT R.C, S.D +FROM Tabella1 R +JOIN Tabella2 S ON R.E = S.F +WHERE R.C >= 10 +\end{lstlisting} +\end{enumerate} +\clearpage \ No newline at end of file diff --git a/compitino/modello_compitino/schema.drawio b/compitino/modello_compitino/schema.drawio new file mode 100644 index 0000000..4ff91ba --- /dev/null +++ b/compitino/modello_compitino/schema.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/compitino/modello_compitino/schema_concettuale.pdf b/compitino/modello_compitino/schema_concettuale.pdf new file mode 100644 index 0000000..9ddd060 Binary files /dev/null and b/compitino/modello_compitino/schema_concettuale.pdf differ diff --git a/compitino/modello_compitino/schema_concettuale.tex b/compitino/modello_compitino/schema_concettuale.tex new file mode 100644 index 0000000..d4ee4dc --- /dev/null +++ b/compitino/modello_compitino/schema_concettuale.tex @@ -0,0 +1,3 @@ +% !TEX root = ../main.tex + +Vincoli non catturato graficamente: \textellipsis \ No newline at end of file diff --git a/compitino/modello_compitino/schema_logico.pdf b/compitino/modello_compitino/schema_logico.pdf new file mode 100644 index 0000000..8a0b33d Binary files /dev/null and b/compitino/modello_compitino/schema_logico.pdf differ diff --git a/compitino/modello_compitino/schema_logico.tex b/compitino/modello_compitino/schema_logico.tex new file mode 100644 index 0000000..2325a36 --- /dev/null +++ b/compitino/modello_compitino/schema_logico.tex @@ -0,0 +1,21 @@ +% !TEX root = ../main.tex + +\textbf{Schema logico relazionale in formato testuale} +\begin{lstlisting}[style=SQLu,escapechar=@] +Tabella(@\underline{ChiavePrimaria}@, B, C, D) +AltraTabella(@\underline{ChiavePrimariaEdEsterna*}@, E) +@\textellipsis@ +\end{lstlisting} + +\paragraph{Dipendenze funzionali} +\begin{itemize} +\item Per ogni tabella la chiave primaria (sottolineata) determina ciascuno degli attributi della tabella +\item Altre eventuali dipendenze +\end{itemize} + + +Uno schema R, avente insieme di attributi T e insieme di dipendenze funzionali F, (\lstinline{R}) è +in forma normale di Boyce-Codd (BCNF) se ogni dipendenza funzionale della chiusura di F o è +banale o ha come determinante una superchiave di T. +Esiste un teorema che semplifica il calcolo, asserendo che se la condizione di cui sopra vale per +una qualsiasi copertura di F allora vale per l’intera chiusura di F. diff --git a/compitino/modello_compitino/testo.tex b/compitino/modello_compitino/testo.tex new file mode 100644 index 0000000..d1fbd69 --- /dev/null +++ b/compitino/modello_compitino/testo.tex @@ -0,0 +1,3 @@ +% !TEX root = ../main.tex + +Il testo viene assegnato dal Professore. \ No newline at end of file diff --git a/compitino/secondo_compitino/schema.drawio b/compitino/secondo_compitino/schema.drawio new file mode 100644 index 0000000..4ff91ba --- /dev/null +++ b/compitino/secondo_compitino/schema.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file