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 unimpresa
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:
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.
-
Le officine, con nome,
ragione sociale, indirizzo e telefono.
-
Le automobili, con
targa, modello e proprietario.
-
I clienti (proprietari
di automobili), con codice fiscale, cognome, nome e telefono. Ogni
cliente può essere proprietario di più automobili.
-
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.
-
I pezzi di ricambio,
con codice, nome e costo unitario.
-
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.
-
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).
-
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.
-
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.
-
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:
-
di ciascun veicolo
interessa registrare la targa, la cilindrata, i cavalli fiscali, la
velocità, il numero di posti e la data di immatricolazione;
-
i veicoli sono
classificati in categorie (automobili, ciclomotori, camion,
rimorchi, ecc.);
-
ciascun veicolo
appartiene ad uno specifico modello;
-
tra i dati relativi ai
veicoli, vi µe la codifica del tipo di combustibile utilizzato;
-
di ciascun modello di
veicolo µe registrata la fabbrica di produzione e il numero delle
versioni prodotte;
-
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:
-
I pazienti, con codice
fiscale, nome, cognome e data di nascita.
-
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.
-
I medici, con un
numero di matricola, cognome, nome e data di laurea.
-
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.
-
Per ogni medicina sono
rilevanti un codice identificativo, un nome e un costo.
-
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:
-
per ogni dipendente,
il codice identificativo, il nome e il cognome, le eventuali persone
a carico, l'indirizzo e il reparto di appartenenza;
-
per ogni reparto, il
nome, i dipendenti, il responsabile del reparto e gli articoli
in vendita;
-
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);
-
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.
-
Definire lo schema
concettuale dei dati nel modello E-R
-
Tradurre lo schema E-R
in uno schema relazionale
-
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. |