Progetto Finale: Progettazione di un database e di una applicazione Docenti: Roberto Basili, Claudia Amari Corso di Basi Di Dati a.a. 2003-2004 Norme Generali Il progetto fa parte della valutazione gobale del corso e come il test finale esso va necessariamente completato prima della verbalizzazione dell esame. Lo studente dovrebbe utilizzare un ambiente di sviluppo di un database, un linguaggio procedurale (ad es. PL/SQL per Oracle) ed eseguire le seguenti attivita : progettare lo schema concettuale del problema proposto implementare i costrutti SQL necessari alla creazione ed alla generazione di un instanza del database progettare la componente procedurale richiesta, cioe la applicazione implementare la componente procedurale in PL/SQL, PHP, ODBC o JDC (a scelta) documentare l intero progetto Lo studente dovra quindi consegnare una relazione contenete sezioni distinte per le seguenti attivita progettazione concettuale progettazione dello schema logico descrizione (o listing) dello script di generazione del database progettazione (algoritmica) della componente procedurale implementazione della componente procedurale test di funzionalita Si vuole osservare che ogni progetto, partendo dalle specifiche (parziali) fornite da questo documento, puo essere sviluppato secondo scelte progettuali diverse a discrezione dello studente. La relazione dovra quindi descrivere le assunzioni aggiuntive considerate da ogni specifico progetto. Un progetto puo essere svolto da un gruppo formato al massimo da due studenti. Ogni gruppo dovra consegnare una sola relazione. La data ultima di consegna dei progetti e quella del 5 Dicembre 2003. 1
1 Progetto 1: Un Punto Vendita su Web Una azienda fornitrice di sw per applicazioni Web decide di realizzare un suite di prodotti per l e-commerce e deve utilizzare un modello dei dati relazionali progettando un database. Si trattera quindi di modellare la nozione di negozio virtuale e di implementarne i requisiti generali. Il negozio virtuale consente la vendita di prodotti fisici (i soli che vengono rititrati e consegnati dai fornitori) e di un insieme indipendente di prodotti digitali (in genere software), che non richiedono la consegna, ma possono essere scaricati dal negozio stesso (via rete). L applicazione deve: (1) garantire la contabilizzazione di ogni vendita (insieme dei prodotti e prezzi), cioe la produzione di un documento fiscale per ogni vendita avvenuta; (2) segnalare al servizio di consegne i dettagli necessari al completamento della consegna (cioe i fornitori convolti, gli indirizzi di essi per il ritiro della merce e le quantita delle merci), (3) rendicontare la pubblicita effettuata per conto dei distributori in modo automatico quando per un certo fornitore si eccede il numero minimo di accessi. Il servizio di consegne richiede al termine di una vendita un documento in cui tutta la merce da ritirare e gli indirizzi dei vari fornitori siano specificati. Inoltre deve notificare anche mensilmente le pubblicita effettuate. Poiche le pagine disponibili per il download dei prodotti digitali contengono pubblicita dei distributori degli stessi prodotti, il numero di accessi a tali pagine (uno per ogni vendita di prodotti diretti) va registrata: in proporzione al numero di accessi si puo infatti ottenere uno sconto dal distributore. Ogni prodotto ammette un unico prezzo di vendita, oltre a caratteristiche quali la descrizione, ed un codice. I prodotti fisici hanno un solo fornitore (con il suo indirizzo), un ingombro (dimensioni e peso) ed un costo di spedizione aggiuntivo. Ogni vendita puo contenere prodotti fisici e digitali. I prodotti digitali hanno un solo distributore che utilizza la pagina di accesso (download) per la propria pubblicita. Tale distributore e caratterizzato da un nome, e dall indirizzo Web per la comunicazione delle pubblicita avvenute in un mese. Ogni prodotto digitale garantisce un certo introito pubblicitario che il sistema di e-commerce dovrebbe esigere automaticamente quando si supera un tetto di accessi. 1.1 Componente procedurale a) Generazione a video di un report complessivo (fiscale) di ogni vendita che includa i dati del cliente, l importo compessivo, i prodotti acquistati, il loro produttore (distributore/fornitore) e l importo complessivo; b) Generazione del documento di consegne che stampi a video tutti i dettagli richiesti (fornitori, indirizzi, merci, quantita, prezzi al fornitore) per le consegne di prodotti fisici; c) Generazione del report mensile delle pubblicita effettuate. Tale report corrisponde ad ogni distributore (coinvolto in almeno una vendita di prodotti digitale). Si richiede la stampa di un report per ogni distributore. 2
2 Progetto 2: Sicurezza sulle strade Il Ministero dei Trasporti decide di automatizzare il controllo delle violazioni del codice stradale e della cosiddetta patente a punti. Il servizio dovrebbe consentire alle forze dell ordine addette al controllo stradale di verificare al momento della constatazione di violazione la situazione corrente di ogni veicolo (nel caso in cui non fosse disponibile il guidatore, ad es. autovelox) o del responsabile del veicolo. Il servizio dovrebbe consentire di decidere all istante la eventuale sospensione della patente ed il suo ritiro. Inoltre si prevede che il servizio consenta agli uffici di polizia municipale coinvolti di essere allertati ogni qualvolta una violazione si avvicini ai limiti imposti dai punti rimanenti sulla patente del cittadino coinvolto. Tale controllo sara effettuato sull archivio corrente e riportera eventuali notizie precedenti dall archivio storico generando in automatico un report da inviare agli uffici di polizia competenti. Ogni veicolo ha un responsabile che e il suo intestatario. Ogni intestatario e caratterizzato da una patente di guida oltre che alle usuali informazoni anagrafiche (data di nascita e domicilio) Ogni patente ha alla sua emissione un ammontare di punti pari a 20 e sono assegnati ad ogni violazione (o tipo di violazione) un certo numero di punti (max 10) da scalare al momento della constatazione. Una violazione avviene in un certo luogo, data ed ora ed e sempre legata ad un ufficiale ed un veicolo con il suo responsabile (cioe il conducente, o l intestatrio del veicolo nel caso in cui questo non fosse presente). Se la patente di guida del responsabile di una violazione e valida da meno di 10 anni allora la penalizzazione in punti al riscontro di una violazione deve essere raddoppiata. All avvicinarsi dei punteggi rimanenti allo 0, i guidatori debbono essere invitati dagli uffici reponsabili a frequentare corsi di guida per il recupero: tali corsi (tenuti da agenzie abilitate) daranno diritto ad un recupero di credito di 5 punti. Il sistema dovrebbe consentire tutte le interrogazioni necessarie ad un agente di polizia (o ufficiale) la consultazione (mediante una opportuna interfaccia, per es. Web) dell archivio per la verifica della circostanze di ritiro patente. Inoltre agli uffici responsabili del Ministero deve essere possibile la raccolta dei dati statistici sul numero di patenti e conducenti coinvolti da violazioni in certi periodi temporali e la sintesi di risultati del tipo numero violazioni in media rispetto al livello dei punti delle patenti. Questo meccanismo di documentazione va effettuato da ogni Regione e comnicato entro ogni mese al Ministero Centrale. 2.1 Componente procedurale a) La consultazione mediante interfaccia grafica dello stato della patente di un guidatore o del responsabile di una violazione. Tale interfaccia dovra pure prevedere le azioni d ufficio di sottrazione dei punti per ogni violazione. Una famiglia di utenti (cioe i cittadini) pota inoltre accedere ai propri dati per di volta in volta verificare lo stato della propria patente. 3
b) La costruzione del report di giudatori in stato di sospensione, in procinto di sottoporsi alla sospensione e quindi in dovere di seguire i corsi di riabilitazione. c) La costruzione del report con cui le Regioni riportano (per livello di punti nella patente) le statistiche sulle violazioni. 4
3 Progetto 4: Un dizionario semantico multilingue Una softwarehouse decide di realizzare un sistema per l acceso alla informazione testuale in lingue diverse. Il database sottostante dovra rappresentare le definizione dei concetti validi per le diverse lingue, in lingue diverse (cioe una descrizione in ogni lingua) e le relazioni di traduzione esistenti (cioe le traduzioni dei concetti nelle diverse lingue). Si crei una istanza del database per le due lingue inglese ed italiano. Ogni concetto si preserva tra una lingua e l altra anche se in alcune lingue non esistono parole che lo rappresentano. Esso e quindi presente una sola volta nel database anche se deve avere una sua definizione nelle due diverse lingue. Ogni parola si collega a tutti i concetti per la descrizione dei quali e usata. Per esempio la parola piano sara collegata almeno al concetto piano/pianoforte ( piano in inglese) ed a quello di piano/progetto ( plan in inglese). Le parole possono essere suddivise a priori in categorie grammaticali quali verbi e nomi, in modo che concetti per i nomi siano sempre ditinti dai concetti per i verbi. Il sistema dovrebbe consentire tutte le interrogazioni necessarie ad un traduttore per specifica una parola in una lingua e determinare le sue traduzioni, relative ai diversi concetti. Dovrebbe inoltre garantire interrogazioni per piu parole, cioe tali da stabilire il significato di una parola (ad es. piano/pianoforte) mediante l interrogazione: Determina la (o le) traduzione(i) comune(i) delle parole piano e pianoforte E facoltativo determinare una rappresentazione nel database di una relazione di generalizzazione/specializzazione tra i concetti, dove ad esempio informazioni come Un cane e un mammifero Un mammifero e un animale siano anch esse memorizzate nel database. In tal caso tale relazione particolare ( E UN ) tra tutti i concetti potra essere utilizzata per interrogazioni del tipo, Determina tutte le traduzioni dell animale boa in inglese che dovrebbe riportare solo boa (boa constrictor) e non il corrispondente buoy traduzione inglese della per la boa marina. 3.1 Componente procedurale a) Il caricamento della basi di dati da un insieme di file contenenti la elencazione dei concetti e le loro descrizioni, nelle varie lingue le relazioni tra le parole di una lingua (per volta) ed i vari concetti le relazioni tra concetti (di tipo E UN ) se necessarie b) La stampa per una parola di tutte le definizioni dei concetti ad essa collegati e per ognuna la lista delle tradizioni nell altra lingua. Tale stampa deve essere possibile per entrambe le lingue. c) (Facoltativo) Data una frase (o meglio una sequenza di un numero k, fissato, di parole) letta da file, la generazione di un nuovo file (output) che contenga tutte le possibili traduzioni parola per parola (cioe tutte le possibili sequenze di k parole nella lingua di arrivo). 5