Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – [email protected] – Università della Basilicata Progettazione della Base di Dati >> Sommario Sommario Introduzione Il Processo di Sviluppo dell’Applicazione Analisi Modello Concettuale Progettazione Il Processo di Sviluppo della Base di Dati Qualità della Base di Dati G. Mecca - [email protected] - Basi di Dati 2 Progettazione della Base di Dati >> Introduzione Introduzione Scopo di questo ciclo di lezioni studiare l’analisi e la progettazione di basi di dati una delle attività fondamentali del progetto di applicazioni su basi di dati Approccio usato utilizzeremo UML e non il modello entità-relazione tradizionale G. Mecca - [email protected] - Basi di Dati 3 Progettazione della Base di Dati >> Introduzione Introduzione Attenzione tradizionalmente: il progetto dei dati è stato considerato un’attività separata dal progetto dell’applicazione questo approccio non è coerente con la filosofia della programmazione ad oggetti Di conseguenza il progetto della base di dati deve essere visto nell’ambito del prog. dell’applicazione G. Mecca - [email protected] - Basi di Dati 4 Progettazione della Base di Dati >> Il Processo di Sviluppo Processo di Sviluppo dell’Applicazione Applicazioni di complessità medio-alta è necessario un processo di sviluppo sistematico insieme di fasi e modelli Il punto di partenza i requisiti iniziali (tipicamente incompleti) Il punto di arrivo il sistema installato e funzionante (da manutenere) G. Mecca - [email protected] - Basi di Dati 5 Progettazione della Base di Dati >> Il Processo di Sviluppo Il Processo di Sviluppo: Le Attività Studio di Fattibilità Analisi dei Requisiti Progettazione Sviluppo Test Installazione ed Uso Manutenzione G. Mecca - [email protected] - Basi di Dati 6 Progettazione della Base di Dati >> Il Processo di Sviluppo Il Processo di Sviluppo Tradizionalmente metodologie “pesanti” (molto rigide e prescrittive) processo in cascata: prima di cominciare la fase successiva è necessario completare la precedente processo “monolitico” è dimostrata l’inefficacia di questo approccio nello sviluppo del software moderno G. Mecca - [email protected] - Basi di Dati 7 Progettazione della Base di Dati >> Il Processo di Sviluppo Il Processo di Sviluppo Recentemente metodologie “agili” (più flessibili e libere) cicli brevi di progetto e sviluppo in ogni ciclo si svolgono molte delle attività elencate es: Xtreme Programming (http://www.extremeprogramming.org) es: RUP (Rational Unified Process) G. Mecca - [email protected] - Basi di Dati 8 Progettazione della Base di Dati >> Il Processo di Sviluppo Studio di Fattibilità Fase preliminare non rientra nel ciclo di progetto e sviluppo Obiettivi valutazione dei costi e dei benefici normalmente richiede un’analisi dei requisiti preliminare è necessario valutare aspetti organizzativi (impatto del sistema inf. sull’organizzazione) si sceglie la piattaforma tecnologica G. Mecca - [email protected] - Basi di Dati 9 Progettazione della Base di Dati >> Analisi dei Requisiti Analisi dei Requisiti Obiettivo capire come funziona la realtà di interesse capire come deve funzionare l’applicazione studiare le funzioni dell’applicazione studiare i dati dell’applicazione Un’utile strumento per cominciare i Casi d’Uso di UML (“Use Cases”) carte CRC (“Class-Responsiblity-Collabor.”) G. Mecca - [email protected] - Basi di Dati 10 Progettazione della Base di Dati >> Analisi dei Requisiti Modello Concettuale Descrizione dei dati dell’applicazione diagramma delle classi alto livello di astrazione (ancora indipendente dall’implementazione) Vari scopi analizzare le relazioni tra i dati (il modello) guidare la progettazione delle classi e dei componenti dell’applicazione guidare la progettazione della base di dati G. Mecca - [email protected] - Basi di Dati 11 Progettazione della Base di Dati >> Progettazione Progettazione Obiettivo definire l’architettura dell’applicazione in termini di componenti definire la struttura della base di dati (tabelle, attributi, vincoli) definire la struttura delle classi (proprietà, metodi, visibilità) Dovrebbe guidare la fase di sviluppo G. Mecca - [email protected] - Basi di Dati 12 Progettazione della Base di Dati >> Progettazione Il Processo di Sviluppo In questo corso ci concentriamo esclusivamente sulle attività collegate alla progettazione dei dati visione molto parziale del processo la visione sarà ampliata nell’ambito del corso di ingegneria del software, in cui le attività descritte qui sono inserite in un processo più ampio (es: RUP) G. Mecca - [email protected] - Basi di Dati 13 Progettazione della BD >> Il Processo di Sviluppo della BD Il Processo di Sviluppo della BD Punto di partenza definizione del modello concettuale dei dati Progettazione Logica dallo schema concettuale viene derivato uno schema logico standard e i necessari schemi esterni Progettazione Fisica lo schema logico viene sottoposto a verifica e viene ottimizzato Sviluppo e Manutenzione G. Mecca - [email protected] - Basi di Dati 14 Progettazione della BD >> Il Processo di Sviluppo della BD Il Processo di Sviluppo della BD Progettazione logica viene condotta sulla base di un semplice algoritmo sistematico Progettazione fisica attività mista: progettazione e “tuning” richiede di valutare le prestazioni difficilmente sistematizzabile conta molto l’esperienza G. Mecca - [email protected] - Basi di Dati 15 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Obiettivo della progettazione della bd produrre una base di dati di qualità Qualità della base di dati “normalizzazione” (progettazione logica): garantisce che la base di dati non presenta anomalie efficienza delle operazioni (progettazione fisica) G. Mecca - [email protected] - Basi di Dati 16 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Una tabella non normalizzata studente annoCorso corso voto docente Pinco Palla 1 Programmazione 27 F. Totti Pinco Pietro 2 Programmazione 24 F. Totti Bruno Pasquale 1 Basi di Dati 30 C. Vieri Rossi Paolo 2 Basi di Dati 25 C. Vieri Pinco Palla 1 Tecnologie Web 30 A. Del Piero Bruno Pasquale 1 Programmazione 21 F. Totti NOTA: supponiamo che nella base di dati non ci siano altre tabelle per studenti, corsi ed esami G. Mecca - [email protected] - Basi di Dati 17 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Anomalie di aggiornamento se l’anno di corso di uno studente varia, è necessario modificare il valore in diverse ennuple Anomalie di inserimento se uno studente non ha ancora sostenuto esami non è possibile inserirlo nella base di dati Anomalie di cancellazione se ad uno studente vengono annullati gli esami sostenuti, dobbiamo cancellarlo G. Mecca - [email protected] - Basi di Dati 18 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Intuitivamente il problema è legato al fatto che la relazione descrive dati relativi a “concetti” diversi In particolare gli studenti ed il loro anno di corso i corsi ed il loro docente gli esami sostenuti dagli studenti per i corsi ed il voto riportato G. Mecca - [email protected] - Basi di Dati 19 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Per questa ragione, si dice che “la tabella non è normalizzata” Per ottenere una bd normalizzata sarebbe stato necessario progettare le tabelle in modo che ciascuna descriva un concetto ovvero “normalizzare” per decomposizione la tabella originale G. Mecca - [email protected] - Basi di Dati 20 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati studente Pinco Palla corso docente Programmazione F. Totti Basi di Dati C. Vieri annoCorso corso Tecnologie Web A. Del Piero 1 Programmazione voto docente 27 F. Totti 24 F. Totti Pinco Pietro 2 Programmazione Bruno Pasquale 1 Basi di Dati 30 studente corso Basi di Dati 25 Pinco Palla Programmazione Tecnologie Web 30 Pinco Pietro Programmazione Programmazione 21 Bruno Pasquale Basi di Dati Rossi Paolo 2 studente annoCorso Pinco Palla 1 Pinco Palla 1 Bruno Pasquale 1 Pinco Pietro 2 C. Vieri voto C. Vieri 27 A. Del Piero 24 F. Totti 30 Bruno Pasquale 1 Rossi Paolo Basi di Dati 25 Rossi Paolo 2 Pinco Palla Tecnologie Web 30 Bruno Pasquale Programmazione 21 G. Mecca - [email protected] - Basi di Dati 21 Progettazione della BD >> Il Processo di Sviluppo della BD >> Qualità Qualità della Base di Dati Il nostro approccio non ci porremo il problema della normalizzazione descriveremo un algoritmo di progettazione che garantisce di produrre basi di dati normalizzate purché si parta da uno schema concettuale di qualità (corretto e non ridondante) effettueremo verifiche continue di qualità G. Mecca - [email protected] - Basi di Dati 22 Progettazione della Base di Dati >> Sommario Sommario Introduzione Il Processo di Sviluppo dell’Applicazione Analisi Modello Concettuale Progettazione Il Processo di Sviluppo della Base di Dati Qualità della Base di Dati G. Mecca - [email protected] - Basi di Dati 23 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - [email protected] - Basi di Dati 24