Queer European MD passionate about IT
Procházet zdrojové kódy

Working on final assignment

Davte před 4 roky
rodič
revize
e54fb8472f

+ 10 - 1
compitino/main.tex

@@ -19,7 +19,13 @@ top=30mm,
 
 \forestset{qtree/.style={for tree={parent anchor=south,
            child anchor=north,align=center,inner sep=0pt}}}
-\lstset{upquote=true,showstringspaces=false}
+\lstset{
+    upquote=true,
+    inputencoding=utf8,
+    extendedchars=true,
+    literate={à}{{\`a}}1,  % Accept à in `lstlisting` environments
+    showstringspaces=false
+}
 \lstdefinestyle{SQLu}{
     language=SQL,
     basicstyle=\small\ttfamily,
@@ -43,8 +49,10 @@ top=30mm,
     \maketitle % Insert the title, author and date
     \section{Descrizione di massima del dominio (testo)}\label{sec:testo}
         \input{\folder/testo.tex}
+    \clearpage
     \section{Descrizione del dominio}\label{sec:dominio}
         \input{\folder/dominio.tex}
+%    \clearpage
     \section{Schema concettuale}\label{sec:schema-concettuale}
         \begin{figure}[hb]
           \centering
@@ -53,6 +61,7 @@ top=30mm,
           \label{fig:schema-concettuale}
         \end{figure}
         \input{\folder/schema_concettuale.tex}
+    \clearpage
     \section{Schema logico}\label{sec:schema-logico}
         \begin{figure}[htb]
           \centering

+ 10 - 8
compitino/secondo_compitino/dominio.tex

@@ -4,7 +4,7 @@ L'applicazione ``Una cervecita fresca" deve fornire supporto ai birrai e alle
 birraie artigianali nella produzione delle loro birre fatte in casa con il
 metodo all-grain.
 
-Ogni utente dell'app (birraio o birraia) lavora per uno o più birrifici, e può
+Ogni utente dell'app (birraio o birraia) può lavorare per uno o più birrifici, e può
 visualizzare le ricette dei birrifici per cui lavora.
 Del birraio o birraia sono rilevanti il nome, il cognome, il soprannome,
 l'indirizzo email, il codice fiscale.
@@ -12,6 +12,8 @@ Ogni birrificio ha un nome, un anno di fondazione, un motto e uno stemma.
 Il birrificio ha inoltre una capacità produttiva, cioè il numero massimo di
 litri che può produrre in un singolo ciclo produttivo.
 Per ogni birrificio possono lavorare più persone.
+Ogni birrificio può lavorare a una sola produzione per volta, mettendo a
+disposizione tutta la sua capacità produttiva, o solo una parte di questa.
 
 Ogni birrificio ha accesso a una o più ricette: ogni ricetta ha un nome, un
 creatore o creatrice, una data di creazione, una eventuale ricetta madre
@@ -53,13 +55,13 @@ Ogni nota ha un testo.
 Esistono particolari note, dette di degustazione, che esprimono anche un
 giudizio da 1 a 10 sulla qualità del prodotto.
 
-Il birrificio tiene un inventario degli ingredienti in magazzino, specificando
-per ogni ingrediente acquistato la quantità e la fattura.
-Ogni fattura del birrificio è caratterizzata da una data, un numero di fattura,
-un importo e un fornitore.
-L'inventario è generato dinamicamente dall'applicazione, sottraendo agli
-ingredienti acquistati quelli in uso o consumati da produzioni (secondo le
-quantità specificate nelle ricette).
+Il birrificio tiene un registro degli acquisti, conservando i dati della
+fattura e specificando per ogni ingrediente acquistato la quantità.
+Ogni fattura registrata dal birrificio è caratterizzata da una data, un numero
+di fattura, un importo e un fornitore.
+I fornitori hanno una ragione sociale, una partita IVA e un indirizzo.
+L'inventario mostra, per ogni ingrediente, la quantità disponibile e quella
+totale (compresi cioè gli ingredienti ``prenotati" da preparazioni in corso).
 
 Oltre che come birrario o birraia, ci si può anche registrare come cliente,
 specificando un indirizzo di spedizione.

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
compitino/secondo_compitino/schema.drawio


binární
compitino/secondo_compitino/schema_concettuale.pdf


+ 71 - 1
compitino/secondo_compitino/schema_concettuale.tex

@@ -1,3 +1,73 @@
 % !TEX root = ../main.tex
 
-Vincoli non catturati graficamente: \textellipsis
+\paragraph{Elenco degli ingredienti disponibili}
+*l* committente ha chiesto espressamente l'elenco degli ingredienti disponibili.
+Tuttavia, questo è calcolabile a partire dagli acquisti e dalle produzioni.
+Ho convinto *l* committente a non memorizzare separatamente l'inventario degli
+ingredienti, rassicurandol* che avrei fornito una vista logica ``Inventario".
+
+\begin{lstlisting}[style=SQLu][float,floatplacement=H]
+CREATE VIEW IngredientiAcquistatiTotali (IdIngrediente, Ingrediente,
+                                         Totale)
+AS (SELECT i.IdIngrediente IdIngrediente, i.Descrizione Ingrediente,
+        SUM(a.Quantità) Totale
+    FROM Acquisti a
+    JOIN Ingredienti i ON i.IdIngrediente = a.IdIngrediente
+    GROUP BY i.IdIngrediente, i.Descrizione)
+
+CREATE VIEW IngredientiInUso (IdIngrediente, Ingrediente, InUso)
+AS (SELECT i.IdIngrediente IdIngrediente, i.Descrizione Ingrediente,
+        SUM(ir.Quantità) InUso
+    FROM IngredientiRicette ir
+    JOIN Ingredienti i ON i.IdIngrediente = ir.IdIngrediente
+    JOIN Produzioni p ON p.IdRicetta = ir.IdRicetta
+    WHERE p.Stato IS NULL
+    GROUP BY i.IdIngrediente, i.Descrizione)
+
+CREATE VIEW IngredientiUsati (IdIngrediente, Ingrediente,
+                              QuantitàUsata)
+AS (SELECT i.IdIngrediente IdIngrediente, i.Descrizione Ingrediente,
+        SUM(ir.Quantità) Usati
+    FROM IngredientiRicette ir
+    JOIN Ingredienti i ON i.IdIngrediente = ir.IdIngrediente
+    JOIN Produzioni p ON p.IdRicetta = ir.IdRicetta
+    WHERE p.Stato = 0
+    GROUP BY i.IdIngrediente, i.Descrizione)
+
+CREATE VIEW Inventario (IdIngrediente, Ingrediente, QuantitàTotale,
+                        QuantitàDisponibile)
+AS (SELECT iat.IdIngrediente IdIngrediente, iat.Ingrediente Ingrediente,
+        (iat.Totale - COALESCE(iu.Usati, 0)) QuantitàTotale,
+        (iat.Totale - COALESCE(iu.Usati, 0)
+          - COALESCE(iiu.InUso, 0)) QuantitàDisponibile
+    FROM IngredientiAcquistatiTotali iat
+    LEFT JOIN IngredientiUsati iu
+              ON iu.idIngrediente = iat.IdIngrediente
+    LEFT JOIN IngredientiInUso iiu
+              ON iiu.idIngrediente = iat.IdIngrediente
+    WHERE iat.Totale - COALESCE(iu.Usati, 0) > 0)
+\end{lstlisting}
+
+Ogni volta che si inizia una produzione, l'applicazione controlla che  la
+quantità di ingredienti disponibili superi la quantità degli ingredienti
+necessari alla preparazione.
+
+L'applicazione può anche mostrare una ``lista della spesa" basandosi su ricette
+che si vogliono preparare e sulla vista inventario.
+
+L'applicazione mostrerà ad ogni birrai* solo le ricette di cui è aut*r* o di un
+birrificio per cui lavora.
+
+\begin{minipage}{\linewidth}
+    \paragraph{Vincoli non catturati graficamente}
+    \begin{itemize}
+        \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.
+        \item In ogni produzione, il NumeroBottiglie diviso per 0.5 non deve superare la
+        CapacitàProduttiva del birrificio.
+    \end{itemize}
+\end{minipage}

+ 4 - 2
compitino/secondo_compitino/testo.tex

@@ -25,8 +25,10 @@ anche:
 ``Una cervecita fresca" è un'applicazione che consente ai produttori amatoriali di birra di
 mantenere un database organizzato delle loro ricette di birra. L'applicazione consente agli
 utenti di creare, archiviare e modificare ricette, e successivamente eliminarle, se l'utente
-desidera farlo. L'applicazione è destinata solo ai produttori di birra con metodo \href{https://www.birradegliamici.com/fare-la-birra/all-grain/}{all-grain}, e quindi tutte le ricette sono per
-questo tipo di birre (le birre ``estratto" non sono supportate).
+desidera farlo. L'applicazione è destinata solo ai produttori di birra con metodo
+\href{https://www.birradegliamici.com/fare-la-birra/all-grain/}{all-grain}, e
+quindi tutte le ricette sono per questo tipo di birre (le birre ``estratto" non
+sono supportate).
 
 Ogni birrificio domestico dispone di un'attrezzatura specifica, le cui caratteristiche portano a
 una particolare ``dimensione del lotto": il numero massimo di litri che possono essere prodotti

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů