Sequenza Selezione Iterazione Funzioni Ricorsione Operat. su interi Stringhe Vettori Array
Tabelle File Liste Alberi Esami Maturità Preparazione esami Database Macchina di Turing Automi
Algebra Geometria Giochi            

Esercizi sui Database

 

1

Si progetti un sistema informativo per una società che gestisce appartamenti in multiproprietà.
Il sistema deve gestire il patrimonio immobiliare della società, la vendita dei pacchetti di multiproprietà ai clienti e le richieste di scambi fra proprietari.
Il patrimonio immobiliare consta di insiemi di appartamenti raggruppati in insediamenti turistici. Ogni appartamento è caratterizzato da un identificatore univoco, all'interno dell'insediamento, da un livello di qualità (lusso, medio, spartano) e dal numero di posti letto. Un insediamento turistico è caratterizzato dalla località, l'indirizzo, il numero di appartamenti, il periodo di apertura (tutto l'anno, oppure stagioni particolari) e una breve descrizione delle attrazioni - naturali e non - offerte.
La società offre ai clienti l'acquisto di settimane (una o più) di soggiorno presso un appartamento di una determinata località. Ogni settimana di soggiorno ha un prezzo proporzionale alla località ed al periodo scelto: l'alta stagione costa di più rispetto agli altri periodi dell'anno. Al fine di concludere un contratto d'acquisto, si deve verificare la disponibilità di un appartamento nell'insediamento turistico richiesto e nella settimana desiderata. Al contrario, quando un cliente decide di vendere la propria settimana di soggiorno, la società deve prendere atto della volontà di vendere e del prezzo chiesto, e deve aggiungere la settimana in vendita fra quelle da vendere, al prezzo richiesto e non a quello della società.
Un cliente, una volta acquisito il diritto di soggiorno in un appartamento per una determinata settimana, può inoltrare una richiesta per permutare la sua settimana con quella di un altro cliente, specificando l'insieme di località e di settimane di gradimento. Nel caso non si dovesse trovare nessuna "nuova settimana" in grado di soddisfare le richieste, l'offerta di scambio resta valida fino a trenta giorni prima dall'inizio del soggiorno effettivamente acquistato.
Un cliente può, anche, decidere di affittare la propria settimana, inoltrando richiesta e canone d'affitto. La società deve compilare una lista di settimane "affittabili" e renderla disponibile alla clientela.
E' richiesto il diagramma di contesto, un numero adeguato di diagrammi di flusso dei dati, per rappresentare il problema ad un livello d'astrazione adeguato, le viste e lo schema entità-relazione integrato.
 

2

Si progetti un sistema informativo per una società di autonoleggio.
Il sistema deve gestire le auto in possesso della società, e quindi affittabili dai clienti, la possibilità di fare prenotazioni telefoniche e la possibilità di "noleggi diretti", cioè clienti che si presentano direttamente nei terminali della società e richiedono il noleggio di un'auto.
Il patrimonio "auto" consta di un insieme di autoveicoli, caratterizzati dal numero di targa, il nome della vettura, la classe di appartenenza e gli optional disponibili (ad esempio, aria condizionata). Ogni macchina deve essere localizzabile in un particolare terminale della società. Questo per poter assegnare ad ogni cliente la macchina più vicina che soddisfa le richieste fatte.
I clienti possono prenotare l'auto telefonicamente, specificando il modello o la classe di vettura, gli optional richiesti e il periodo di noleggio. Si tenga conto del fatto che il periodo richiesto potrebbe variare rispetto a quello reale. Un cliente potrebbe presentarsi in ritardo o tenere la macchina per qualche giorno in più. Il numero effettivo di giorni di noleggio è l'informazione necessaria per poter emettere la fattura, una volta che la macchina è stata restituita.
Se, invece, un cliente si presenta direttamente ad un punto di noleggio, è costretto a scegliere fra le macchine a disposizione, senza poter fare richieste particolari. Anche in questo caso, il periodo di noleggio dichiarato potrebbe differire rispetto al periodo reale.
Il sistema deve, anche, periodicamente controllare le macchine noleggiate e inviare un messaggio di sollecito a tutti i clienti che sono in ritardo di più di una settimana nella riconsegna della macchina.
E' richiesto lo use case diagram, il class diagram e un insieme di iteraction diagram per spiegare le interazioni fra oggetti più complesse.
 

3

Si progetti un sistema informativo per gestire gli obiettori di coscienza in servizio presso un ente convenzionato con il Ministero della Difesa.
Il sistema deve gestire l'anagrafica degli obiettori (nome, cognome, data di nascita e indirizzo), il loro titolo di studio, le esperienze lavorative pregresse e la loro posizione: domanda presentata, domanda accettata, in attesa di servizio, in servizio e servizio completato.
Il sistema gestisce anche le diverse attività svolte dall'ente. Combinando le attività "scoperte" con le capacità degli obiettori in servizio, ci si propone di ottimizzare l'assegnazione degli obiettori alle diverse mansioni e, quindi, di migliorare la qualità dei servizi offerti.
L'ente in questione mette a disposizione degli appartamenti per fornire vitto e alloggio durante l'obiezione. Il sistema, quindi, deve tenere traccia degli appartamenti disponibili, della disposizione deglio obiettori nei diversi appartamenti e di eventuali posti liberi.
Per gli obiettori in servizio, il sistema deve gestire anche le licenze (supponiamo per un totale di 20 giorni) e i permessi (al massimo 10).
Ogni mese, il sistema deve:

  • calcolare automaticamente gli stipendi, in base ai giorni di servizio effettivo (giorni del mese meno licenze e permessi);

  • definire i rimborsi per il vitto e alloggio, in base alle informazioni relative ai diversi appartamenti;

  • produrre la documentazione riassuntiva da inviare al distretto.

Il sistema deve anche fornire la lista degli obiettori in servizio e la lista degli obiettori in attesa (sia tutti quelli in attesa, che solamente quelli che hanno fatto domanda in un mese preciso).
Lo studente rappresenti il sistema con le notazioni che ritiene più opportune e, in base alla notazione scelta, fornisca un numero di modelli sufficienti per definire le diverse attività.
 

4

Si progetti un sistema informativo per la gestione di un supermercato.
Il sistema deve gestire il magazzino. Questo significa tenere traccia della merce effettivamente in magazzino e di quella sugli scaffali. Quando il quantitativo di un determinato prodotto diventa minore di una certa soglia, si deve prevedere un meccanismo di approvvigionamento semiautomatico. Il sistema deve segnalare i prodotti che sono in via di esaurimento e suggerire, secondo politiche predefinite, la quantità da acquistare.
Il sistema deve gestire anche le casse. Attraverso lettori di codici a barre, deve riconoscere la merce in uscita. Questa ovviamente è una condizione necessaria per poter completare il passo precedente. Il sistema deve registrare tutti gli acquisti effettuati, al fine di riconoscere profili utente specifici, ed essere in grado di fare promozioni mirate alle diverse classi d'utenti. Tutte le promozioni devono essere registrate dal sistema.
Oltre al normale scontrino, il supermercato emette anche tessere a punti. Un punto corrisponde a 5,16 Euro (10.000 lire) di spesa. Il sistema deve gestire e registrare tutte le tessere emesse. Quando un cliente si presenta alla cassa e presenta la tessera, il sistema deve aggiornare la situazione e registrarla sia sulla tessera del cliente, che nel sistema centrale. Il sistema deve, anche, avvisare il cliente che si presenta alla cassa se i punti totalizzati fino a quel momento gli danno diritto a premi o sconti particolari.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

5

Si progetti un sistema informativo per la gestione di un "negozio virtuale" di libri.
Il sistema deve gestire i clienti. Attenzione che le informazioni richieste riguardano solamente i clienti che richiedono l'acquisto di un libro, non si deve gestire l'anagrafica di qualsiasi persona che acceda al sito del negozio solamente per consultazione. Oltre ai dati anagrafici veri e propri, si devono richiedere le modalità di pagamento.
Ovviamente deve essere noto il magazzino libri, cioè tutti i titoli a disposizione, le diverse edizioni (ad esempio, copertina rigida o molle), il prezzo, lo sconto e la disponibilità, sia in termini di numero di copie, che di giorni richiesti per la consegna al cliente.
Il sistema deve gestire le transazioni degli utenti. Queste possono essere suddivise in due categorie: ricerche e/o acquisti. La ricerca di un libro deve essere facilitata fornendo i soli ausili alla ricerca: ricerca per parole singole e parziali, ricerca per parole simili, ecc. La procedura d'acquisto deve offrire un "carrello della spesa" virtuale e gestirlo in maniera opportuna. Se l'utente decide di acquistare la merce nel carrello, il sistema deve provvedere alla compilazione sia delle fattura (ricevuta) per il cliente, che del modulo da inoltrare al magazzino per la consegna dell'ordine.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

6

Si progetti un sistema informativo per la gestione di una agenzia di viaggi.
L'agenzia fornisce sia servizi tradizionali, che servizi innovativi. Tradizionalmente, un'agenzia deve vendere:

  • settimane di villeggiatura scelte da appositi cataloghi;

  • biglietti aerei, ferroviari e per traghetti;

  • soggiorni in alberghi particolari.

Per i servizi innovativi, l'agenzia deve offrire la possibilità di:

  • cercare il volo più economico per una determinata località;

  • cercare il soggiorno più esclusivo, più economico, oppure più caratteristico;

  • confrontare le diverse offerte per la medesima località turistica;

  • scegliere fra rinunce e offerte della settimana, che devono essere vendute a prezzi scontati.

L'agenzia deve tener traccia anche del fatturato accumulato da ogni cliente e del volume d'affari con ogni catalogo trattato. Nel primo caso, le informazioni raccolte potrebbero essere utilizzate per definire offerte o sconti particolari. Nel secondo caso, le informazioni potrebbero servire per spuntare prezzi d'acquisto (per l'agenzia) migliori.
Il candidato modelli il sistema utilizzando UML. Si definiscano, almeno, uno use case diagram, un class diagram e due diagrammi, scelti fra interaction diagram, activity diagram o statecharts diagram, per formalizzare due attività particolari.
 

7

Si progetti un sistema informativo per la gestione e la consultazione della programmazione delle sale cinematografiche della provincia (regione).
L'applicazione deve gestire le informazioni relative ai film in programmazione nei diversi cinema della regione. Nel caso di cinema multisala, si deve poter consultare la programmazione relativa ad ogni singola sala. In particolare si è interessati a conoscere l'ubicazione (indirizzo) del cinema, gli orari e il costo del biglietto. La disponibilità di tariffe agevolate in giorni particolari della settimana, oppure per categorie specifiche (anziani, militari, ecc.), deve essere opportunamente segnalata. Per quanto riguarda le pellicole in programmazione, deve essere disponibile il titolo del film, l'anno e la nazione di provenienza, il genere, il regista, la casa di produzione, gli attori principali, la trama e eventuali giudizi critici. Per ogni attore (attrice), deve essere disponibile la scheda anagrafica e la filmografia, cioè l'insieme dei film in cui ha recitato.
L'applicazione in questione prevede due possibili figure di utenti: il gestore ed il cliente. Il gestore deve essere in grado di modificare ed aggiungere informazioni. Il cliente, invece, può solamente consultare le informazioni disponibili.
Devono essere possibili ricerche per città (ad esempio, i film in programmazione a Cremona), sala cinematografica ( ad esempio, i(l) film in programmazione al cinema Odeon), genere (ad esempio, tutti i film comici in programmazione), attore (ad esempio, tutti film in programmazione in cui recita Sandra Bullock) o regista (ad esempio, tutti i film in programmazione il cui regista è Woody Allen) diversamente combinate fra loro.
Il candidato modelli il sistema con la notazione che ritiene più opportuna (analisi strutturata e schemi entità relazione, oppure UML). Scelta la notazione, il candidato fornisca un numero di diagrammi che ritiene sufficiente per descrivere il problema.
 

8

Si progetti un sistema informativo per la gestione della manutenzione delle strade del vostro comune.
Il comune "identifica" un insieme di interventi che, per semplicità, possono essere: asfaltatura, messa in opera di nuove tubature e/o cavi, oppure semplice manutenzione ordinaria. Per la manutenzione straordinaria (asfaltatura e messa in opera), il comune indice una gara d'appalto, identificando la tipologia dell'intervento, i vincoli temporali e il tetto massimo di spesa. Chi partecipa alla gara deve presentare la propria offerta, specificando il periodo proposto e il preventivo di spesa. Il comune deve essere in grado di selezionare l'offerta migliore sia in termini temporali (la data proposta per l'inizio dei lavori e` la piu` vicina a quella richiesta), che in termini economici (il preventivo di spesa piu' basso, oppure inferiore di una certa percentuale rispetto alla spesa massima). Per la manutenzione ordinaria, invece, il comune si rivolge sempre e solo a ditte convenzionate.
Appena prima che comincino i lavori, il comune deve essere in grado di identificare le strade coinvolte. Questo significa identificare anche gli incroci, che richiedono personale per il controllo del traffico (banalmente, gli incroci collegati dalle strade coinvolte), e le strade che diventerebbero inutilizzabili a fronte delle vie chiuse per lavori e dei sensi unici esistenti. Per semplicita`, il nome di una via identifica una strada che connette esattamente due incroci. Un incrocio puo' connettere un numero illimitato di strade.
Si progetti il diagramma delle classi usando UML e si emplifichi il funzionamento del sistema definendo almeno due sequence diagram (interaction diagram oppure cooperation diagram) che rappresentano gli scenari seguenti:

  • Via Mazzini deve essere riasfaltata. Il comune indice una gara per l'assegnazione dei lavori, da svolgersi durante la prima settimana di ottobre e per un ammontare massimo di 10.000.000. Tra le proposte, il comune sceglie la ditta Rossi perche' propone uno sconto del 20% rispetto alla cifra prevista.

  • Si determinino quali saranno gli incroci coinvolti e le strade "isolate" il giorno in cui inizieranno i lavori in via Mazzini.

9

Si progetti un sistema informativo per la gestione "evoluta" di una farmacia.
La farmacia deve conoscere tutti i medicinali prescrivibili. Per ogni prodotto, deve tener traccia del prezzo di vendita, dei vincoli imposti per legge alla vendita (ad esempio, solo su presentazione di ricetta medica) e di eventuali effetti collaterali. Il farmacista dovrebbe essere in grado di consigliare oppure sconsigliare il cliente se il prodotto richiesto dovesse presentare effetti collaterali "troppo" nocivi, oppure fosse sconsigliato in presenza di patologie o disturbi particolari. Ovviamente, ogni farmaco ha una casa produttrice che deve essere contatta nel momento in cui le scorte del prodotto dovessero andare sotto il livello di guardia. La farmacia registra anche ogni cliente, sia per fornire un servizio migliore, cioè per tener traccia di allergie, patologie, oppure problemi che potrebbero sconsigliare l'assunzione di un particolare prodotto, sia per produrre statistiche d'uso dei diversi farmaci per l'ASL. A questo proposito la farmacia registra anche i medici che hanno proposto le diverse prescrizioni. Ancora la finalità è duplice: instaurare un rapporto di collaborazione con il medico e produrre le statistiche per l'ASL. A richiesta la farmacia deve anche saper ricostruire lo storico (l'ultimo anno, ad esempio) del singolo cliente, oppure del singolo medico.
Si progetti il sistema utilizzando UML, oppure DFD e schemi ER. Si esemplifichi anche il comportamento de sistema nei due casi seguenti:

  • Il cliente Giuseppe Rossi si rivolge alla farmacia per comprare una scatola di aspirine. A fronte della vendita del prodotto, il sistema deve segnalare la necessità di riordinare il prodotto per mantere inalterate le scorte.

  • L'ASL richiede i dati relativi al consumo di antidepressivi per l'anno 1999.

 

10

Si progetti un sistema informativo per la classificazione dei ristoranti italiani.
I ristoranti devono essere organizzabili sia in ordine alfabetico che per città. Ogni ristorante può segnalarsi per le sue specialità, il prezzo e la citazione in una o più guide gastronomiche (Michelin, Veronelli, Gambero Rosso, ecc.). Se un ristorante viene citato in una particolare guida, oltre al nome della guida, deve essere disponibile l'intera valutazione (voto, note di merito e di demerito). Si consideri che l'utente potrebbe essere interessato anche a consultare la lista di ristoranti in base alla guida di suo gradimento. Ad esempio, si potrebbe essere interessati ai primi cinque ristoranti della guida Michelin 2000. Inoltre, si potrebbe voler definire una graduatoria comparata dei migliori ristoranti interpolando i risultati delle diverse guide.
Si progetti il sistema iniziando con uno use-case UML, oppure con un DFD di primo livello (non di contesto) . Si definisca il class diagram UML per gli oggetti (elementi) necessari. Si esemplifichi poi il comportamento del sistema nei due casi seguenti (interaction diagram):

  • Il cliente Giuseppe Rossi vuole ottenere il miglior ristorante di Milano secondo tutte le guide note (quelle prese in considerazione dal sistema informativo).

  • Il cliente Giuseppe Rossi vuole ottenere il miglior ristorante in provincia di Lecco, per mangiare pesce, e vuole che non sia citato in alcuna guida nota.

 

11

Si progetti un sistema informativo per la gestione di un’impresa edile.
Il sistema deve gestire i cantieri, i dipendenti e il magazzino centrale.
Ogni cantiere, oltre alla propria posizione, descrizione, data di inizio lavori e data di fine prevista, deve conoscere i dipendenti (muratori, carpentieri, autisti, geometri, ecc.) assegnati. Si noti che un dipendente potrebbe lavorare in più cantieri. Per ogni dipendente, oltre ai dati anagrafici, si deve conoscere la qualifica, la fascia di stipendio e eventuali richieste e/o capacità particolari.
L'impresa ha un magazzino centrale e un "piccolo magazzino" per ogni cantiere aperto. Ogni magazzino registra i prodotti per costruzione (mattoni, tegole, cemento, ecc.) , gli strumenti e i mezzi disponibili in ogni magazzino. Il magazzino centrale deve essere in grado di assegnare il materiale (strumento o mezzo) richiesto ad ogni cantiere cercando di minimizzare i tempi e le distanze. Ad esempio, deve essere possibile localizzare il carico di mattoni più vicino al cantiere che l'ha richiesto e deve essere possible "spostarlo" da un magazzino ad un altro.
A richiesta il cantiere deve anche saper calcolare il costo "corrente" di un cantiere. Deve anche saper ricostruire lo storico (l'ultimo anno, ad esempio) del singolo cantiere, del singolo dipendente, oppure del singolo mezzo.
Si progetti il sistema utilizzando UML, oppure DFD e schemi ER. Si esemplifichi anche il comportamento del sistema in due casi che si ritengono significativi.
 

12

Si progetti un sistema informativo per la gestione della coppa del mondo di sci.
Il sistema deve gestire l'archivio storico delle diverse edizioni della coppa del mondo. Ogni anno, la coppa viene assegnata considerando i risultati ottenuti in un certo numero di gare. Ad ogni gara (slalom speciale, slalom gigante, super gigante e discesa libera) partecipano un certo numero di atleti. Ogni gara "produce" una classifica; ogni atleta è caratterizzato dalla nazione di nascita, dalla nazione per la quale gareggia, dai risultati ottenuti in cariera e dai materiali che usa. Ogni atleta deve usare almeno un paio di sci, un paio di scarponi e un paio di attacchi. Il sistema deve gestire anche le ditte produttrici dei diversi materiali, a prescindere dal fatto che vengano effettivamente usati dai diversi atleti. Il sistema deve però controllare che non ci siano ditte che non forniscono atleti da più di due anni; in caso contrario il sistema dovrebbe informare le diverse aziende e invitarle a sponsorizzare alcuni atleti partecipanti alla coppa.
Il sistema deve anche occuparsi di gestire i contratti pubblicitari che di riferiscono alla coppa del mondo. Sono ammessi quanti contratti si vuole, ma le aziende interessate devono appartenere a settori merceologici diversi.
Dopo aver modellato il sistema usando UML, oppure l'analisi strutturata e gli schemi ER, si semplifichi il comportamento del sistema nei due casi seguenti:

  • Il sistema deve calcolare la media punti di Cristian Ghedina nelle ultime 3 edizioni della coppa del mondo.

  • Il sistema vuole calcolare quante e quali gare sono state annullate per mancanza di neve nelle ultime 5 stagioni.

 

13

Si progetti un sistema informativo per la gestione di una società di autobus.
Il sistema deve gestire le linee servite dalla società. Ogni linea ha una stazione di testa e una stazione di coda e gli autobus la possono percorrere nelle due direzioni (dalla testa alla coda, oppure viceversa). Si noti che le fermate nelle due direzioni protrebbero essere diverse (ad esempio, una strada potrebbe essere a senso unico). Ogni linea è coperta da un certo numero di corse giornaliere: si supponga che la cadenza e l'orario di inizio e di fine delle corse dipendano dal giorno della settimana e/o da particolari giorni di festa (giorni lavorativi, sabato, domenica e festività). Una corsa però non deve necessariamente coprire l'intera tratta, ma potrebbe anche essere limitata ad un sottoinsieme delle fermate previste dalla linea.
Il sistema deve stampare anche l'orario stagionale e deve gestire gli autisti e gli autobus. Solitamente un mezzo è assegnato a una particolare linea (corsa) e un autista è assegnato a un particolare mezzo. Il sistema deve controllare che ogni autista non lavori mai per più di 7 ore al giorno, quindi il numero di corse effettuabili da ogni autista e il numero di autisti necessari per coprire una singola linea devono essere calcolati in base ai tempi di percorrenza.
Dopo aver modellato il sistema usando UML, oppure l'analisi strutturata e gli schemi ER, si esemplifichi il comportamento del sistema nei due casi seguenti:

  • Il sistema deve calcolare il numero di autisti necessario per coprire la linea Topolinia-Paperopoli, sapendo che la tratta completa consta di 12 fermate e che il tempo medio da una fermata alla successiva è di 10 minuti.

  • Il sistema vuole calcolare il numero di mezzi necessari per coprire tutte le corse individuate.

 

14

Si progetti il sistema informativo (semplificato) della motorizzazione civile.
Il sistema deve gestire sia le immatricolazioni dei mezzi di trasporto, sia l'emissione delle patenti. I mezzi di trasporto sono suddivisi in motociclette, automobili, pullman e camion.
La motorizzazione vuole tenere traccia sia dei modelli, che dei singoli autoveicoli. I modelli possono essere modelli standard (identificati da nome del modello, codice e data di omologazione), oppure prototipi (identificati da nome del prototipo, codice, data di immatricolazione e persona che ha presentato la richiesta di immatricolazione).
Ogni mezzo di trasporto è identificato da numero di telaio, modello, data di immatricolazione, targa e proprietario. I proprietari possono essere persone fisiche, oppure società. Ad ogni persona fisica può essere associata una patente; non è ovviamente possibile associare patenti a società. Le persone e le società sono identificate attraverso i soliti attributi, Le patenti devono avere un proprietario, una data di rilascio, eventuali note specifiche e eventuali rinnovi.
Si modelli il sistema utilizzando le notazioni che si ritengono più opportune. Si descriva anche, il comportamento del sistema nei seguenti casi:

  • Il sistema (l'utente) vuole immatricolare una nuova macchina: Fiat Punto blu, data immatricolazione 20/06/2000, telaio # 123AS34, targa FS 904 LB, proprietario Antonio Rossi.

  • Il sistema (l'utente) vuole identificare il proprietario della Alfa Romeo 156 targata FR 374 CB, telaio # 453HH92.

 

15

Si progetti un sistema informativo per la gestione del programma fedeltà della compagnia aerea MyAir.
La premessa, magari non nota a tutti, è che chi si iscrive al programma, ogni volta in cui vola con MyAir, accumula punti (miglia) che danno diritto a premi. Ad esempio, bisogna volare per almeno 25.000 miglia per avere diritto a un volo gratuito in Europa; ci vogliono 65.000 miglia per un volo negli Stati Uniti; bastano 5.000 per un buono acquisto in un negozio convenzionato.
Il sistema deve gestire i clienti della compagnia che partecipano al programma. I partecipanti sono organizzati in tre fasce di merito in funzione delle miglia volate durante un anno solare: tutti appartengono al primo livello. Se si volano 35.000 miglia si passa al secondo livello; si accede al terzo livello con 100.000 miglia volate in un anno. I tre livelli danno diritto a facilitazioni e premi differenziati.
Oltre ai clienti, il sistema deve gestire i premi, ovvero la tipologia di premio (volo gratuito, soggiorno gratuito, buono sconto), il numero di miglia richieste per ogni premio particolare (un volo gratuito a New York richiede più miglia di un volo per Roma) e lo storico dei clienti: quanti voli ha effettuato ogni cliente, quante miglia ha guadagnato, quali premi ha già riscosso e quante miglia gli restano da "spendere". Si fa notare che le miglia scadono dopo 5 anni dal momento in cui sono state acquisite, cioè dalla data del volo.
Il sistema deve essere in grado di aggiornare la posizione di ogni cliente in funzione di ogni volo effettuato e di ogni premi richiesto. Deve anche gestire l'effettiva disponibilità dei premi. Ad esempio, un volo gratuito potrebbe non essere soddisfacibile se il volo richiesto fosse già pieno.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il comportamento del sistema nei due casi seguenti:

  • Il signor Rossi chiede un volo premio per Nairobi. Il sistema deve verificare le miglia in possesso del signor Rossi, confrontarle con quelle richieste per un volo per Nairobi e ricordare al signor Rossi che non ha miglia sufficienti.

  • Il signor Bianchi ha effettuato il decimo volo del 2000 e questo significa che la classe di merito cambia da quella base al secondo livello. Il sistema deve modificare l'immagine del signor Bianchi (cioè i dati memorizzati) e deve predisporre l'invio della nuova tessera di fideizzazione.

 

16

Si progetti un sistema informativo per la gestione di un oratorio.
Il sistema deve gestire tutte le attività svolte in oratorio (catechismo, corsi di informatica, corsi di ballo, vacanze estive, ecc.). Ogni attività ha un responsabile, un insieme di persone di riferimento, che coadiuva il responsabile, e gruppo di ragazzi (persone) che seguono (svolgono) l'attività in questione. Il catechismo è rivolto solamente a ragazzi in età scolare, mentre ad esempio i corsi sono rivolti a tutti. Le attività non sono fisse e predefinite, ma possono cambiare nel corso dell'anno. Le attività con un numero elevato di partecipanti sono organizzate in classi. Ogni attività ha anche un bilancio: le entrate sono le sovvenzioni del comune, della parrocchia, di qualche ente benefico, oppure le quote di iscrizione richieste ai partecipanti; le uscite sono ovviamente le spese vive più qualche compenso proforma ai responsabili. L'obiettivo è di mantenere ogni attività in attivo o in pareggio. Eventuali "utili" servirebbero per finanziare altre attività.
Il sistema deve essere in grado di elaborare anche il bilancio complessivo dell'oratorio sia mese per mese, che alla fine di ogni anno.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il suo comportamento nei due casi seguenti:

  • L'oratorio organizza un corso di balli latino-americani riscotendo un notevole successo. Si calcoli il bilancio del corso sapendo che: non è stata concessa alcuna sovvenzione, ma i 30 partecipanti hanno pagato 50.000 lire di quota d'iscrizione, e si è deciso di dare 500.000 lire ad ognuno dei due maestri.

  • Il signor Bianchi vuole iscrivere il figlio Francesco al corso di free-climbing. Il signor Bianchi deve pagare la quota

 

17

Si progetti un sistema informativo per la gestione di un'azienda dolciaria.
Il sistema deve classificare e gestire tutti i prodotti dell'azienda. Ogni prodotto richiede una ricetta e un certo numero di materie prime. Il sistema deve poter controllare la ricetta scelta e decidere se esistono scorte sufficienti per preparare il prodotto nella quantità stabilita. Se non ci fossero materie prime sufficienti, il sistema dovrebbe provvedere all'espletamento delle pratiche per il riordino: la modalità può essere sia automatica, che manuale. Nel primo caso, è il sistema che fa tutto; nel secondo caso, il sistema segnala solamente le materie prime mancanti e lascia la decisione finale all'operatore.
L'azienda dispone, anche, di un proprio sito Internet con il quale presenta e vende i prodotti. La presentazione è attraverso particolari "tour per golosi"; la vendita è una classica vendita via Inter-net: i clienti scelgono cosa comprare e decidono modalità di spedizione e tempi di consegna. Chiaramente tempi di consegna e modalità diverse hanno prezzi diversi.
Gli utenti del sistema possono caratterizzare i loro profili, specificando i gusti (ad esempio, prodotti alla panna, oppure torte con la glassa) e richieste (ad esempio, consegna sempre tramite fattorino). Le preferenze devono essere usate dal sistema per organizzare i "tour per golosi", privilegiando quelli che corrispondono ai gusti dichiarati. Ad esempio, i fanatici del cioccolato dovranno avere tutti i tour con prodotti al cioccolato, come prima scelta, e poi via via gli altri. I tour de-vono anche presentare l'equivalente calorico di ogni prodotto, giusto per infierire sul cliente.
Si progetti il sistema definendo il diagramma delle classi UML e si esemplifichi il suo comporta-mento (interaction o activity diagram) nei due casi seguenti:

  • Si deve produrre la torta della nonna e si scopre che mancano alcuni ingredienti (ad esempio, uova e pinoli). Il sistema, in modalità automatica, deve provvedere all'emissione degli ordini d'acquisto.

  • L'utente Rosso Rossi richiede la consegna di una bavarese alla fragola per corriere espresso entro 12 ore. Supponendo che la cosa sia possibile, il sistema deve calcolare il costo dell'operazione (spedizione più involucro protettivo) e deve emettere la fattu-ra virtuale al cliente.

18

Si vuole realizzare una base di dati per la comunità scientifica di ricerca paleontologica. Si devono memorizzare i dati riguardanti i reperti fossili di vertebrati custoditi dai musei. I reperti sono caratterizzati dal luogo e dall’anno di ritrovamento, dal ricercatore responsabile della scoperta, dal museo e dalla sala in cui è custodito.
Ogni reperto può essere attribuito a diverse specie, con diverso grado di probabilità. Ad ogni specie possono essere associati più nomi, qualora diversi ricercatori abbiano fornito lo stesso nome a specie diverse: in tal caso il nome ufficiale è il nome più vecchio. I musei sono caratterizzati dalle sale, dai loro ricercatori, dal loro direttore (che può essere un paleontologo o un ricercatore di altra materia).
Definire lo schema ER e lo Schema Logico relativo alla base di dati. Tradurre inoltre lo Schema Logico nel linguaggio SQL.
Si ricorda che lo schema concettuale deve comprendere l’indicazione delle cardinalità di relazioni ed attributi, degli identificatori di tutte le entità, e dei vincoli d’integrità non esprimibili attraverso lo schema.

19

Progettare una base di dati per una scuola che contenga informazioni relative sia agli studenti sia al personale (docente e non docente). Di ogni persona vengono conservate le usuali informazioni anagrafiche. La base dati deve tenere traccia delle storie scolastiche degli studenti, archiviando le classi a cui lo studente è appartenuto e i risultati finali di ogni anno per ogni materia. Il personale docente può essere di ruolo o supplente ed è caratterizzato dall’insieme di corsi che può impartire. Il sistema deve inoltre gestire le informazioni relative ai locali della scuola: vi sono aule (associate alle classi), laboratori (associati alle materie) e uffici (associati in vario modo al personale).
Definire lo schema ER e lo Schema Logico relativo alla base di dati. Tradurre inoltre lo Schema Logico nel linguaggio SQL.
Si ricorda che lo schema concettuale deve comprendere l’indicazione delle cardinalità di relazioni ed attributi, degli identificatori di tutte le entità, e dei vincoli d’integrità non esprimibili attraverso lo schema.

20

Progettare una base di dati relativa alla gestione delle prenotazioni dei posti di un laboratorio didattico di una università. Ogni studente è caratterizzato dalla propria matricola, nome, cognome, data e luogo di nascita, residenza, recapito telefonico. Gli studenti frequentano alcuni laboratori didattici. I laboratori didattici contengono un insieme di posti di lavoro ed un insieme di risorse. Ad ogni posto di lavoro sono assegnate alcune risorse (unità di calcolo, stampanti, applicazioni). Alcune delle risorse sono rese disponibili a tutti gli studenti senza controlli, altre vengono assegnate agli studenti che frequentano determinati laboratori, previa autorizzazione. Lo studente può utilizzare un posto di lavoro solo se effettua una prenotazione. Si deve tenere traccia di tutte le prenotazioni e di tutte le volte che lo studente utilizza un posto di lavoro. Ogni laboratorio ha un solo responsabile, il quale si può occupare di un solo laboratorio.
Definire lo schema ER e lo Schema Logico relativo alla base di dati. Tradurre inoltre lo Schema Logico nel linguaggio SQL.
Si ricorda che lo schema concettuale deve comprendere l’indicazione delle cardinalità di relazioni ed attributi, degli identificatori di tutte le entità, e dei vincoli d’integrità non esprimibili attraverso lo schema.

21

Si considerino le seguenti specifiche relative ad una società di pronto intervento automobilistico denominata HELP.
La HELP ha diversi centri di intervento dislocati su tutto il territorio nazionale. Per ogni centro interessano la città, l’indirizzo e il numero di telefono. Ogni centro ha un responsabile, vari impiegati (appartenenti a varie categorie) e alcuni operatori che intervengono in caso di richiesta (per i quali è importante il telefono cellulare); per tutti, si registrano i dati anagrafici e la retribuzione.
La HELP ha un certo numero di soci per i quali si registra un numero di tessera, il nome, il cognome, l’indirizzo, la data di nascita, la targa della macchina e il suo modello.
Ad un centralino della società arrivano richieste di soccorso. Per ogni richiesta, se l’utente è un socio, si registra il suo numero di tessera e il luogo del guasto; altrimenti, vengono registrati nome e cognome del richiedente, targa dell’automobile e tipo di guasto. Comunque, si registra il nome dell’operatore che ha ricevuto la chiamata.
A seguito di una richiesta di soccorso, si avvia un intervento per il quale si registra un codice, un orario di inizio, un orario di fine, il centro di intervento che opererà il soccorso e il numero di chilometri richiesti per effettuare l’intervento. Il centro di intervento assegna poi l’operatore che effettua l’intervento.
Se l’intervento è stato richiesto da un socio, si produce una ricevuta nella quale si registra il numero di tessera, la data e il tempo che è stato necessario per completare l’intervento.
Se l’intervento non è stato richiesto da un socio, si produce una fattura che contiene la data, i dati del cliente e un costo che viene calcolato in base ad un tariffario; tale tariffario associa un costo ad un intervallo di chilometri (per esempio, 100 Euro per distanze tra i 10 e i 20 chilometri).


Si richiede lo svolgimento delle seguenti attività:
Risoluzione delle eventuali ambiguità presenti nelle specifiche e libera integrazione ove risultino incomplete.
Progettazione concettuale della base di dati con la produzione di uno schema Entity-Relationship (ER), che modelli la realtà di interesse. È necessario documentare:


o Lo schema ER finale in forma completa, cioè con:

  • gli attributi di ogni entità di ogni relationship;

  • gli identificatori di ogni entità; le cardinalità di ogni relationship; i ruoli per le relationship (se necessari).

o Un glossario dei concetti espressi nello schema concettuale, che contenga:

  • per ogni entità: descrizione del suo significato; descrizione e dominio di ogni attributo (quando necessario); se l’attributo derivato, la relativa regola di computazione; identificatori dell’entità (con specifico riferimento alle relationship e alle entità coinvolte in eventuali identificazioni esterne);

  • per ogni relationship: descrizione del suo significato; descrizione e dominio di ogni attributo; ruolo della partecipazione di ogni entità coinvolta nelle relationship mettendo in evidenza il significato del ruolo (motivando, se necessario, la scelta delle cardinalità)

o Gli eventuali vincoli dell’applicazione non esprimibili dal modello ER.

22

Si desidera informatizzare l'archivio di una associazione di volontariato che raccoglie fondi per progetti di sostegno a distanza. Devono essere
gestite le seguenti informazioni:
1. Informazioni anagrafiche sui benefattori. Per benefattore si può intendere una persona fisica o un gruppo di persone che partecipano insieme ad un progetto o una società. I benefattori possono appartenere alle seguenti tipologie: Socio fondatore, sostenitore, ordinario, juniores (pagano una quota associativa ed hanno diritto di voto) non necessariamente partecipano ai progetti;
Socio onorario (non paga una quota associativa e non necessariamente partecipa ai progetti); Donatore: chi partecipa ad un progetto pur non essendo soci.
2. Informazioni sui progetti. Tutti i progetti vengono realizzati grazie alla collaborazione di Istituti locali dai quali riceviamo gli aggiornamenti trimestrali e tutta la corrispondenza, ed ai quali trasmettiamo le donazioni con scadenza trimestrale Si possono avere le seguenti tipologie:
(a) Progetti a lunga scadenza con donazioni mensili fisse (questo significa che il benefattore si impegna a versare un importo trimestrale fisso e riceve informazioni sul progetto stesso). Tali progetti sono distinguibili in Adozione a distanza: oggetto principale del progetto è l'Istituto. L'importo annuale del progetto viene stabilito in base al budget di spesa che ci viene trasmesso. Tale importo annuale viene ridotto a quota trimestrale e quindi diviso per la quota mensile versata dal donatore al netto delle spese di segreteria (quota mensile 25,00 - 10Sostegno a distanza: oggetto principale del progetto µe una persona specifica. Il rapporto è uno ad uno.
Le quote mensili sono fisse e dipendono dal tipo di sostegno riconosciuto alla persona. (Es. sostegno agli studenti per le spese scolastiche, sostegno agli anziani per spese di sussistenza, sostegno ai malati per le spese di cura).
(b) Progetti specifici che vengono finanziati con donazioni liberali una tantum. Altre osservazioni: Un benefattore può partecipare ad uno o più progetti, a nessun progetto. nello specifico (pur versando una donazione) o non partecipare pur restando soci. Tutti i progetti vengono appoggiati agli istituti:
può pertanto verificarsi il caso in cui un Istituto Y gestisca un progetto di Adozione a distanza, uno di Sostegno a distanza, un progetto speciale (tipo acquisto terreno o costruzione edificio o acquisto materiale fisioterapico).
Si potrebbe anche verificare il caso in cui l'Istituto gestore del progetto sia l'associazione stessa (ad esempio si pagherà il 50che andrà come volontario).
I soggetti principali dei progetti a lunga scadenza (sostegno ed adozione a distanza) possono cambiare: un bambino ad esempio può lasciare l'istituto e quindi abbandonare il progetto oppure un benefattore potrebbe abbandonare il progetto. Di queste variazioni bisognerebbe lasciare traccia. Un progetto a lunga scadenza prevede l'obbligo per l'istituto di produrre una serie di documentazione a scadenza fissa (messaggio di benvenuto, fotografia annuale, lettera annuale, auguri etc.) serve un controllo sulla regolare produzione dei documenti.
3. Movimenti contabili. L'associazione dispone di una cassa, di un conto corrente bancario e di un conto corrente postale

(a) Entrate: Versamenti dei benefattori a favore dei progetti (il 10 Quota associative; Interessi attivi.
(b) Uscite: Versamenti donazioni (al netto delle spese di segreteria) agli istituti; Spese di segreteria (spedizioni, telefono, cancelleria); Spese bancarie.
A chiusura del bilancio le quote a disposizione dell'associazione (date dalla rimanenza di cassa tra quote di iscrizione, quote trattenute per spese di gestione e spese sostenute) vengono utilizzate parzialmente per il finanziamento di progetti speciali.
4. Comunicazioni ai soci:
(a) Comunicazioni Istituzionali: si utilizzerà una mailing che va ad attingere i dati anagrafici e va a gestire l'eventuale spedizione via e-mail.
(b) Comunicazioni sui progetti: possono essere comunicazioni generiche (sull'avanzamento lavori ad esempio) da trattate alla stregua di una mailing normale con selezione dei benefattori che partecipano al progetto, o comunicazioni individuali ovvero quelle che portano gli aggiornamenti relativi ad un bambino al benefattore ad esso collegato. Gli aggiornamenti vengono aggiunti alla scheda personale.

23

Si desidera automatizzare la gestione di un ospedale. Le specifiche del sistema sono le seguenti. La base di dati dovrà memorizzare informazioni relative ai pazienti, al ricovero dei pazienti nei reparti ospedalieri, ai trattamenti cui sono sottoposti i pazienti e alla loro dimissione. Di ogni paziente, vengono registrati il nome, l'indirizzo, il sesso, il numero di carta di identità, il numero della tessera sanitaria, il reparto ove µe ricoverato e il letto occupato (reparto e letto possono cambiare durante il periodo di degenza). Di ogni reparto, vengono memorizzati il nome, la localizzazione, il nome del primario responsabile, il nome degli (eventuali) altri medici presenti, il numero delle stanze, il numero di letti presenti per stanza e il numero di letti occupati per stanza. Si vuole inoltre tener traccia delle date di ricovero, di (eventuale) trasferimento da un reparto all'altro e di dimissione dei pazienti. Ogni paziente può essere sottoposto a piµu trattamenti durante il periodo di degenza ospedaliera. Di ogni trattamento, vengono conservate informazioni relative al nome, alla durata e alle possibili reazioni del paziente.

24

Si desidera automatizzare la gestione di una catena di officine. Il sistema dovrà gestire almeno le seguenti informazioni.

  1. Le officine, con nome, ragione sociale, indirizzo e telefono.

  2. Le automobili, con targa, modello e proprietario.

  3. I clienti (proprietari di automobili), con codice fiscale, cognome, nome e telefono. Ogni cliente può essere proprietario di più automobili.

  4. Gli interventi di manutenzione, ognuno effettuato presso un'officina, date di inizio e di fine, pezzi di ricambio utilizzati (con le rispettive quantità) e numero di ore di manodopera.

  5. I pezzi di ricambio, con codice, nome e costo unitario.

  6. I fornitori dei pezzi di ricambio.

25

Si vuole progettare una base di dati di supporto alla gestione delle informazioni di interesse per un amministratore di condomini, in grado di gestire (almeno) le informazioni sotto specificate.

  1. Di un condominio interessano l'indirizzo e il numero del conto corrente dove vengono fatti i versamenti delle spese sostenute. Un condominio si compone di un certo numero di appartamenti dei quali interessano il numero dell'interno, il numero dei vani, la superficie, lo stato (libero od occupato).

  2. Gli appartamenti possono essere locati; in tal caso, dell'inquilino interessano il nome, il codice fiscale, il telefono e il saldo, cioè la somma che l'inquilino deve all'amministratore condominiale per le spese sostenute. Alcuni appartamenti locati possono essere stati disdetti; in tal caso, interessa la data della disdetta.

  3. Un appartamento può avere piµu proprietari e un proprietario può possedere piµu appartamenti. Di ogni proprietario interessano il nome, il codice scale, l'indirizzo, il telefono e il saldo, ossia la somma che il proprietario deve all'amministratore condominiale per le spese sostenute.

  4. Le spese riguardano i condomini e di esse interessano il codice di identificazione, la natura (luce, pulizia, ascensore, ecc.), la data e l'importo. Fra le spese si distinguono quelle straordinarie, a carico dei proprietari, e quelle ordinarie, a carico degli inquilini. Le spese ordinarie vengono pagate in un'unica rata, mentre le spese straordinarie possono essere pagate in più rate e di ognuna di esse occorre ricordare la data e l'importo.

26

Si progetti una base di dati per la gestione di un registro automobilistico, facente parte del sistema informativo di ufficio di motorizzazione,
contenente (almeno) le seguenti informazioni:

  1. di ciascun veicolo interessa registrare la targa, la cilindrata, i cavalli fiscali, la velocità, il numero di posti e la data di immatricolazione;

  2. i veicoli sono classificati in categorie (automobili, ciclomotori, camion, rimorchi, ecc.);

  3. ciascun veicolo appartiene ad uno specifico modello;

  4. tra i dati relativi ai veicoli, vi µe la codifica del tipo di combustibile utilizzato;

  5. di ciascun modello di veicolo µe registrata la fabbrica di produzione e il numero delle versioni prodotte;

  6. ciascun veicolo può avere uno o piµu proprietari, che si succedono nel corso della vita" del veicolo; di ciascun proprietario interessa registrare cognome, nome e indirizzo di residenza.

27

Si progetti una base di dati per la gestione informatica delle partite di un campionato di calcio, a partire dalle seguenti specifiche. Per ogni partita, descrivere il girone (andata o ritorno) e la giornata in cui si µe svolta (prima giornata del campionato, seconda giornata, ecc.), il numero progressivo nella giornata (es. prima partita della giornata, seconda partita, ecc.), la data, con giorno, mese e anno, le squadre coinvolte nella partita, con nome, città della squadra e allenatore, e, infine, per ciascuna squadra, se ha giocato in casa. Si vogliono conoscere i giocatori che giocano in ogni squadra, con i loro nomi e cognomi, la loro data di nascita e il loro ruolo principale. Si vuole conoscere, per ogni giornata, quanti punti ha ogni squadra. Si vogliono anche conoscere, per ogni partita, i giocatori che hanno giocato, i ruoli di ogni giocatore (i ruoli dei giocatori possono cambiare di partita in partita) e nome, cognome, città e regione di nascita dell'arbitro della partita. Distinguere le partite giocate regolarmente dalle partite rinviate. Per quelle rinviate, rappresentare la data in cui si sono effettivamente svolte. Distinguere anche le partite giocate in una città diversa da quella della squadra ospitante; per queste si vuole rappresentare la città in cui si sono svolte, nonché il motivo della variazione di sede. Dei giocatori interessa anche la data di nascita.

28

Si vuole progettare una base di dati per la gestione di un reparto ospedaliero, contenente le seguenti informazioni:

  1. I pazienti, con codice fiscale, nome, cognome e data di nascita.

  2. I ricoveri dei pazienti, ognuno con data di inizio (identificante nell'ambito dei ricoveri di ciascun paziente) e medico curante; inoltre, per i ricoveri conclusi, la data di conclusione e la motivazione (dimissione, trasferimento,.... ) e, per i ricoveri in corso, il recapito di un parente.

  3. I medici, con un numero di matricola, cognome, nome e data di laurea.

  4. Le visite, con la data, l'ora, i medici visitanti, le medicine prescritte (con le relative quantità) e le malattie diagnosticate; ogni visita è identificata dal paziente, dalla data e dall'ora.

  5. Per ogni medicina sono rilevanti un codice identificativo, un nome e un costo.

  6. Per ogni malattia sono rilevanti un codice identificativo e un nome.

29

Si vuole progettare una base di dati per la gestione di un supermercato, contenente le seguenti informazioni:

  1. per ogni dipendente, il codice identificativo, il nome e il cognome, le eventuali persone a carico, l'indirizzo e il reparto di appartenenza;

  2. per ogni reparto, il nome, i dipendenti, il responsabile del reparto e gli articoli
    in vendita;

  3. per ogni articolo in vendita, il nome, il fornitore, il prezzo di vendita e due codici identificativi (uno assegnatogli dal fornitore, che identifica univocamente l'articolo nell'insieme degli articoli da lui forniti, l'altro dal supermercato, che identifica univocamente l'articolo all'interno del reparto cui è stato assegnato);

  4. per ogni fornitore, il nome, l'indirizzo e gli articoli che esso fornisce al supermercato (con i relativi prezzi). Si assuma che, in ogni istante, ogni articolo venga fornito da un solo fornitore e che tale fornitore possa variare nel tempo.

30

Spettacoli di Broadway
Si vuole realizzare un sistema informativo per gestire la vendita di biglietti per gli spettacoli di Broadway. Ogni spettacolo ha un codice univoco, una durata, un titolo, un autore, un regista e una lista di attori principali. Le rappresentazioni di uno spettacolo si svolgono tutte nello stesso teatro, in più periodi di tempo disgiunti; ciascuno spettacolo viene rappresentato a orari fissati nei giorni di rappresentazione, per un massimo di due spettacoli al giorno (gli orari possono variare nei diversi giorni della settimana o per i giorni festivi). Ciascun teatro, identificato da un nome, ha un indirizzo, un numero di telefono e una pianta della sede in forma di insieme di settori, ognuno dei quali ha associata una matrice che rappresenta i posti del settore. Ad ogni settore è associato un costo (dipendente dallo spettacolo) e ogni posto (elemento della matrice associata al settore) può essere libero, prenotato o venduto. Per ogni rappresentazione è possibile prenotare un posto libero e, successivamente, acquistare i relativi biglietti. Il sistema deve mantenere uno storico di tutti gli spettacoli, le rappresentazioni e le vendite dei biglietti. Non è necessario mantenere un archivio dei clienti, che non vengono registrati per l’acquisto dei biglietti, ma lasciano semplicemente il nome per prenotare.

31

Libreria 1001 pagina
L’attività imprenditoriale dell’azienda “1000 e 1 pagina” è legata alla vendita dei libri a una serie di negozi. Nell’archivio dell’azienda devono essere memorizzate le informazioni relative ai libri a catalogo (titolo, editore, data di pubblicazione, autori e prezzo) oltre alle informazioni relative alle case editrici da cui provengono i libri (nome dell’editore, indirizzo, città e nazione) e degli autori stessi (nome, cognome , indirizzo e città). Inoltre la “1000 e 1 pagina” tiene traccia delle vendite memorizzando il numero di copie di ciascun libro vendute in una certa data ai diversi negozi (di cui sono mantenuti nome, indirizzo e città). La gestione dell’archivio consiste essenzialmente nell’inserimento dei dati riguardanti i nuovi libri a catalogo e alle vendite, inoltre annualmente il prezzo di copertina dei libri è aumentato del 3%. La “1000 e 1 pagina” utilizza l’archivio per analizzare l’andamento delle vendite dei libri e stilare la classifica di vendita settimanale. Per migliorare i rapporti con la propria clientela, la “1000 e 1 pagina” invia ai suoi clienti più assidui alcuni gadget in omaggio durante le festività natalizie: per determinare i clienti più assidui vengono selezionate le librerie che hanno acquistato almeno 1000 copie nel corso dell’ultimo anno.

32

Torneo di calcetto
A un torneo di calcetto partecipano 16 squadre, ognuna composta da 8 giocatori. Ogni squadra ha un allenatore che può anche essere uno degli 8 giocatori. Durante una partita, l'allenatore può sostituire a piacere i propri giocatori (senza limiti sul numero di sostituzioni) ma facendo sì che in campo siano presenti sempre 5 giocatori. Per ogni partita si vuole tenere traccia, di tutte le sostituzioni, e in particolare di tutti gli intervalli di tempo in cui ciascun giocatore è stato in campo. Si vogliono inoltre memorizzare tutti i goal, indicando per ciascuno di essi: il giocatore che lo ha realizzato; il minuto e il secondo in cui stato realizzato e il tipo (normale, di testa, punizione, rigore).

33

Facoltà universitaria
Si vuole automatizzare la gestione dei corsi in una facoltà universitaria. La facoltà prevede diversi corsi, caratterizzati da un codice e da un nome. Ciascun corso è tenuto da un solo docente, di cui si vogliono memorizzare il codice, il nome, il cognome, il codice fiscale, l’indirizzo (opzionale) e fino a 5 recapiti telefonici. Di ciascun corso si vuole memorizzare l’orario settimanale (2 o 3 lezioni in ore e aule diverse). La gestione degli esami prevede un’iscrizione agli appelli (per un massimo di 50 studenti per appello) e in caso di superamento, la memorizzazione di data e voto.
L’iscrizione a un esame è vincolata al superamento di determinati esami che per un corso sono considerati propedeutici. Gli studenti iscritti sono identificati da un numero di matricola e caratterizzati da nome, cognome, codice fiscale, indirizzo (opzionale) e fino a 5 recapiti telefonici.

34

Gelateria
La gelateria “ArtiGel” vende gelato artigianale e torte gelato all’ingrosso. Il sistema informativo deve mantenere i dati relativi ai fornitori e ai rivenditori (bar, ristoranti,…). I fornitori sono identificati dalla partita IVA, e hanno un nome, una ragione sociale, un indirizzo, un telefono. A
ciascun fornitore è associata una o più categorie di prodotti (materie prime). I prodotti forniti dalla gelateria sono identificati da un codice, da una descrizione (es. “torta al cioccolato”), da un prezzo e da una lista di ingredienti con relative quantità. Essendo deperibili i prodotti vengono prodotti solo per evadere un ordine (non c’è magazzino). Gli ingredienti (ovvero le materie prime) hanno un nome, una categoria e un solo fornitore; le giacenze a magazzino degli ingredienti devono essere monitorate, così come i livelli di riordino. I rivenditori (clienti) sono caratterizzati da P.IVA, nome, indirizzo. Il sistema deve gestire gli ordini verso i fornitori e da parte dei clienti.

35

Fumetti
Una rivista periodica di fumetti vuole memorizzare informazioni relative a tutte le storie che ha pubblicato nel passato, ed ai relativi personaggi. Di una storia interessa il titolo, che la identifica, ed interessano informazioni relative alle puntate in cui è stata divisa: per ogni puntata interessa il numero di pagine, il numero d'ordine all'interno della storia (prima, seconda…) ed il numero della rivista su cui è stata pubblicata. I personaggi si dividono in principali e secondari. Per tutti i personaggi interessa il nome, che li identifica. Per i personaggi secondari interessa ricordare le storie in cui sono apparsi, mentre per quelli principali si vogliono memorizzare precisamente le
puntate di apparizione. Se due personaggi sono parenti, se ne memorizza la relazione di parentela (ovvero, il fatto che sono parenti ed anche il grado di parentela).

36

Il vivaio SempreVerde
Il vivaio SempreVerde vuole realizzare un sistema informativo per la gestione delle piante.
Le piante disponibili nel vivaio, caratterizzate da un codice e da una descrizione, appartengono a una specie che a sua volta fa parte di una determinata categoria (es. specie “mela renetta”, categoria “alberi da frutta”).
All’interno del vivaio sono presenti diverse serre identificate da un codice, ciascuna delle quali è divisa in settori, caratterizzati da un numero univoco all’interno della serra. Ciascuna serra ospita una sola categoria di piante; al suo interno, in ogni settore può ospitare una sola specie.
Si vuole gestire inoltre il personale che lavora nel vivaio, memorizzando per ciascun dipendente codice fiscale, cognome, nome, indirizzo e numero di telefono. Ogni settore è affidato a un dipendente che deve innaffiare le piante presenti nei settori di sua competenza nel rispetto di un calendario settimanale prefissato (giorni della settimana e rispettivi orari per ciascun settore).
In alcuni periodi dell’anno il vivaio propone delle vendite promozionali, delle quali si memorizzano un codice identificativo, un nome, la data di inizio e quella di fine. In ciascuna promozione vengono offerti degli sconti su alcune specie di piante. La percentuale di sconto all’interno di una determinata promozione dipende dalla specie di pianta e dalla quantità acquistata.

37

Laboratorio fotografico
Il laboratorio fotografico “PhotoOnLine” vende online ristampe in vari formati, fotocalendari, fotoalbum, stampe fotografiche su magliette e altri prodotti fotografici. Relativamente a prodotti forniti sono mantenuti un codice, il nome, un tipo, un’immagine, una descrizione e un listino
composto “prodotto, quantità, prezzo” (es. “foto 10x15”; “fino a 10”; “0,19 €”). Per effettuare acquisti i clienti si registrano fornendo l’indirizzo di e-mail, una login e una password: al momento della conferma dell’ordine sono inoltre richiesti i dati anagrafici completi e l’indirizzo postale. Gli ordini sono caratterizzato da un numero d’ordine, da una data e sono associati a un solo cliente; viene inoltre memorizzato il totale dell’ordine, le eventuali spese di spedizione, il tipo di pagamento e l’indirizzo di spedizione o il negozio affiliato preso cui ritirare la stampa. Di ciascuna stampa associata ad un ordine si memorizza il prezzo, la quantità e l’elenco dei file che devono essere stampati: i clienti effettuano l’upload delle immagini da stampare. Relativamente ai negozi affiliati si memorizza la partita IVA, il nome, l’indirizzo, il telefono e il nominativo del proprietario.

38

Si considerino i seguenti fatti di interesse di una scuola media.

Insegnanti: un insegnante è identificato dal codice fiscale; di ogni insegnante interessa il cognome, il nome, le materie d’insegnamento, le classi in cui insegna (supponiamo che un insegnante possa insegnare materie diverse in classi diverse, ad es. Italiano in una classe e Storia e Geografia in un’altra classe).

Studenti: uno studente è identificato da cognome, nome, di ogni studente interessa inoltre il luogo di nascita, la data di nascita, la classe che frequenta.

Classi: una classe è identificata da un numero (1, 2 o 3) e dalla sezione; di ogni classe interessa inoltre il numero di studenti che la frequentano, gli insegnanti che vi insegnano e gli studenti che la frequentano.

a) Modellare i fatti sopra descritti nel modello concettuale

b) Tradurre lo schema concettuale in uno schema relazionale in SQL

c) Definire un’interrogazione in SQL che restituisca il numero di studenti della classe frequentata da Paoli Piero

39

Si considerino i seguenti fatti di interesse di un’agenzia immobiliare.

Immobili in vendita: di un immobile, identificato da un codice, interessa il tipo (appartamento, villa, …), la superficie, il numero di vani, eventuali annessi (garage, cantina, giardino, …), il prezzo richiesto, il proprietario.

Proprietari: un proprietario è identificato dal codice fiscale; di ogni proprietario interessa il cognome, il nome, il num. Telefonico, gli immobili in vendita di cui è proprietario.

a) Modellare i fatti sopra descritti nel modello concettuale

b) Tradurre lo schema concettuale in uno schema relazionale in SQL

c) Definire una interrogazione in SQL che restituisca codice fiscale, cognome e nome dei proprietari di appartamenti di 5 vani per i quali è richiesta una cifra inferiore a 300 milioni

40

Si consideri un’anagrafe contenente informazioni riguardanti persone:

Codice fiscale (che identifica una persona), cognome, nome, sesso, età, comune di residenza, se la persona lavora oppure no.

Se una persona lavora è specificata la sua attività ed il comune in cui questa si svolge, se invece non lavora è specificato se è disoccupata od in attesa di primo impiego.

I comuni sono identificati dal nome, di essi viene inoltre specificata la provincia, la regione ed il numero di abitanti

a) Modellare i fatti sopra descritti nel modello concettuale

b) Tradurre lo schema concettuale in uno schema relazionale in SQL

c) Definire in SQL un’interrogazione che restituisca cognome e nome delle persone che lavorano in provincia di Pisa.

d) Con riferimento allo schema del punto b) scrivere un’espressione dell’algebra relazionale che restituisca nome, cognome e sesso di una persona che lavora nel comune di Lucca

41

Si considerino le seguenti informazioni di interesse di una ditta di autotrasporti.

Le informazioni che interessano riguardano:

Gli automezzi: targa, marca, tipo, portata;

gli autisti: codice fiscale, cognome, nome, età, indirizzo;

i viaggi compiuti e quelli in corso: codice viaggio, automezzo utilizzato, l’autista (o gli autisti), una descrizione del carico trasportato, città di partenza, data e ora di partenza, città di destinazione, data e ora di arrivo (se il viaggio è terminato).

a) Definire lo schema concettuale dei dati nel modello E-R e

b) tradurlo nel modello relazionale

c) Definire la base dati in SQL

d) Definire in SQL una tabella virtuale AutistiInViaggio contenente il codice fiscale, cognome, nome, destinazione di tutti gli autisti impegnati in viaggi non ancora conclusi.

42

Si considerino i seguenti fatti relativi ad un istituto di ricerca.

L’istituto è composto di sezioni; una sezione è identificata da un codice; di una sezione interessa il nome, il responsabile, i ricercatori che vi afferiscono.

Un ricercatore è identificato da un codice; di un ricercatore interessa il nome, la sezione di appartenenza, i progetti a cui partecipa.

Un progetto è identificato da un codice; di un progetto interessa l’obiettivo, il responsabile, i ricercatori che vi partecipano

d) Modellare i fatti sopra descritti nel modello concettuale

e) Tradurre lo schema concettuale in uno schema relazionale in SQL

43

Si prendano in esame i seguenti fatti, riguardanti il crimine organizzato:

I criminali sono organizzati in bande; di ciascuno di essi, identificato da un codice, interessano i dati anagrafici, la banda cui è affiliato, gli eventuali crimini addebitategli con l’anno in cui gli investigatori hanno formulato l’incriminazione.

Di ogni banda, identificata da un codice, interessa il nome, il capo e gli altri affiliati, le altre bande con cui eventualmente collabora. Una banda è costituita da almeno tre affiliati, compreso il capo.

Di ogni crimine, identificato da un codice, interessa il luogo e la data, le persone colpite, gli eventuali responsabili.

a) Modellare i fatti sopra descritti nel modello concettuale

b) Tradurre lo schema concettuale in uno schema relazionale in SQL

c) Definire una interrogazione in SQL che data una banda, restituisca tutti i crimini addebitati ai suoi affiliati

44

Si considerino le seguenti informazioni di interesse di una ditta di autotrasporti.
Le informazioni che interessano riguardano:
Gli automezzi: caratterizzati da targa, marca, portata;
Gli autisti: codice fiscale, cognome, nome;
I viaggi compiuti: codice viaggio, automezzo utilizzato, gli autisti del mezzo (possono essere più di uno), una descrizione del carico trasportato, città di destinazione.

  1. Definire lo schema concettuale dei dati nel modello E-R

  2. Tradurre lo schema E-R in uno schema relazionale

  3. Query SQL:

  • Trovare gli automezzi con portata compresa tra le 300 e 500 tonnellate che siano della Ford oppure della Fiat

  • Trovare i nomi degli autisti che hanno viaggiato verso Firenze portando verdura

  • Trovare i nomi degli autisti che hanno guidato un veicolo Fiat sino a Lucca portando verdura o carne

  • Trovare tutti i veicoli che hanno viaggiato sino a Pisa guidati da Marco Rossi o Franco Bianchi

45

Gestione di un negozio di dischi
Descrizione del progetto
Si vuole realizzare una base di dati per automatizzare la gestione di un negozio di dischi.
Si richiede che ogni album presente nel catalogo venga identificato in base ad un codice. Le informazioni riguardanti un album di cui si vuole tenere traccia sono: il titolo, l’anno di uscita, la case editrice, il genere (classica, jazz, pop, new age, rock, ...) ed il supporto di registrazione (CD, minidisk, cassetta). Per semplicità, se uno stesso album viene memorizzato su, ad esempio, due supporti differenti, i dati relativi a quell’album devono essere registrati separatamente.
Di ciascun album si vogliono registrare le seguenti informazioni sui brani in esso contenuti: titolo e durata totale (espressa in secondi). Nulla vieta che uno stesso brano faccia parte di più di un album (ad es. le raccolte contengono brani appartenenti, in genere, ad album già pubblicati).


IVA    PAESE
20%   Italia
25%   America
15%   Altro


Di ogni artista si vuole sapere, oltre all’indicazione del nome, se nel corso della sua attività artistica ha lavorato in differenti gruppi musicali tenendo traccia, per ogni gruppo nei quali ha lavorato, del nome del gruppo, dell’anno di affiliazione ed eventualmente di abbandono.
Di ogni album ovviamente possono essere presenti più copie e per ciascuna di essa si vuole memorizzare il prezzo al netto di IVA ed un codice identificativo necessario alla corretta allocazione del bene nel magazzino. Le differenti tipologie di Iva applicabili alle copie degli album, in base al paese di importazione, sono presentate nella tabella a lato.
Si vuole inoltre tenere traccia dei clienti che effettuano acquisti nel negozio, ai fini di effettuare delle statistiche di vendita. In particolare, di ogni cliente si vuole conoscere il nome, il cognome ed il codice della tessera identificativa personale.
Ogni copia presente può essere venduta ad un cliente il quale può acquistare, se lo desidera, anche più copie dello stesso album; si vuole inoltre tenere traccia della data in cui una copia è stata venduta.
Si richiede di:
1) Definire lo schema E-R;
2) Tradurre lo schema E-R in uno schema relazionale;
3) Definire le relazioni trovate al punto 1 in Access, stabilendo domini opportuni per gli attributi ed implementando ogni vincolo di integrità che si ritenga opportuno (giustificando le scelte effettuate);
4) Popolare la base di dati creata in modo tale che vi sia un data-set coerente con le informazioni necessarie per svolgere il punto 5.
5) Effettuare sulla base di dati così definita le seguenti operazioni:
a) Realizzazione di una maschera per la visualizzazione di tutte le copie degli album presenti in negozio, con l’indicazione del prezzo al netto di IVA e del prezzo comprensivo di IVA;
b) Individuazione mediante maschera di tutti i gruppi musicali memorizzati nel DB con relativa sottomaschera per la visualizzazione dei rispettivi componenti;
c) Definizione di una maschere per l’immissione di nuove “associazioni” tra Album e Brani in esso contenuti (utilizzando delle combo-box per visualizzare sia gli album che i brani).

Realizzare le seguenti query:
1) Scrivere una query che restituisca i titoli degli album dei “883”;
2) Scrivere una query che restituisca tutti i titoli delle canzoni di “U2” appartenenti ad album pubblicati prima del 2000;
3) Dato un gruppo individuare tutti gli artisti che ne hanno fatto parte, e durante quale intervallo di tempo;
4) Dato un titolo di una canzone individuare tutti gli album in cui è contenuta;
5) Dato un artista ed una data, selezionare tutti i titoli degli album venduti per quell’artista in quella data;
6) Dati come parametri un artista e un gruppo, scrivere una query che restituisca l’elenco delle canzoni realizzate dal questo gruppo quando l’artista ne faceva parte;
7) Dati come parametri: anno di pubblicazione e nome casa editrice, selezionare tutti gli album editi dalla casa editrice nell’anno specificato;
8) Dato un artista restituire il numero totale di canzoni da lui eseguite;
9) Dato un gruppo, contare per ogni album, le copie vendute;
10) Calcolare per ogni genere musicale quanti album sono inseriti in catalogo;
11) Dato come parametro il nome della casa editrice, una data inizio ed una data fine, contare il numero delle copie di album vendute in quel periodo per quella casa editrice;
12) Per ogni copia venduta calcolare il prezzo ivato guadagno;
13) Calcolare il totale dell’entrate per ogni anno (prezzo + IVA);
14) Creare un tabella riassuntiva che metta in risalto per ogni gruppo il numero di album venduti in ogni anno;
15) Dato un giorno X, calcolare il ricavato complessivo;
16) Dato un cliente X, calcolare il numero di copie comprate da tale cliente nell’anno 2002 e la media mensile riferita all’anno 2002;
17) Dato un album X, calcolare la durata complessiva di tale album in ore, minuti e secondi;
18) Calcolare la disponibilità (copie non vendute) di un album dato come parametro.