Sei sulla pagina 1di 57

Aquarium

Aquarium Elaborato per il corso di Basi di Dati Corso di Laurea in Ingegneria e scienze

Elaborato per il corso di Basi di Dati

Corso di Laurea in Ingegneria e scienze informatiche

Anno accademico 2013/2014

Londei Marina, matr 657478 Longobardi Luca, matr 652732

Introduzione

Il progetto “Aquarium” consiste nel realizzare un database per la gestione

di un acquario. Trattandosi di un progetto didattico, abbiamo deciso di

focalizzarci soltanto su alcuni dei tanti aspetti di un acquario, ovvero quello di gestione delle attività primarie. Sono presenti diversi punti di vista, per garantire il più possibile la completezza dell'applicazione:

essendo presenti un certo numero di compiti e responsabilità, si sono volute creare cinque categorie di personale, ognuna di queste con particolari servizi e diverse modalità di accesso al database. La prima di queste, quella dell' admin, permette a questa figura di visualizzare e controllare i dati presenti nel database, accedendo alle informazioni sui

magazzini, sui ritiri dei prodotti e i relativi ordini, sugli spettacoli, sulle visite mediche e registrando nuovi prodotti in magazzino e nuovi ordini. La figura della guida è invece in grado di registrare ingressi ed eventuali effettuazioni di visite guidate o partecipazioni ad uno spettacolo; inoltre, può anche visualizzare tutte le visite effettuate dalle guide. Il custode gestisce la parte dedicata direttamente agli animali, potendo infatti aggiungere un nuovo animale in una vasca; inoltre, esso si occupa sia dell'alimentazione degli animali che della pulizia delle vasche, dovendo per ogni operazione registrare quando e dove è stata fatta e da quali guardiani. Egli ha la possibilità di accedere ai magazzini per ritirare i prodotti, e di ogni ritiro deve registrare la data, i prodotti ritirati, la quantità di questi ultimi e aggiungere una descrizione del ritiro. Anche la figura del medico è in grado di accedere ai magazzini per ritirare i prodotti necessari, con annesse funzioni che sono analoghe a quelle del custode. Inoltre, ha anche il compito di registrare le visite effettuate, specificando data, esito e animale visitato. Infine l'istruttore è colui che aggiunge un nuovo spettacolo in programmazione, aggiungendo gli animali che vi parteciperanno, e registrando una sessione di istruzione effettuata da uno o più istruttori. Ovviamente, le situazioni trattate sono state semplificate per permettere

la realizzazione di un progetto a livello didattico.

Sono state lasciate da parte tutte le questioni amministrative ed economiche, eccezion fatta per la registrazione dei prodotti presenti in magazzino e i relativi ordini ai fornitori. Per occuparsi dell'amministrazione interna, sarebbe infatti necessario utilizzare un database con specifiche differenti che esulano dagli argomenti del corso, ad esempio la gestione di copie distribuite del database o la gestione della sicurezza. Il database è stato realizzato utilizzando MySQL, utilizzandolo su un nodo locale, mentre l'applicazione è stata progettata utilizzando il linguaggio C# in ambiente VisualStudio 2010.

2-Analisi dei requisiti

2.1-Requisiti in linguaggio naturale

L'acquario “Acquarium” richiede la progettazione di un sistema informatico per la gestione delle attività della propria impresa. Il sistema deve poter garantire l'accesso

sicuro all'applicazione di gestione, differenziando l'accesso per i dipendenti, ognuno dei quali sarà in grado di gestire diversi aspetti dell'acquario.

I Dipendenti sono di cinque tipi: l'admin, la guida, l'istruttore, il custode e il medico.

Di

essi si vogliono memorizzare i dati essenziali, quali nome, cognome, codice fiscale e

ID

univoco. L'admin ha perlopiù funzioni di controllo generale delle informazioni

presenti nel database. La guida registra gli ingressi all'acquario, siano essi liberi o

guidati; di entrambi, vanno memorizzati la data, il numero di persone, il prezzo e il numero che lo identifica. Nel caso in cui l'ingresso sia guidato, allora la guida dovrà registrare da chi è stato effettuato. Ogni ingresso può anche comprendere la partecipazione ad uno spettacolo, composto

da uno o più animali; questi, vengono istruiti da uno o più istruttori, che si dovranno

occupare della registrazione delle sessioni di allenamento.

I singoli animali risiedono in una vasca, identificata da un numero univoco all'interno

della propria categoria. Di essi, vogliono essere anche registrate le visite mediche, che

possiedono come informazioni data ed esito. Ogni vasca viene alimentata e pulita da uno o più custodi, registrandone data e descrizione. A differenza dell'alimentazione, la pulizia può essere effettuata solo una volta al giorno per una stessa vasca.

Anche i ritiri di prodotti dal magazzino, effettuati da custodi e medici, vanno registrati, mantenendone una descrizione e la quantità dei prodotti ritirati; ogni ritiro

è identificato da un codice univoco.

I prodotti, dei quali si vuole memorizzare il codice, la descrizione e il produttore,

risiedono in uno dei magazzini in una certa quantità. Per rifornire il magazzino di un determinato prodotto, è possibile effettuare un ordine ad un determinato fornitore, del quale si vuole mantenere il nome, l'indirizzo e il telefono.

2.2 Estrazione dei concetti fondamentali

L'acquario “Acquarium” richiede la progettazione di un sistema informatico per la gestione delle attività della propria impresa. Il sistema deve poter garantire l'accesso

sicuro all'applicazione di gestione, differenziando l'accesso per i dipendenti, ognuno dei quali sarà in grado di gestire diversi aspetti dell'acquario.

I Dipendenti sono di cinque tipi: l'admin, la guida, l'istruttore, il custode e il medico.

Di

essi si vogliono memorizzare i dati essenziali, quali nome, cognome, codice fiscale e

ID

univoco. L'admin ha perlopiù funzioni di controllo generale delle informazioni

presenti nel database. La guida registra gli ingressi all'acquario, siano essi liberi o

guidati; di entrambi, vanno memorizzati la data, il numero di persone, il prezzo e il numero che lo identifica. Nel caso in cui l'ingresso sia guidato, allora la guida dovrà registrare da chi è stato effettuato. Ogni ingresso può anche comprendere la partecipazione ad uno spettacolo, composto

da uno o più animali; questi, vengono istruiti da uno o più istruttori, che si dovranno

occupare della registrazione delle sessioni di allenamento.

I singoli animali risiedono in una vasca, identificata da un numero univoco all'interno

della propria categoria. Di essi, vogliono essere anche registrate le visite mediche, che

possiedono come informazioni data ed esito. Ogni vasca viene alimentata e pulita da uno o più custodi, registrandone data e descrizione. A differenza dell'alimentazione, la pulizia può essere effettuata solo una volta al giorno per una stessa vasca.

Anche i ritiri di prodotti dal magazzino, effettuati da custodi e medici, vanno registrati, mantenendone una descrizione e la quantità dei prodotti ritirati; ogni ritiro

è identificato da un codice univoco.

I prodotti, dei quali si vuole memorizzare il codice, la descrizione e il produttore,

risiedono in uno dei magazzini in una certa quantità. Per rifornire il magazzino di un determinato prodotto, è possibile effettuare un ordine ad un determinato fornitore, del quale si vuole mantenere il nome, l'indirizzo e il telefono.

2.3-Schema scheletro

2.3-Schema scheletro Nello schema scheletro abbiamo individuato le entità e le associazioni fondamentali. Nel seguito si

Nello schema scheletro abbiamo individuato le entità e le associazioni fondamentali. Nel seguito si approfondirà l'analisi dello schema, precisando il ruolo delle entità e aggiungendone altre per specificare meglio le varie operazioni. Per ora, le entità principali sono “Account”, “Ingresso”, “Spettacolo”, “Animale”, “Visita”, “Vasca”, ”Prodotto”, “Ordine”, “Fornitore”. Si può immediatamente notare come l'entità account debba essere specializzata costruendo una gerarchia di ruoli che si occupino delle diverse attività; le vasche dovrebbero essere organizzate in categorie per facilitare l'accesso alle informazioni, mentre gli ingressi dovrebbero fornire ulteriori informazioni sul loro tipo, distinguendo tra liberi e guidati. Inoltre, è necessario distinguere le operazioni sulle vasche (pulizia e alimentazione) e creare due entità separate e indipendenti. Questi sono i principali cambiamenti che dovranno essere apportati allo schema per garantire una visione chiara e ottimale del database, senza compromettere l'integrità dei dati.

3-PROGETTO DELLO SCHEMA CONCETTUALE

Nome

Tipo

Descrizione

Account

E

Generalizzazione di guida, istruttore, medico, custode e admin

Admin

E

Rappresenta l'amministratore dell'acquario

Guida

E

Rappresenta la guida che si occupa delle visite guidate

Istruttore

E

Rappresenta l'istruttore degli animali

Medico

E

Rappresenta il medico dell'acquario

Custode

E

Rappresenta il custode delle vasche

Effettuazione

R

Relazione tra “Guida” e “Guidato”

Ingresso

E

Rappresenta un ingresso all'acquario, generalizza guidato e libero

Guidato

E

Rappresenta un ingresso guidato

Libero

E

Rappresenta un ingresso libero

Assiste

R

Relazione tra “Ingresso” e “Spettacolo”

Spettacolo

E

Rappresenta uno spettacolo che si tiene all'acquario

Composizione

R

Relazione tra “Animale” e “Spettacolo”

Animale

E

Entità che modella un animale che risiede nell'acquario

Istruzione

R

Relazione tra “Animale” e “Istruttore”

Vasca

E

Entità che rappresenta una vasca

Permanenza

R

Relazione tra “Vasca” e “Animale”

Appartenenza

R

Relazione tra “Vasca” e “Categoria_Vasca”

Categoria_Vasca

E

Rappresenta una categoria di appartenenza di una vasca

Viene_alimentato

R

Relazione tra “Vasca” e “Alimentazione”

In_pulizia

R

Relazione tra “Vasca” e “Pulizia”

Alimentazione

E

Rappresenta un'alimentazione effettuata in una vasca

Pulizia

E

Rappresenta una pulizia effettuata in una vasca

Alimenta

R

Relazione tra “Alimentazione” e “Custode”

Fa_pulizia

R

Relazione tra “Pulizia” e “Custode”

Visita_medica

E

Entità che descrive una visita medica

Fa_visita

R

Relazione tra “Medico” e “Visita_medica”

In_visita

R

Relazione tra “Visita_medica” e “Animale”

Ritiro

E

Rappresenta il ritiro di un prodotto dal magazzino

Ritiro_medico

R

Relazione tra “Medico” e “Ritiro”

Ritiro_custode

R

Relazione tra “Custode” e “Ritiro”

Prelievo

R

Relazione tra “Ritiro” e “Prodotto”

Prodotto

E

Rappresenta un prodotto in magazzino

Stock

R

Relazione tra “Prodotto” e “Magazzino”

Magazzino

E

Rappresenta il magazzino

Ordine

E

Rappresenta un ordine effettuato

Contenuto

R

Relazione tra “Prodotto” e “Ordine”

Fornitore

E

Rappresenta un fornitore

Fornitura

R

Relazione tra “Fornitore” e “Ordine”

3.2- Sviluppo dell'entità ACCOUNT

3.2- Sviluppo dell'entità ACCOUNT L'entità account generalizza i cinque tipi di figure presenti

L'entità account generalizza i cinque tipi di figure presenti nell'acquario. A causa delle tante e diverse funzioni presenti, è stato necessario inserire le cinque specializzazioni dell'entità primaria, per gestire al meglio le modifiche e le richieste al database.

3.2- Sviluppo dell'entità INGRESSO

3.2- Sviluppo dell'entità INGRESSO Come già detto, un ingresso va specializzato in “Guidato” e “Libero”, per

Come già detto, un ingresso va specializzato in “Guidato” e “Libero”, per permettere alla guida di instaurare la relazione “Effettuazione” con l'entità “Guida”.

3.3-Sviluppo dell'entità VASCA

3.3-Sviluppo dell'entità VASCA Per l'entità “Vasca” si è deciso di creare una relazione con la nuova

Per l'entità “Vasca” si è deciso di creare una relazione con la nuova entità “Categoria_Vasca”. In questo modo infatti, le vasche vengono raggruppate in categorie, possedendo un numero che le identifica solo all'interno della propria area, e permettendo di accedere ai dati partendo da un livello più restrittivo; ciò inoltre, segue uno schema organizzativo molto più vicino a quello reale.

3.4-Sviluppo della relazione PULISCE E NUTRE

3.4-Sviluppo della relazione PULISCE E NUTRE La relazione “pulisce e nutre” è stata tradotta introducendo due

La relazione “pulisce e nutre” è stata tradotta introducendo due nuove entità specifiche per i due casi. Nel primo, la pulizia viene identificata dalla data e dall'identificatore esterno della vasca. Questo implica che una vasca non possa essere pulita più di una volta dallo (o dagli, come si evince dalla cardinalità di fa_pulizia) stesso custode più di una volta al giorno. Viceversa , l'identificatore dell'alimentazione è un codice apposito, in modo che una vasca possa essere alimentata più volte nello stesso giorno da uno o più custodi.

3.5-Sviluppo della relazione RITIRA

3.5-Sviluppo della relazione RITIRA La relazione “ritira” è stata tradotta introducendo l'entità “ritiro”

La relazione “ritira” è stata tradotta introducendo l'entità “ritiro” insieme alle relazioni “prelievo”,”ritiro custode” e “ritiro medico”. Un singolo ritiro, che può contenere diversi prodotti in diverse quantità (come si evince dalla cardinalità di “prelievo”), è identificato da un codice univoco. Informazioni addizionali vengono fornite dalla data e dalla descrizione. Inoltre l'entità ha cardinalità (1-1) dalla parte di “ritiro medico” e “ritiro custode” per cui per ogni gruppo di prodotti ritirati, a ogni custode o medico verrà assegnato un id-ritiro.

4 - SPECIFICHE FUNZIONALI

4.1 – Analisi delle funzionalità richieste

Durante la prima fase di progettazione logica lo schema verrà modificato in base alle operazioni da eseguire e al carico di lavoro che apportano al database. Sarà dunque necessario procedere ad un'analisi accurata di tutte le operazioni basilari da effettuare in modo da avere tutte le informazioni per procedere ad una corretta analisi della trasformazione logica. Qui di seguito sono elencate le operazioni da eseguire raggruppate per classi.

Operazioni di visualizzazione dei dati

Operazioni di gestione degli ingressi e delle visite

Operazione legate alla gestione dell'acquario

Ognuna di queste operazioni sarà analizzata e corredata di tutte le sue operazioni elementari, fornendone una descrizione generale; nel prossimo capitolo invece verranno analizzate nel dettaglio le singole operazioni, corredate di schema di navigazione.

4.2 - Operazioni di visualizzazione dei dati

Varie sono le operazioni di visualizzazione. Per queste, ovviamente, non sono previste modifiche o aggiornamenti dei dati. La quasi totalità di queste operazioni viene effettuata dalla figura dell' admin che, non rientrando tra i dipendenti, si occupa soltanto di visualizzare e tenere sotto controllo il database dell'acquario. Egli è infatti in grado di accedere alle informazioni riguardanti i magazzini e i prodotti, ed è anche colui che si occupa di effettuare ordini. Oltre a questi aspetti, è necessario tenere sotto controllo la struttura interna dell'acquario, spaziando quindi tra le vasche e gli animali in esse residenti, e soprattutto la gestione di esse: è per questo motivo possibile accedere alle informazioni riguardanti le pulizie effettuate e le alimentazioni agli animali, registrate opportunamente dai singoli custodi. Tutte le operazioni, che verranno studiate nel dettaglio in seguito, necessitano della scansione di diverse entità, a volte riportando valori, a volte elencando le varie istanze di interesse.

4.3-Operazioni di gestione degli ingressi e delle visite

Di questo tipo di operazioni,tutte scritture sul database, si occuperanno

esclusivamente le guide e gli istruttori. A loro è infatti riservato il compito di gestire gli ingressi e l'accesso agli spettacoli, preoccuppandosi di registrarne tutte le informazioni. Alla guida è lasciata la parte di registrazione degli ingressi, specificando se essi siano liberi o guidati ed eventualmente aggiungere la relativa partecipazione ad uno spettacolo; da qui in poi sarà invece compito dell'istruttore tenere il database aggiornato sugli spettacoli che si terranno e sugli animali che vi parteciperanno.

4.4-Operazioni di gestione dell'acquario

Di questa parte di operazioni si occupano invece principalmente guide e

medici.

La

gestione interna all'acquario consta di registrazioni di visite mediche e

di

pulizie e alimentazioni in specifiche vasche, operazioni di cui si devono

occupare di registrare per l'appunto i medici e i custodi; di questi ultimi è inoltre la responsabilità di aggiungere nuovi animali nell'acquario o

eventuali nuove vasche (le categorie rimangono invece fisse). Entrambi i dipendenti devono inoltre registrare gli acessi ai magazzini con le relative informazioni, ovvero il numero di prodotti ritirati, in quale data e a quale scopo. Nella gestione trova spazio inoltre la figura dell' admin per le operazioni

di inserimento di un nuovo prodotto in magazzino (registrandone ID,

nome, descrizione e produttore) e di registrazione di un ordine di vari prodotti effettuato ad un determinato fornitore.

CARICHI DI LAVORO

NOME

TIPO

VOLUME DI DATI

Dipendente

E

260

Ingresso

E

1000000

Spettacolo

E

600

Animale

E

6000

Vasca

E

270

Categoria_Vasca

E

20

Visita medica

E

144000

Ritiro

E

700000

Prodotto

E

200

Magazzino

E

2

Fornitore

E

10

Ordine

E

50

Pulizia

E

24300

Alimentazione

E

160000

Effettuazione

R

400000

Assiste

R

500000

Composizione

R

1800

Istruzione

R

1500

Permanenza

R

6000

Appartenenza

R

270

In_visita

R

144000

Fa_visita

R

144000

Ritiro_custode

R

450000

Ritiro_medico

R

250000

Prelievo

R

700000

Fornitura

R

400

Stock

R

200

Contenuto

R

1000

In_pulizia

R

24300

Fa_pulizia

R

48600

Alimenta

R

320000

Viene_alimentato

R

160000

5-IL PROGETTO LOGICO

Schemi di navigazione

Le funzionalità richieste al sistema sono, come scritto sopra:

1. Visualizzazione statistiche

2. Gestione degli ingressi

3. Gestione dell'acquario

Si individua ora, per ciascuna delle funzionalità e delle operazioni che lo compongono, lo schema di navigazione.

5.1.1-Visualizzare il numero di visite guidate effettuate in un anno

il numero di visite guidate effettuate in un anno L'operazione di visualizzazione delle visite guidate

L'operazione di visualizzazione delle visite guidate effettuate in un anno consiste semplicemente nel ricercare, partendo da “Ingresso”, gli ingressi guidati; successivamente, noto l'ID della guida, si ricercano tutte le effettuazioni relative ad esso e all'anno specificato, mostrando nome e cognome della guida, numero di persone partecipanti e le relative date di effettuazione.

5.1.2 -Visualizzare gli animali che hanno partecipato ad uno spettacolo

gli animali che hanno partecipato ad uno spettacolo L'operazione consiste nel selezionare lo spettacolo di

L'operazione consiste nel selezionare lo spettacolo di interesse, per poi ricercare nella relazione composizione tutti gli animali che ne hanno preso parte. In seguito è necessario effettuare una navigazione da composizione ad animale per estrarre tutti i dati di interesse dei partecipanti.

5.1.3-Visualizzare tutti gli animali che vivono in una vasca

5.1.3-Visualizzare tutti gli animali che vivono in una vasca L'operazione di visualizzazione degli animali che vivono

L'operazione di visualizzazione degli animali che vivono in una vasca consiste anzitutto nel ricercare la vasca di interesse. Per fare ciò, è necessario conoscere la categoria di appartenenza. La navigazione parte perciò da “Categoria_vasca”, per poi procedere sulla relazione appartenenza e sull'entità vasca. In seguito basta estrarre tutte le relazioni permanenza della suddetta vasca e, per ognuna di queste, reperire dal database tutti i dati dell'animale dall'entità corrispondente.

5.1.4-Visualizzare tutte le pulizie effettuate su una vasca in una certa data

tutte le pulizie effettuate su una vasca in una certa data Come nell'operazione precedente, per reperire

Come nell'operazione precedente, per reperire una vasca è necessario conoscerne la categoria di appartenenza. Reperita la vasca di interesse si naviga dalla vasca all'entità pulizia attraverso la relazione in pulizia. Ora attraverso l'entità pulizia si naviga verso la relazione “fa pulizia”, e poi da quest'ultima verso l'entità “Custode”, in modo da avere tutti i dati dei custodi che hanno pulito la vasca in questione in una determinata data, visualizzando inoltre i dati della pulizia.

5.1.5– Visualizzare tutte le alimentazioni effettuate su una vasca in una certa data

le alimentazioni effettuate su una vasca in una certa data Lo schema di navigazione per la

Lo schema di navigazione per la visualizzazione delle alimentazioni è del tutto analogo all'operazione precedente. Si parte infatti dalla categoria della vasca per identificare la vasca di interesse. Si naviga poi attraverso lo schema per recuperare tutte le alimentazioni della vasca in una determinata data. Dall'entità alimentazione si naviga verso l'entità custode per recuperarne tutti i dati di interesse.

5.1.6– Ritiri effettuati da un custode(o da un medico) in un mese

Ritiri effettuati da un custode(o da un medico) in un mese Lo schema di navigazione parte

Lo schema di navigazione parte dall'entità custode(o medico), e attraverso la relazione ritirocustode(o ritiromedico) accede a tutti i ritiri effettuati. In seguito è necessario filtrare i ritiri sul mese presente all'interno della data. Eseguito questo passo basta navigare da ritiro a prodotto mediante l'entità prelievo, per visualizzare tutti i prodotti prelevati in quel particolare ritiro e in quale quantità.

5.1.7 –Visualizzare le visite effettuate da un medico

5.1.7 –Visualizzare le visite effettuate da un medico L'operazione inizia dall'entità medico, da cui si devono

L'operazione inizia dall'entità medico, da cui si devono reperire i primi dati di interesse. Fatto ciò la navigazione continua verso l'entità visita medica attraverso la relazione “fa visita”. Questo serve a cercare nel database tutte le visite mediche appartenenti ad uno specifico medico. Reperite le visite mediche si procede all'identificazione degli animali visitati attraversando la relazione “in visita” per poi scandire le istanze dell'entità animale.

5.1.8– Determinare la quantità di un prodotto in magazzino.

Determinare la quantità di un prodotto in magazzino. Determinare la quantità di un prodotto in magazzino

Determinare la quantità di un prodotto in magazzino è molto semplice. Basta partire dall'entità “prodotto” per poi navigare verso la relazione “stock”; a questo punto basta reperire la quantità. Se si è interessati anche ai dati del magazzino che contiene il prodotto, basta continuare la navigazione verso l'omonima entità.

5.1.9– Visualizzare i dettagli di una fornitura

5.1.9– Visualizzare i dettagli di una fornitura Per analizzare il contenuto e i dati di una

Per analizzare il contenuto e i dati di una fornitura, bisogna partire dall'entità “ordine” e procedere in due direzioni. La prima permette di visualizzare i dati del fornitore al quale si è richiesto l'ordine: basta effettuare una navigazione da “ordine” a “fornitore” passando per la relazione “fornitura”. La seconda direzione riguarda il contenuto: si scandiscono tutte le istanze della relazione contenuto specifiche all'ordine di interesse per reperire sia la quantità che i dati dei prodotti ordinati.

5.2.1 - Aggiunta di un nuovo ingresso

5.2.1 - Aggiunta di un nuovo ingresso La registrazione dell'ingresso consta di due parti fondamentali: in

La registrazione dell'ingresso consta di due parti fondamentali: in primo luogo bisogna effettuare una scrittura sull'entità Ingresso, il quale poi andrà distinto tra guidato o libero. In secondo luogo bisogna reperire dal database la guida che effettuerà l'ingresso guidato, ed effettuare dunque una scrittura sull'entità effettuazione con i dati raccolti.

5.2.2 Aggiunta di un nuovo spettacolo

5.2.2 Aggiunta di un nuovo spettacolo Questa operazione è molto semplice e consta di una sola

Questa operazione è molto semplice e consta di una sola scrittura all'interno dell'entità spettacolo.

5.2.3 - Aggiunta di una partecipazione ad uno spettacolo

5.2.3 - Aggiunta di una partecipazione ad uno spettacolo L'operazione consta di una scrittura nella relazione

L'operazione consta di una scrittura nella relazione assiste. Sarà dunque necessario solamente reperire i dati dello spettacolo e dell'ingresso per poi effettuare l'inserimento.

5.3.1 - Aggiunta di un animale al database

5.3.1 - Aggiunta di un animale al database Anche in questo caso l'operazione costa di due

Anche in questo caso l'operazione costa di due operazioni. La prima tratta la scrittura di una nuova istanza dell'entità animale. In secondo luogo è necessario navigare all'interno dello schema partendo dall'entità categoria vasca per reperire la vasca di interesse in cui inserire il nuovo animale. In seguito dunque si termina l'operato aggiungendo una nuova istanza della relazione permanenza con i dati della vasca e del nuovo animale.

5.3.2 - Registrazione di una visita ad un animale

5.3.2 - Registrazione di una visita ad un animale L'operazione in questo caso consiste nella registrazione

L'operazione in questo caso consiste nella registrazione di una nuova istanza dell'entità Visita medica utilizzando i dati reperiti dalle entità Animale e Medico, come si evince dallo schema di navigazione.

5.3.3– Alimentazione di una vasca

5.3.3– Alimentazione di una vasca Per registrare l'avvenuta alimentazione di una vasca, si raccolgono innanzitutto i

Per registrare l'avvenuta alimentazione di una vasca, si raccolgono innanzitutto i dati relativi alla vasca d'interesse e ai custodi che hanno partecipato, dopodiché si procede con l'inserire la data e la descrizione dell'alimentazione, registrando tutto attraverso la relazione alimenta.

5.3.4-Pulizia di una vasca

5.3.4-Pulizia di una vasca Analoga all'alimentazione è l'operazione di pulizia. L'unica differenza sta nel

Analoga all'alimentazione è l'operazione di pulizia. L'unica differenza sta nel fatto che quest'ultima viene identificata dalla data in cui è stata effettuata e la vasca interessata, questo per garantire il vincolo che una pulizia ad una vasca sia portata a termine soltanto una volta al giorno.

5.3.5– Registrazione di un ritiro di un prodotto

5.3.5– Registrazione di un ritiro di un prodotto Ogni medico (e, analogamente, ogni custode) è tenuto

Ogni medico (e, analogamente, ogni custode) è tenuto a registrare un ritiro di prodotti dal magazzino. Ogni ritiro è identificato da un codice progressivo ed univoco all'interno dell'acquario, e di esso vanno registrati anche la descrizione e la data. Raccolte le informazioni sul ritiro e sul prodotto (o sui prodotti) che si vogliono prendere, vanno registrate sia la quantità (che si trova nella relazione “Prelievo” e di essa si intende per ogni singolo prodotto presente all'interno del ritiro) che le informazioni sul “ritiromedico” (in egual modo per “ritirocustode”), ovvero le informazioni necessarie per identificare il dipendente che ha effettuato l'accesso al magazzino.

5.3.6- Inserimento di un nuovo prodotto

5.3.6- Inserimento di un nuovo prodotto L'inserimento di un nuovo prodotto in magazzino è un'operazione

L'inserimento di un nuovo prodotto in magazzino è un'operazione esclusivamente lasciata all'admin. Essa non presenta particolari difficoltà: inseriti i dati del prodotto, è sufficiente scegliere in quale magazzino inserirlo ( e da questo momento, ogni ordine di quello specifico prodotto inserirà la nuova fornitura in quel magazzino), reperire i dati di quest'ultimo e successivamente inserire l'eventuale quantità presente; se non specificata, la quantità presente verrà posta a zero.

5.3.7– Registrazione di una fornitura

5.3.7– Registrazione di una fornitura Anche questa operazione può essere effettuata soltanto dall'admin e riguarda

Anche questa operazione può essere effettuata soltanto dall'admin e riguarda l'evasione di un nuovo ordine per rifornire il magazzino di determinati prodotti. Innanzitutto, si ottengono i dati inseriti dall'admin e riguardanti l'ordine da effettuare, ovvero la data e la descrizione (anche in questo caso, l'ID è calcolato in modo incrementale). Dopodiché, si passa ad indicare le informazioni sui prodotti da inserire nell'ordine e successivamente va specificata la quantità di ciascuno di essi per inserirla nel contenuto dell'ordine. L'ultimo passo consiste nel registrare la fornitura, salvando tutti i dati descritti sopra e aggiungendo quelli relativi al fornitore presso cui si è effettuato l'ordine.

5.3.8 – Registrazione di un assegnamento di istruttore

5.3.8 – Registrazione di un assegnamento di istruttore Questa operazione, che si tratta di un semplice

Questa operazione, che si tratta di un semplice inserimento, consiste nel reperire i dati dell'istruttore o istruttori di interesse e successivamente quelli degli animali (o anche un singolo animale) che sono stati assegnati all'allenatore per seguirli e istruirli.

Tabella degli accessi

Operazione

Concetto

E/R

Lett./Scritt.

Numero

Totale accesi

accessi

Numero di visite effettuate in un anno da una guida

Guida

E

L

1

20

Effettuazione

R

L

20'000

400'000

         

(20/anno)

Guidata

E

L

20'000

400'000

Visualizzare

Spettacolo

E

L

1

2

gli animali

Composizione

       

che hanno

partecipato ad

R

L

3

6

Animale

       

uno

 

E

L

3

6

spettacolo(2/gi

orno)

Visualizzare gli animali che vivono in

Vasca

E

L

1

6

Appartenenza

R

L

1

6

una

Categoria_Vas

E

L

1

6

vasca(6/giorno

ca

)

Permanenza

R

L

22

132

Animale

E

L

22

132

Visualizzare le pulizie effettuate ad una vasca in

Vasca

E

L

1

270

In_pulizia

R

L

1

270

Pulizia

E

L

1

270

un determinato

Fa_pulizia

R

L

2

540

         

giorno

Custode

E

L

2

540

(270/settiman

a)

Visualizzare

Vasca

E

L

1

270

le alimentazioni effettuate ad una vasca in un determinato giorno

(270/settiman

VieneAliment

R

L

2

540

ata

Alimentazione

E

L

2

540

Alimenta

R

L

6

1620

Custode

E

L

6

1620

a)

Visualizzare i ritiri effettuati da un medico in un

Medico

E

L

1

12

Ritiro_medico

R

L

6

72

Ritiro

E

L

6

72

Prelievo

R

L

6

72

mese(12/anno)

Prodotto

E

L

6

72

Visualizzare i ritiri effettuati da un custode in un mese

Custode

 

E

L

1

12

Ritiro_custode

 

R

L

10

120

Ritiro

 

E

L

10

120

Prelievo

 

R

L

10

120

 

(12/anno)

Prodotto

 

E

L

10

12

Visualizzare

Medico

E

L

1

2

le visite fatte

Fa_visita

 

R

L

8

16

da

un medico

(2/settimana)

Visita_Medica

E

L

8

16

In_visita

R

L

8

16

Animale

E

L

8

16

Visualizzare la quantità di un prodotto in magazzino

Prodotto

E

L

1

1

Stock

R

L

1

1

         
 

(1/mese)

Magazzino

E

L

1

1

Visualizzare i

Ordine

E

L

1

4

dettagli di

Contenuto

R

L

4

16

 

una

         

fornitura(4/me

Prodotto

E

L

4

16

 

se)

Fornitura

R

L

1

4

 

Fornitore

E

L

1

4

Aggiunta di

Ingresso

E

S

1

2740

 

un nuovo

ingresso(2740/

 

giorno)

Aggiunta di

Spettacolo

E

S

1

2

 

un nuovo

Composizione

 

R

S

   

spettacolo

3

6

(2/giorno)

Animale

E

L

3

6

Registrazione

Spettacolo

E

L

1

900

 

di

una

partecipazione

Ingresso

E

L

1

900

 

ad

uno

spettacolo(900

Assiste

R

S

1

900

 

/giorno)

Aggiunta di

Animale

E

S

1

3

 

un nuovo

Permanenza

 

R

S

1

3

animale(3/ann

o)

Vasca

E

L

13

39

Appartenenza

R

L

13

39

Categoria_Vasc

E

L

20

60

a

Registrazione

Medico

E

L

1

160

di

una visita

Fa_visita

R

S

1

160

 

ad un

Visita_Medica

E

S

1

160

animale(160/g

In_visita

R

S

1

160

 

iorno)

 

Animale

E

L

1

160

Registrazione

Vasca

E

L

1

2

 

di

VieneAlimentat

R

S

1

2

un'alimentazi

one presso

o

       
         
 

una

Alimentazione

E

S

1

2

vasca(2/giorno

Alimenta

R

S

3

6

 

)

Custode

E

L

3

6

Registrazione

Vasca

E

L

1

1

di

una pulizia

InPulizia

R

S

1

1

presso una

         

vasca(1/settim

Pulizia

E

S

1

1

 

ana)

FaPulizia

R

S

2

2

 

Custode

E

L

2

2

Registrazione

Custode/Medico

E

L

1

250

di

un ritiro di

RitiroCustode/

RitiroMedico

R

S

1

250

prodotti(250/g

iorno)

Ritiro

E

S

1

250

Prelievo

R

S

2

500

Prodotto

E

L

2

500

Stock

R

L

2

500

Magazzino

E

L

2

500

Registrazione di

Istruttore

E

L

2

4

un

         

assegnamento di

Istruzione

R

S

2

4

istruttore(2/mes

Animale

E

L

1

2

e)

5.4– Trasformazioni dello schema concettuale

Prima di effettuare la traduzione in tabelle del database, abbiamo effettuato alcune trasformazioni dello schema concettuale; in particolare, ci siamo occupati di scegliere le chiavi primarie e di eliminare tutte quelle caratteristiche che non sono supportate dallo schema logico.

5.4.1-Scelta delle chiavi primarie

La scelta delle chiavi primarie è banale in quanto quasi ogni entità viene identificata dal proprio codice identificativo. Fanno eccezione l'entità “Pulizia” identificata dalla propria data e dalla vasca a cui si riferisce, poiché ogni vasca non viene pulita più di una volta nello stesso giorno; l'entità “Visita_Medica” che viene identificata esternamente dal medico, dall'animale e dalla data perché si suppone che un medico non visiti lo stesso due volte in uno stesso giorno; l'ingresso che viene identificato dal numero e dalla data, poiché si suppone che ogni giorno i numeri di ingresso vengano azzerati; il fornitore che è identificato dal proprio nome e la vasca che è identificata dal proprio numero e dalla categoria di appartenenza, poiché ogni numero di vasca è univoco soltanto all'interno della propria categoria.

5.4.2-Eliminazione delle gerarchie

Nel nostro schema sono presenti due gerarchie:

Quella riguardante l'entità Account

Quella riguardante l'entità Ingresso

Per quanto riguarda la prima, si è scelto di effettuare un collasso verso il basso poiché, sebbene nessuna delle specificazioni aggiunga alcun attributo, ciò rende più semplice la gestione delle operazioni, in particolare per quelle entità che hanno diverse relazioni. Per la seconda invece si è preferito optare per un collasso verso l'alto, inserendo un attributo “Stringa di due caratteri” con nome “Tipo” per individuare di quale specializzazione si sta parlando.

5.5-Progetto logico per il modello relazionale

5.5.1-Traduzione delle entità

Guida (ID,Password,Nome,Cognome,CF)

Unique CF

Medico (ID,Password,Nome,Cognome,CF)

Unique CF

Admin (ID,Password,Nome,Cognome,CF)

Unique CF

Custode (ID,Password,Nome,Cognome,CF)

Unique CF

Istruttore (ID,Password,Nome,Cognome,CF)

Unique CF

Ingresso (NumeroIngresso,Data,Prezzo,NumeroPersone,Tipo)

Spettacolo(IDSpettacolo,Data,Orario,Nome)

Animale(IDAnimale,Nome,Provenienza)

Categoria_Vasca (Nome,Descrizione)

Vasca (NumeroVasca,NomeCategoriaVasca,Descrizione)

FK NomeCategoriaVasca references Categoria_Vasca In questa relazione è stata inglobata l'associazione "Appartenenza".

Alimentazione

(CodiceAlimentazione,Data,Descrizione,NumeroVasca,NomeCategor

iaVasca)

FK (NumeroVasca,NomeCategoriaVasca) references Vasca In questa relazione è stata inglobata l'associazione "VieneAlimentata".

Pulizia (Data,NumeroVasca,NomeCategoriaVasca,Descrizione)

FK NumeroVasca,NomeCategoriaVasca references Vasca In questa relazione è stata inglobata l'associazione "In_Pulizia".

Visita_Medica (IDMedico,IDAnimale,Data,Esito)

FK IDMedico references Medico FK IDAnimale references Animale In questa relazione sono state inglobate le associazioni "In_visita" e "FaVisita"

Ritiro (CodiceRitiro,DescrizioneRitiro,DataRitiro)

Prodotto

(CodiceProdotto,NomeProdotto,Produttore,Descrizione,Magazzino,

Quantità)

FK Magazzino references Magazzino In questa relazione è stata inglobata l'associazione "Stock".

Magazzino (IDMagazzino,Indirizzo,Telefono)

Ordine (IDOrdine,Fornitore,Data,DescrizioneOrdine)

FK Fornitore references Fornitore In questa relazione è stata inglobata l'associazione "Fornitura".

Fornitore(Nome,Indirizzo,Telefono)

5.5.2-Traduzione delle associazioni

La traduzione delle relazioni che proponiamo qui di seguito non modifica in alcun modo le relazioni già introdotte per la traduzione delle entità. Infatti nel capitolo precedente eventuali inglobamenti di relazioni sono già stati presi in considerazione e inseriti. Procediamo dunque a mostrare un'analisi per la traduzione delle associazioni.

Effettuazione(NumeroIngresso,Data,IDGuida)

FK (NumeroIngresso,Data) references Ingresso FK IDGuida references Guida

Assiste(NumeroIngresso,Data,IDSpettacolo)

FK (NumeroIngresso,Data) references Ingresso FK IDSpettacolo references Spettacolo

Composizione(IDAnimale, Idspettacolo)

FK IDAnimale references Animale FK IDSpettacolo references Spettacolo

Permanenza (IDAnimale,NumeroVasca,NomeCategoriaVasca)

FK IDAnimale references Animale FK (NumeroVasca,NomeCateogoriaVasca) references Vasca

Istruzione(IDIstruttore,IDAnimale)

FK IDAnimale references Animale FK IDIstruttore references Istruttore

Fa_Pulizia(IDCustode,Data,NumeroVasca,NomeCateogoriaVasca)

FK IDCustode references Custode FK (Data, NumeroVasca,NomeCategoriaVasca) references Pulizia

Alimenta(IDCustode,CodiceAlimentazione)

FK IDCustode references Custode FK CodiceAlimentazione references Alimentazione

RitiroCustode(CodiceRitiro,IDCustode)

FK CodiceRitiro references Ritiro FK IDCustode references Custode

Le associazioni Ritiro Custode e Ritiro Medico non sono state inglobate all'interno dell'entità ritiro poichè ciò avrebbe causato due difficoltà : la prima è lo spreco di spazio, poichè ogni tupla avrebbe avuto obbligatoriamente un valore nullo: infatti, un ritiro è associato in modo esclusivo o a un medico, o a un custode. La seconda è un uno spreco di risorse al momento della ricerca dei ritiri di un medico o di un custode: per selezionare i ritiri effettuati dai medici bisognerebbe controllare anche le tuple che si riferiscono ai custodi. Per queste ragioni abbiamo deciso di mantenere le associazioni.

RitiroMedico(CodiceRitiro,IDMedico)

FK CodiceRitiro references Ritiro FK IDMedico references Medico

Prelievo(CodiceProdotto,CodiceRitiro,Quantità)

FK CodiceProdotto references Prodotto FK CodiceRitiro references Ritiro

Contenuto(IDOrdine,Prodotto,Quantità)

FK IDOrdine references Ordine FK Prodotto references Prodotto

5.5.3 – Normalizzazione delle tabelle

Durante la traduzione in tabelle del nostro schema, abbiamo affrontato anche la normalizzazione in BC-NF. In realtà, la correzione è stata effettuata soltanto per una tabella in quanto le restanti erano già nella normal-form desiderata. Questa è la tabella "Ingresso", dove è presente la seguente dipendenza transitiva:

NumeroIngresso, Data ---> NumeroPersone,Tipo,Prezzo

NumeroPersone, Tipo---> Prezzo

È stato quindi necessario spezzare la dipendenza creando due tabelle:

Ingresso(NumeroIngresso,Data,NumeroPersone,Tipo) FK (NumeroPersone,Tipo) references Prezzi

Prezzi(NumeroPersone,Tipo,Prezzo)

In questo modo è stata eliminata la dipendenza e ci si è ricondotti alla BC- NF. La scomposizione è loss-less poichè il join tra le due tabelle viene effettuato su una chiave primaria.

5.5.4-Creazione delle view

Per la creazione del nostro database, è stato necessario l'inserimento di tre view per una maggiore facilità nella scrittura e nell'esecuzione delle query. Nel dettaglio, le tre viste create sono:

CREATE VIEW `listaritirocustode` AS select rc.IDCustode AS IDCustode, r.CodiceRitiro AS CodiceRitiro, r.DescrizioneRitiro AS DescrizioneRitiro, r.DataRitiro AS `DataRitiro from (ritirocustode rc join ritiro r ON ((rc.CodiceRitiro = r.CodiceRitiro)))

CREATE VIEW listaritiromedico AS select rm.IDMedico AS IDMedico, r.CodiceRitiro AS CodiceRitiro, r.DescrizioneRitiro AS DescrizioneRitiro, r.DataRitiro`AS DataRitiro from (ritiromedico rm join ritiro r ON ((rm.CodiceRitiro = r.CodiceRitiro)))

CREATE VIEW ritiroprodotti AS select p.NomeProdotto AS NomeProdotto, pr.CodiceRitiro AS CodiceRitiro, pr.Quantita AS Quantita from (prodotto p join prelievo pr ON ((p.CodiceProdotto = pr.CodiceProdotto)))

Tutte e tre le view vengono utilizzate nella query di visualizzazione dei prodotti ritirati da un medico (e analogamente, da un custode), come si potrà vedere nel prossimo capitolo. La query si presenta piuttosto complessa in quanto coinvolge cinque tabelle; con l'introduzione delle viste è stato possibile eliminare join aggiuntivi che avrebbero complicato la scrittura e la comprensione della query.

5.6- Traduzione delle operazioni in query SQL

5.6.2– Query di visualizzazione

operazioni in query SQL 5.6.2– Query di visualizzazione • Numero di visite effettuate da una guida

Numero di visite effettuate da una guida in un anno

select i.Numeropersone, T.Nome, T.Cognome, T.NumeroIngresso, T.Data_ing from ingresso i, (select g.Nome, g.Cognome,e.NumeroIngresso,e.Data_ing from effettuazione e join guida g on (g.ID = e.ID_guida) where g.ID = idInserted) as T where i.NumeroIngresso = T.NumeroIngresso and i.Data_ing = T.Data_ing and i.Data_ing like 'insertedYear-%-%' and i.tipo = 'GU'

like 'insertedYear-%-%' and i.tipo = 'GU' • Animali che hanno partecipato ad uno spettacolo select

Animali che hanno partecipato ad uno spettacolo

select a.IDAnimale,Nome,Provenienza from animale a,composizione c where a.IDAnimale = c.IDAnimale and c.IDSpettacolo = idInserted

Animali che vivono in una vasca

select a.IDAnimale, Nome, Provenienza from animale a, permanenza p where p.NomeCategoriaVasca = ChosenCategory and p.NumeroVasca = ChosenNumber

= ChosenCategory and p.NumeroVasca = ChosenNumber • Pulizie effettuate in una vasca select

Pulizie effettuate in una vasca

select Nome,Cognome,Data_pulizia,NumeroVasca,NomeCategoriaVasca,D escrizione from custode c, (select IDCustode, p.Data_pulizia, p.NumeroVasca, p.NomeCategoriaVasca,Descrizione from pulizia p join fa_pulizia f on (p.NumeroVasca = f.NumeroVasca and p.NomeCategoriaVasca = f.NomeCategoriaVasca and p.Data_pulizia = f.Data_pulizia

and p.Data_pulizia = InstertedData) where p.NumeroVasca = chosenNumber and p.NomeCategoriaVasca = chosenCategory) as pul where c.IDCustode = pul.IDCustode

chosenCategory) as pul where c.IDCustode = pul.IDCustode • Alimentazioni effettuate in una vasca select

Alimentazioni effettuate in una vasca

select Nome,Cognome,Data_alimentazione,NumeroVasca,NomeCategoriaV asca,Descrizione from custode c, (select IDCustode, p.Data_alimentazione, p.NumeroVasca, p.NomeCategoriaVasca,Descrizione from alimentazione a join alimenta al on (a.NumeroVasca = al.NumeroVasca and a.NomeCategoriaVasca = al.NomeCategoriaVasca and a.Data_pulizia = al.Data_pulizia and a.Data_pulizia = InstertedData) where a.NumeroVasca = chosenNumber and a.NomeCategoriaVasca = chosenCategory) as cust_al where c.IDCustode = cust_al.IDCustode

as cust_al where c.IDCustode = cust_al.IDCustode • Visualizzare i ritiri effettuati da un custode/medico

Visualizzare i ritiri effettuati da un custode/medico in un mese

select cu.Nome, cu.Cognome, C.NomeProdotto, C.quantita, C.DataRitiro, C.DescrizioneRitiro from custode cu, (select l.IDCustode, r.NomeProdotto, r.Quantita, l.DataRitiro, l.DescrizioneRitiro from listaritirocustode l join ritiroprodotti r on (r.CodiceRitiro = l.CodiceRitiro) where l.DataRitiro like '%-selectedMonth-%' ) as C where cu.IDCustode = C.IDCustode and cu.IDCustode = insertedID;

N.B: la query per la visualizzazione dei ritiri effettuati da un medico è del tutto analoga a questa, perciò è stata omessa.

• Visualizzare le visite fatte da un medico select m.Nome, m.Cognome,NomeAnimale as Animale, Data_visita as

Visualizzare le visite fatte da un medico

select m.Nome, m.Cognome,NomeAnimale as Animale, Data_visita as Data,Esito from medico m, (select IDMedico,Nome as NomeAnimale,Data_visita,Esito from visita_medica vm join animale a on (vm.IDAnimale = a.IDAnimale)) as V where m.IDMedico = V.IDMedico and m.IDMedico = idInserted

where m.IDMedico = V.IDMedico and m.IDMedico = idInserted • Visualizzare la quantità presente di un prodotto

Visualizzare la quantità presente di un prodotto in magazzino

select NomeProdotto as Nome, Descrizione,Produttore,Magazzino,Quantità from prodotto where CodiceProdotto = insertedID

from prodotto where CodiceProdotto = insertedID • Visualizzare i dettagli di una fornitura select

Visualizzare i dettagli di una fornitura

select NomeProdotto,o.Descrizione,Data_ordine,Quantità from ordine o, (select NomeProdotto,p.Descrizione,IDOrdine, c.Quantita as Quantità from prodotto p join contenuto c on (p.CodiceProdotto = c.Prodotto and c.IDOrdine = insertedID) ) as pp where o.IDOrdine = pp.IDOrdine

5.6.3-Query di gestione degli ingressi e degli spettacoli

Aggiunta di un nuovo ingresso

e degli spettacoli • Aggiunta di un nuovo ingresso insert into ingresso values (EntranceNum, insertedDate

insert into ingresso values (EntranceNum, insertedDate ,PeopleNumber, TypeInserted)

Nel caso in cui "TypeInserted" fosse "Guidato" si procede con la registrazione di una effettuazione:

insert into effettuazione values (EntranceNum, insertedDate, GuideID)

effettuazione values (EntranceNum, insertedDate, GuideID) • Aggiunta di uno spettacolo insert into spettacolo

Aggiunta di uno spettacolo

insert into spettacolo values(ShowID, insertedDate, insertedHour,insertedName)

Poi, per aggiungere gli animali:

insert into composizione values(AnimalID,ShowID)

animali: insert into composizione values (AnimalID,ShowID) • Aggiunta di una partecipazione ad uno spettacolo insert

Aggiunta di una partecipazione ad uno spettacolo

insert into assiste values ( EntranceNum , InsertedDate, ShowID)

5.6.4– Query di gestione dell'acquario

5.6.4– Query di gestione dell'acquario • Aggiunta di un nuovo animale insert into animale values

Aggiunta di un nuovo animale

insert into animale values(AnimalID,InsertedName,InsertedOrigin)

insert into permanenza values(AnimalID,PoolNumber,PoolCategory)

into permanenza values (AnimalID,PoolNumber,PoolCategory) • Aggiunta di una visita ad un animale insert into

Aggiunta di una visita ad un animale

insert into visita_medica values (MedicalID , AnimalID , InsertedDate , InsertedResult )

(MedicalID , AnimalID , InsertedDate , InsertedResult ) • Registrazione di un'alimentazione presso una vasca

Registrazione di un'alimentazione presso una vasca

insert into alimentazione values(AlimentationID,DateInsterted,PoolNum, PoolCategory,Description)

insert into alimenta values (GuardianID,AlimentationID)

insert into alimenta values (GuardianID,AlimentationID) • Registrazione di una pulizia ad una vasca insert into

Registrazione di una pulizia ad una vasca

insert into pulizia values(InsertedDate,PoolNum,PoolCategory,Description)

insert into fa_pulizia values(GuardianID,InsertedDate,PoolNum, PoolCategory)

Registrazione di un ritiro di un prodotto

• Registrazione di un ritiro di un prodotto insert into ritiro values (registrationID, Description ,InsertedDate )

insert into ritiro values (registrationID, Description ,InsertedDate )

insert into ritirocustode values (+ registrationID,GuardianID)

insert into prelievo values (ProductID , registrationID, Quantity)

update prodotto set Quantità = OldQuantity - Quantity where CodiceProdotto = ProductID

= OldQuantity - Quantity where CodiceProdotto = ProductID • Inserimento di un nuovo prodotto insert into

Inserimento di un nuovo prodotto

insert into prodotto values (ProductID, ProductName, Description,

Producer,WarehouseNum,0)

ProductName, Description, Producer,WarehouseNum,0) • Registrazione di una fornitura insert into ordine

Registrazione di una fornitura

insert into ordine values (OrderID, SupplierID,InsertedDate, Description)

insert into contenuto values (OrderID, ProductID , Quantity)

update prodotto set Quantità = OldQuantity + Quantity where CodiceProdotto = ProductID

= OldQuantity + Quantity where CodiceProdotto = ProductID • Registrazione di un'assegnazione insert into

Registrazione di un'assegnazione

insert into istruzione values (TrainerID,AnimalID)

6 - L'interfaccia utente

Di seguito si presenta l'interfaccia utente, analizzando brevemente la

vista di ogni account.

6.1- Login

analizzando brevemente la vista di ogni account. 6.1- Login La schermata di login consiste semplicemente

La schermata di login consiste semplicemente nell'inserire il proprio ID e

la propria password per poi selezionare il ruolo. Se i dati inseriti sono

corretti, verrà richiamata ed aperta la schermata corrispondente alla propria mansione.

6.2- Admin

6.2- Admin La view dell'admin si presenta composta di nove tab, corrispondenti a nove diverse query.

La view dell'admin si presenta composta di nove tab, corrispondenti a nove diverse query.

Show Tab permette di visualizzare gli animali presenti ad un determinato spettacolo e il numero di persone partecipanti.

Pool Tab permette di visualizzare gli animali che risiedono in una specifica vasca

Clean&Feed è la tab che consente di visualizzare i dettagli di una pulizia/alimentazione presso una vasca, ovvero da chi è stata effettuata e la descrizione dell'operazione

Medical Visits permette di visualizzare i dettagli delle visite effettuate da un medico

La tab Product Stock mostra le informazioni e la quantità di un prodotto in magazzino

Furnitures Details permette di visualizzare i dettagli di una fornitura

Check Collected Product permette di visualizzare i dettagli dei ritiri effettuati in un mese da un custode o medico

Furnitures è la tab che permette di richiedere una fornitura

Register New Product permette di inserire un nuovo prodotto in magazzino

6.3-Guida

6.3-Guida In questa view, la guida è in grado di : • Registrare un ingresso, registrare

In questa view, la guida è in grado di :

Registrare un ingresso, registrare l'eventuale visita guidata inserendo l'id di chi l'ha effettuata e aggiungere eventualmente la partecipazione ad uno show tramite la tab "Add an entrance"

Controllare tutte le visite guidate effettuate da una specifica guida in un anno tramite la tab "Check guided entrances"

6.4-Custode

6.4-Custode La view dedicata al custode si presenta come segue: • Animal tab, utilizzata per aggiungere

La view dedicata al custode si presenta come segue:

Animal tab, utilizzata per aggiungere un nuovo animale all'acquario specificandone le informazioni necessarie (l'ID da inserire è calcolato progressivamente a partire da quelli già presenti)

Pool Alimentation, per registrare l'avvenuta alimentazione presso una vasca

Add Pool, utilizzata per aggiungere una nuova vasca all'acquario

Cleaning Tab, per registrare l'avvenuta pulizia presso una vasca

Collect product, per registrare il ritiro di un prodotto(o più prodotti) dai magazzini

6.5– Medico

6.5– Medico Le operazioni che un account di tipo "Medico" può fare sono due: • Registrare

Le operazioni che un account di tipo "Medico" può fare sono due:

Registrare la visita medica effettuata, tramite la tab "Register your medical visit"

Registrare il ritiro di un prodotto(o più prodotti) presso un magazzino tramite la tab "Register your collection"

6.6– Istruttore

6.6– Istruttore La view dedicata all'istruttore consta di due moduli: • Il primo permette creare un

La view dedicata all'istruttore consta di due moduli:

Il primo permette creare un nuovo spettacolo e inserirlo all'interno del database

Il secondo permette di registrare l'assegnamento di un animale a uno o più istruttori per l'allenamento