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