Queer European MD passionate about IT
Parcourir la source

Working on final assignment

Davte il y a 4 ans
Parent
commit
dd1ca0e691

+ 6 - 0
compitino/main.tex

@@ -12,6 +12,8 @@
 \usepackage[normalem]{ulem}
 \usepackage{geometry}
 
+\AfterEndEnvironment{figure}{\noindent}
+
 \geometry{
 a4paper,
 top=30mm,
@@ -54,6 +56,8 @@ top=30mm,
         \input{\folder/dominio.tex}
 %    \clearpage
     \section{Schema concettuale}\label{sec:schema-concettuale}
+        La figura~\ref{fig:schema-concettuale} mostra lo schema concettuale in formato
+        grafico.
         \begin{figure}[hb]
           \centering
           \includegraphics[width=\linewidth]{\folder/schema_concettuale.pdf}
@@ -63,6 +67,8 @@ top=30mm,
         \input{\folder/schema_concettuale.tex}
     \clearpage
     \section{Schema logico}\label{sec:schema-logico}
+        La figura~\ref{fig:schema-logico} mostra lo schema logico-relazionale in
+        formato grafico.\\
         \begin{figure}[htb]
           \centering
           \includegraphics[width=\linewidth]{\folder/schema_logico.pdf}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
compitino/secondo_compitino/schema.drawio


+ 26 - 1
compitino/secondo_compitino/schema_concettuale.tex

@@ -59,15 +59,40 @@ L'applicazione mostrerà ad ogni birrai* solo le ricette di cui è aut*r* o di u
 birrificio per cui lavora.
 
 \begin{minipage}{\linewidth}
-    \paragraph{Vincoli non catturati graficamente}
+    \paragraph{Vincoli intra-relazionali}
     \begin{itemize}
+    \itemsep0em
+        \item Non possono esistere due persone con lo stesso codice fiscale.
+        \item Non possono esistere due birrai* con lo stesso soprannome.
+        \item Non possono esistere due fornitori con la stessa partita IVA né
+        con la stessa ragione sociale.
         \item Il tipo di ingrediente determina l'unità di misura.
         Esiste un breve elenco di tipi ingredienti disponibili con la relativa unità di
         misura.
         Non ho creato una classe ``TipiIngredienti" per contenere il numero di classi,
         ma in effetti il tipo determina funzionalmente l'unità di misura ed esistono
         pochi tipi, mentre ci sono molti ingredienti per ogni tipo.
+    \end{itemize}
+    \paragraph{Vincoli inter-relazionali}
+    \begin{itemize}
+    \itemsep0em
+        \item Alla registrazione, l'utente deve inserire un soprannome e/o un indirizzo
+        di spedizione: il vincolo di copertura impone che l'unione di Clienti e
+        Birraie sia Persone, non devono esistere persone che non sono né clienti
+        né birrai*.
         \item In ogni produzione, il NumeroBottiglie diviso per 0.5 non deve superare la
         CapacitàProduttiva del birrificio.
+        \item Ogni produzione deve iniziare con stato `in corso';
+        non può iniziare una produzione se un altra è `in corso' nello stesso
+        birrificio.
+        \item Ogni nota deve fare riferimento a una produzione.
+        \item Ogni prenotazione deve fare riferimento a una produzione.
+        \item Ogni prenotazione deve fare riferimento ad un* cliente.
+        \item Ogni produzione deve seguire una ricetta.
+        \item Ogni ricetta deve avere un* creat*r* e un birrificio di riferimento.
+        \item Ogni fattura deve fare riferimento ad un birrificio e un fornitore.
+        \item Ogni acquisto deve riferirsi a una fattura e un ingrediente.
+        \item Ogni ricetta deve avere almeno un ingrediente per ciascuno dei
+        seguenti tipi: malto, luppolo, lievito.
     \end{itemize}
 \end{minipage}

BIN
compitino/secondo_compitino/schema_logico.pdf


+ 44 - 7
compitino/secondo_compitino/schema_logico.tex

@@ -1,21 +1,58 @@
 % !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@
+Persone(@\underline{IdPersona}@, Nome, Cognome, Email, CodiceFiscale)
+Clienti(@\underline{IdPersona*}@, IndirizzoSpedizione)
+Birraie(@\underline{IdPersona*}@, Soprannome)
+Birrifici(@\underline{IdBirrificio}@, Nome, AnnoFondazione, Motto, Stemma,
+          CapacitàProduttiva)
+BirrificiBirraie(@\underline{IdBirrificio*, IdBirraia*}@)
+Fornitori(@\underline{IdFornitore}@, RagioneSociale, PartitaIva, Indirizzo)
+Fatture(@\underline{IdFattura}@, IdBirrificio*, IdFornitore*, Data,
+        NumeroFattura, Importo)
+TipiIngredienti(@\underline{IdTipo}@, Tipo, UnitàDiMisura)
+Ingredienti(@\underline{IdIngrediente}@, IdTipo*, Descrizione)
+Acquisti(@\underline{IdFattura*, IdIngrediente*}@, Quantità)
+Ricette(@\underline{IdRicetta}@, IdBirrificio*, IdCreatrice*, IdRicettaMadre*,
+        Nome, DataCreazione, Stato)
+IngredientiRicette(@\underline{IdRicetta*, IdIngrediente*}@, Quantità)
+Produzioni(@\underline{IdProduzione}@, IdRicetta*, DataProduzione, NumeroLotto,
+        Stato, NumeroBottiglie)
+Prenotazioni(@\underline{IdCliente*, IdProduzione*}@, Stato, Quantità)
+Note(@\underline{IdNota}@, IdProduzione*, Testo)
+NoteDegustazione(@\underline{IdNota*}@, Giudizio)
 \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
+    \itemsep0em
+    \item Per ogni tabella la chiave primaria (sottolineata) determina ciascuno
+    degli attributi della tabella.
+    \begin{lstlisting}[style=SQLu,escapechar=@]
+    IdPersona @$\to$@ Nome, IdPersona @$\to$@ Cognome, IdPersona @$\to$@ Email,
+    IdPersona @$\to$@ CodiceFiscale, @$\textellipsis$@
+    \end{lstlisting}
+    \item Nella tabella \texttt{Persone}, \texttt{CodiceFiscale} è chiave
+    naturale e determina tutti gli altri attributi.
+    Ho ritenuto prudente aggiungere una chiave artificiale perché, se è vero
+    che due persone diverse non avranno mai lo stesso codice fiscale, è vero
+    anche che ci possono essere errori umani nell'inserimento di un CF e voglio
+    riservarmi la possibilità di correggere un CF senza minare l'affidabiltà
+    della base di dati.
+    \item Stesso discorso per la RagioneSociale e la PartitaIva nella tabella
+    \texttt{Fornitori}.
 \end{itemize}
 
-
 Uno schema R, avente insieme di attributi T e insieme di dipendenze funzionali F, (\lstinline{R<T, F>}) è
 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.
+
+Nella copertura di F che ho descritto sopra (che peraltro è canonica: ogni dipendenza ha un
+solo attributo come determinato, nessuna dipendenza è ridondante e non sono presenti
+attributi estranei, in quanto ogni determinante è chiave), ogni dipendenza funzionale ha
+come determinante o la chiave primaria o una chiave naturale che non è stata scelta come
+primaria, in ogni caso una superchiave. \underline{La BCNF è pertanto rispettata}.

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff