Il progetto di Basi di Dati e Sistemi Informativi consiste nella realizzazione di un database relazionale.
Alcuni esempi banali sono la gestione di un campionato di (fanta)calcio, il sistema di contabilità di un negozio/azienda,
le prenotazioni per un albergo, i noleggi di una videoteca.
Per l'approvazione della scelta del progetto dovete inviarmi per e-mail la descrizione dei requisiti del problema.
Non saranno accettati problemi generici o comunque privi di specificità (ad esempio, gestione di un magazzino merci, gestione
del portafoglio clienti). Esiste un database dei progetti sottoposti nella storia di questo corso, quindi per favore concedetevi la
dignità di non copiare.
La relazione, da inviare per e-mail in formato pdf, deve discutere le problematiche di analisi dei requisiti, progettazione, e implementazione
secondo la seguente scaletta:
Analisi dei requisiti (1 punto): descrizione dei requisiti in linguaggio naturale, rilevamento e correzione delle ambiguità.
Organizzare un glossario dei termini e dei concetti fondamentali (con descrizione, indicazione sinonimi/omonimi o altre anomalie,
eventuali correzioni, collegamenti) ed una tabella con le operazioni (>= 12) che il database deve soddisfare, equamente suddivise in
interrogazioni ed aggiornamenti; evitare operazioni ripetitive (esempio: inserimento cliente + inserimento fornitore + ...) ed interrogazioni
troppo banali (esempio: stampare elenco clienti), cercando di privilegiare query complesse (esempio: trovare i rappresentanti che nel mese
scorso hanno fatturato sopra la media). Verrà valutato anche il livello dell'italiano.
Progettazione concettuale (2 punti): scelta della strategia di progetto, sviluppo dello schema E/R, eventuale integrazione di viste
parziali, presentazione dello schema E/R finale.
Seguire fedelmente l'analisi dei requisiti, mostrando passo dopo passo l'evoluzione dello schema E/R secondo la strategia adottata. Esistono diversi tool per disegnare schemi E/R, ad esempio MySQL Workbench, DBDesigner, Dia, Java Diagrammi ER.
Progettazione logica (4 punti): ottimizzazione, semplificazione, traduzione, normalizzazione (1 punto per ogni fase).
Ottimizzazione (facoltativa): individuare almeno una scelta progettuale che necessita di analisi del carico di lavoro
(esempi: attributo o associazione derivata, porzione di schema ristrutturabile tramite accorpamenti orizzontali/verticali,
semplificazione di gerarchia); definire quindi tutte le informazioni (volume dei dati e specifica delle operazioni) che sono
utili a calcolare i costi di accesso sulla base dei quali operare la scelta ottimale.
Semplificazione: ristrutturare gerarchie di generalizzazione, attributi composti e a valori multipli, identificatori esterni.
Traduzione: passare dallo schema E/R ristrutturato al modello relazionale, evidenziando chiavi primarie e importate.
Normalizzazione: verificare le forme normali 2NF, 3NF, BCNF.
Progettazione fisica (1 punto, facoltativa): scegliere una tabella oggetto di interrogazioni frequenti e, sulla base di stime personali del carico di lavoro, verificare se e quali tecniche di organizzazione dei dati (indici, hashing, ecc.) consentono di ottimizzare gli accessi.
Database MySQL (1 punto): lo schema di database relazionale finale deve essere implementato in un database MySQL.
Inoltre, tutte le operazioni devono essere presentate in termini di istruzioni MySQL. La definizione di costrutti complessi
(transazioni, procedure e trigger) comporta un bonus di (fino a) 1 punto.
Applicazione client (1 punto, facoltativa): realizzare un modulo software in C (o in PHP) di interfaccia al database MySQL
per la realizzazione di almeno tre operazioni (tutte nel caso di PHP).
Per l'implementazione si consiglia di ricorrere all'account MySQL abilitato in laboratorio STI.
I sorgenti relativi alla fase 5. vanno allegati alla relazione.
Le applicazioni devono essere compatibili con il DBMS installato in laboratorio STI, per l'accesso al quale rivolgersi al docente
e consultare il manuale breve e quello ufficiale:
Template del progetto.