Non Frequentanti - Università degli Studi di Milano
Transcript
Non Frequentanti - Università degli Studi di Milano
Corso di Gestione dell’Informazione Studenti NON frequentanti A.A. 2008/2009 Progettazione di una base di dati Ufficio della Motorizzazione 1 Scopo del progetto Si vuole realizzare un’applicazione base di dati per la gestione di un ipotetico ufficio della motorizzazione. 2 Gruppo di lavoro Il progetto deve essere svolto da gruppi di al più 3 studenti. Il progetto pensato per essere svolto da 3 persone, per cui si incoraggia gli studenti a formare gruppi da tre persone. Il gruppo si deve registrare per mezzo del modulo di iscrizione che si trova sul sito del corso. 3 Premessa Nel seguito viene descritto in maniera informale il dominio applicativo di interesse. Si sottolinea che, come in genere avviene nei casi reali, la specifica fornita pu non essere completa e pu presentare contraddizioni e/o ambiguità. E’ compito del progettista di basi di dati individuare eventuali punti critici, analizzarli e proporre soluzioni progettuali congruenti con l’intero sviluppo del progetto. Il risultato di questa fase di analisi dovrà essere adeguatamente argomentato nella documentazione di progetto in cui andranno discusse e motivate tutte le scelte progettuali effettuate. 4 Descrizione del dominio applicativo Si presume l’esistenza di un certo numero di produttori di automobili ciascuno identificato da un nome (FIAT, FORD ecc.). Per i produttori si è interessati a informazioni relative al nome, l’indirizzo (di un’eventuale sede centrale), telefono (eventuale numero verde), la ragione sociale e l’amministratore delegato. I dati di nuovi produttori possono essere immessi in ogni momento, se il produttore ha l’autorizzazione per iniziare l’attività commerciale. L’autorizzazione non può essere ritirata e non più di cinque produttori possono essere in attività contemporaneamente. Un produttore è considerato attivo finché possiede automobili registrate come prodotte da lui e non ancora vendute; nel momento in cui un produttore non possiede auto, il suo permesso di operare può essere sospeso. I dati di un produttore possono venire eliminati solo quando viene eliminata la storia di tutte le auto da lui prodotte. Per ogni automobile si è interessati ad informazioni circa il modello, l’anno di produzione, il numero di serie assegnatogli dal produttore, unico fra le automobili da lui prodotte ed il costo. I dati relativi ad un’automobile vengono immessi all’atto della sua registrazione presso l’ufficio della motorizzazione. Al momento della registrazione, all’automobile viene assegnato un numero, unico per ciascuna automobile e non modificabile, e la data di registrazione. Il produttore viene registrato come primo proprietario. Un’automobile può essere registrata in qualsiasi giorno lavorativo dell’anno in cui è stata costruita, ma può essere registrata solo entro il 31 gennaio se costruita nell’anno precedente. Nel caso di 1 distruzione, viene registrata la data di distruzione, e da questo momento l’automobile non puó più essere trasferita. Infine la storia di un automobile va conservata per almeno due anni dopo la sua distruzione. I possibili modelli di automobile sono Panda, Uno, Escort ecc. Le automobili di ciascun modello sono prodotte dallo stesso produttore, il quale è libero di introdurre nuovi modelli sul mercato in qualsiasi momento. Il nome di ciascun modello è unico fra tutti i modelli registrati. Le automobili di uno stesso modello hanno lo stesso consumo di benzina. Un modello ha una potenza di almeno 6 cavalli e una cilindrata compresa fra 400 e 3.000 cc. I dati su un modello vanno conservati fino a che esiste nella base di dati un’automobile di tale modello. Le automobili di un certo modello non possono essere registrate se tale modello non è ancora noto all’ufficio della motorizzazione. I rivenditori sono preposti alla distribuzione di automobili nuove, o usate, ai privati. Di un rivenditore interessano il nome, l’indirizzo, il telefono e l’eventuale numero di fax. Nuovi rivenditori possono sorgere in ogni momento, ma la loro attività commerciale può iniziare solo se hanno ricevuto il permesso dagli uffici competenti. Un rivenditore può trattare automobili nuove di al piú tre produttori diversi. Ogni rivenditore è considerato operante finché possiede automobili; in caso contrario può richiedere la sospensione del permesso di operare. I dati di un rivenditore non operante vengono eliminati solo se questo non è stato proprietario di un’auto di cui si conserva la storia. I privati sono persone proprietarie di una o più automobili già registrate. Di un privato interessano il codice fiscale, il nome, l’indirizzo e il telefono. I dati dei privati vengono immessi con l’acquisto della prima automobile, ed eliminati solo se essi non sono stati proprietari di un’automobile di cui si conserva la storia. In ogni momento un’automobile può essere posseduta: dal suo produttore (automobile invenduta), da un rivenditore, oppure da un privato. All’atto del trasferimento della proprietà di un automobile vengono registrate le seguenti informazioni: un codice che identifica il trasferimento, la data di trasferimento, l’automobile trasferita, il vecchio e il nuovo proprietario. Vi sono norme che vincolano il trasferimento di un’automobile: (a) un’automobile distrutta non può essere trasferita; (b) un’automobile può essere venduta da un produttore solo ad un rivenditore e un produttore non può acquistare automobili; (c) un’automobile può essere venduta da un rivenditore solo ad un privato. Di seguito vengono riportate le operazioni minime che si richiede di sviluppare per la base di dati: 1. Automobili. (a) Registrazione di una nuova auto. (b) Distruzione di un’auto. (c) Registrazione della vendita di un’auto. (d) Eliminazione della storia delle auto distrutte da almeno due anni. 2. Produttori. (a) Registrazione di un nuovo produttore in attesa del permesso di operare. (b) Autorizzazione di un produttore ad operare. (c) Sospensione delle attività di un produttore. 2 (d) Eliminazione di un produttore non operante. 3. Modelli. (a) Registrazione di un nuovo modello. (b) Eliminazione di un modello. 4. Rivenditori. (a) Registrazione di un nuovo rivenditore. (b) Sospensione delle attività di un nuovo rivenditore. (c) Eliminazione di un rivenditore non operante. 5. Privati. (a) Registrazione di un nuovo privato. (b) Eliminazione di un privato. (c) Acquisto di un’auto da parte di un privato. 6. Altre procedure di gestione (di base). (a) Elenco, dato un produttore, delle automobili appartenenti a privati da lui prodotte. (b) Data un auto, restituire la sua storia. (c) Elenco, dato un privato, delle auto in suo possesso non distrutte. (d) Per ogni privato restituire la storia delle auto che sono state in suo possesso, anche distrutte. (e) Elenco dei passaggi di proprietà dell’ultimo mese. (f) Elenco indicante la percentuale di auto vendute da un produttore per modello rispetto alle auto prodotte nell’ultimo anno. (g) Media delle auto vendute da un rivenditore al mese relativa alle vendite dell’ultimo anno. (h) Per ogni produttore determinare il consumo medio di benzina dei modelli da lui prodotti, il modello con consumo massimo e quello con consumo minimo. (i) Determinare lo stato di un’automobile (appartiene a produttore, rivenditore, privati o distrutta). Se non distrutta indicare a chi appartiene. (j) Determinazione della vita media (durata produzione-distruzione) per ogni modello e per ogni produttore. (k) Determinare il modello di macchina con il massimo numero medio di passaggi di proprietà. (l) Determinare i nominativi dei privati che hanno cambiato più automobili. 3 5 Svolgimento dell’esercitazione 5.1 Gestione base di dati con PostgreSQL 1. Si definisca lo schema concettuale Entità-Relazione per la base di dati, evidenziando le entità e le associazioni di interesse, nonché eventuali vincoli di cardinalità e di identificazione, motivando le scelte effettuate. Altri eventuali vincoli devono essere espressi in linguaggio naturale. 2. Si effettui la traduzione dello schema E-R in uno schema E-R ristrutturato equivalente, motivando le eventuali scelte effettuate. 3. Si effettui la traduzione dello schema E-R ristrutturato in un equivalente schema relazionale normalizzato. 4. Si riporti esplicitamente il codice SQL standard delle interrogazioni richieste al punto 4.6. Alcune delle funzionalità richieste potrebbero non essere implementabili con singole query SQL, ma richiedere l’utilizzo di strumenti più avanzati messi a disposizione dal DBMS (viste, stored procedure, script pg-SQL, triggers ...) 5. Fornire gli script PostgreSQL per la creazione delle strutture della base di dati in accordo allo schema relazionale ottenuto alla fine dalla fase di progettazione. La base di dati creata dovrà venir popolata con tutte le informazioni che si ritengono necessarie per una simulazione realistica. Inoltre, si dovranno fornire dati sufficienti almeno a verificare che i vincoli di dominio espressi siano verificati e che in generale le operazioni di cui si richiede l’implementazione funzionino correttamente. 5.2 Realizzazione dell’applicativo in PHP Sviluppo di una applicazione in PHP La base di dati e le operazioni sviluppate nel punto precedente devono essere accessibile via Web. Dal momento che la base di dati contiene informazioni riservate che non possono essere accedute da tutti, si richiede di considerare 3 categorie di utenti. 1. Utente generico. Deve poter vedere solo quelle informazioni che sono considerate di pubblico dominio (a tale utente non deve essere consentito di effettuare operazioni di modifica e cancellazione). 2. Dipendente della motorizzazione. E’ un dipendente della motorizzazione che può accedere a tutte le informazioni contenute nella base di dati (a tale utente è consentito di effettuare qualunque operazione di modifica e cancellazione). 3. Rivenditore (questa categoria di utenti è da considerare solo per i gruppi in cui il cognome del referente inizia con la lettera A-G). Il rivenditore può accedere a informazioni che riguardano le auto che in qualche momento sono state di sua proprietà limitatamente ai periodi in cui sono state di sua proprietà, le informazioni sui trasferimenti che lo coinvolgono, il suo stato (operante o non operante). 4. Produttore (questa categoria di utenti è da considerare solo per i gruppi in cui il cognome del referente inizia con la lettera H-P). Il produttore può accedere a informazioni sulle auto che ha prodotto, inserire nuovi modelli o modificare/cancellare modelli già prodotti (nel rispetto dei vincoli imposti dal testo), accedere alle informazioni sui trasferimenti che lo coinvolgono, il suo stato (operante o sospeso). 4 5. Proprietario (questa categoria di utenti è da considerare solo per i gruppi in cui il cognome del referente inizia con la lettera Q-Z). Il proprietario di auto può accedere ad informazioni che riguardano le auto di sua proprietà, e a tutti i trasferimenti che lo hanno coinvolto. Dopo la prima connessione, l’applicativo deve riconoscere l’utente quando effettua nuove connessioni dalla stessa macchina. E’ compito del gruppo di lavoro identificare quali informazioni sono da considerarsi riservate e quali operazioni possono essere effettuate dalle categorie di utenti. L’applicazione PHP deve consentire di effettuare le usuali operazioni di gestione dati (visualizzazione, cancellazione, modifica) tenendo in considerazione la categoria di utenti. 6 Consegna degli elaborati 6.1 Documentazione da consegnare Per la valutazione del progetto andrà consegnato uno zip file contenente i seguenti files: • una documentazione tecnica digitale (in formato pdf) che illustri il processo di progettazione e le scelte effettuate. In particolare, tale documentazione dovrà contenere almeno: 1. uno schema concettuale (E-R), uno schema concettuale ristrutturato. 2. Descrizione dei vincoli di integrità non direttamente desumibili dallo schema ER con la loro relativa implementazione in SQL. Per quei vincoli che non si possono implementare in PostgreSQL, indicare la soluzione alternativa adottata. 3. il modello relazionale risultante dalla fase di progettazione (con verifica se il modello è in una qualche forma normale). 4. il codice SQL sviluppato per implementare le operazioni richieste. 5. Qualunque altra informazione si ritenga di interesse per la comprensione delle scelte progettuali ed implementative effettuate (tra cui le operazioni che le categorie di utenti possono fare). • Gli script per la realizzazione ed il popolamento della base di dati progettata; • L’applicativo PHP sviluppato. 6.2 Consegna del progetto Il progetto pu essere consegnato in un qualunque momento durante l’anno accademico. L’ultima data utile per consegnare il progetto è il 30 Aprile 2010. Dopo tale data occorrerà consegnare un altro progetto (quello assegnato nel prossimo anno accademico). Il progetto va consegnato sul sito del corso (consegna elettronica). Per quanto riguarda la documentazione tecnica si richiede di utilizzare il template messo a disposizione insieme al testo dell’esercitazione. Nella prima pagina della documentazione devono essere indicate le seguenti informazioni: • Titolo del progetto svolto e della parte specifica assegnata. • Data di consegna. • Nome, cognome e indirizzo email dei componenti del gruppo. 5 • Indicazione di un referente del gruppo. Il docente interagirà SOLO con il referente per quanto riguarda il progetto. • Docente di riferimento. 6