BASI DI DATI Canale unico

Docente coordinatore e verbalizzante: N/D

Modulo 1: II MODULO

Tipologia
Discipline Informatiche
SSD
INF/01
Anno
2º anno
Semestre
2º semestre
CFU
6
Distribuzione delle ore
36 classroom hours
Docenti
TONI MANCINI

Modulo 2: I MODULO

Tipologia
Discipline Informatiche
SSD
INF/01
Anno
2º anno
Semestre
1º semestre
CFU
6
Distribuzione delle ore
36 classroom hours
Docenti
MARIA DE MARSICO

Obiettivi formativi

Al termine del corso gli studenti posseggono le conoscenze di base relative:
- alla teoria dei gruppi;
- alla struttura algebrica di alcuni semplici tipi di gruppi;
- alla risoluzione di sistemi di equazioni lineari;
- al problema della diagonalizzazione di operatori lineari su spazi vettoriali di dimensione finita.

Al termine del corso gli studenti sono in grado di:
- eseguire calcoli all’interno di gruppi;
- risolvere sistemi di equazioni lineari;
- deteminare autovalori ed autovettori di un operatore lineare ed, eventualmente, di diagonalizzarlo.

Risultati di apprendimento attesi

Modulo: II MODULO
Obiettivi generali:
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati

Obiettivi specifici:
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la loro realizzazione.

Conoscenza e comprensione:
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per basi di dati non banali (in particolare per le fasi di: a) raccolta dei requisiti; b) analisi concettuale dei dati e delle funzionalità; c) progettazione della base dati e delle funzionalità) e per la loro realizzazione (utilizzo di DBMS e di linguaggi standard di definizione, interrogazione e manipolazione dei dati).

Applicare conoscenza e comprensione:
Gli studenti saranno in grado di applicare in modo efficace le conoscenze indicate al punto precedente in progetti reali di applicazioni per basi di dati non banali.

Capacità critiche e di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.

Capacità comunicative:
Gli studenti saranno in grado di interagire in modo proficuo con i committenti (per quanto concerne la raccolta dei requisiti) e con altri analisti e progettisti (per quanto concerne le attività di analisi e progettazione di sistemi software non banali).

Capacità di apprendimento:
Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, manualistica tecnica nell'ambito della progettazione di applicazioni per basi di dati.


Modulo: I MODULO
Capacità di analizzare la qualità di una base di dati e di effettuare una eventuale decomposizione dello schema per ottenere la terza forma normale
Capacità di valutare con buona approssimazione l'occupazione di memoria di un indice primario o secondario
Conoscenza delle tecniche di base di controllo della concorrenza

Prerequisiti

Modulo: II MODULO
Si richiede buona conoscenza di:

1) Programmazione imperativa ed object-oriented in un qualunque linguaggio di programmazione di alto livello
2) Tecniche per il progetto di algoritmi e strutture dati
3) Matematica generale, algebra, teoria degli insiemi
4) Logica proposizionale
5) Fondamenti teorici della progettazione e della interrogazione di una base dati relazionale e tecnologie impiegate in DBMS (in particolare: strutture fisiche di rappresentazione, e tecniche per il controllo dell'esecuzione concorrente delle transazioni).


Modulo: I MODULO
Una buona competenza in argomenti di logica.
Una buona competenza nella formulazione/comprensione di algoritmi e nella compilazione di pseudo-codice


Programma dell’insegnamento

Modulo: II MODULO
Le lezioni e le esercitazioni affronteranno il seguente programma, approssimativamente nel suo ordine naturale.
Per ogni punto di primo livello, viene indicata tra parentesi la durata stimata (in percentuale sul totale delle lezioni erogate) della presentazione dei diversi argomenti.

1. Introduzione e cenni di ingegneria del software: attori e ciclo di vita del software (10% circa delle lezioni)

2. Analisi concettuale dei requisiti (50% circa delle lezioni)

2.1. Analisi dei requisiti sui dati mediante diagrammi ER
2.2. Analisi dei requisiti sulle funzionalità mediante diagrammi UML degli use-case
2.3. Formalizzazione della semantica dei diagrammi ER mediante logica del primo ordine e specifiche formali dei vincoli sui dati non esprimibili in ER mediante formule in logica del primo ordine
2.4. Specifiche formali delle funzionalità (operazioni di use-case) mediante pre- e post-condizioni espresse in logica del primo ordine

3. Progettazione di basi di dati relazionali e di applicazioni per basi di dati a partire dall'output della fase di Analisi concettuale dei requisiti (40% circa delle lezioni):

3.1. Progettazione di una base dati relazionale con vincoli a partire da un diagramma ER concettuale con vincoli esterni e informazioni sul carico di lavoro e sui volumi dei dati
3.2. Progettazione delle funzionalità di un'applicazione di basi di dati mediante algoritmi in pseudo-codice e comandi in linguaggio SQL, a partire dalle specifiche formali delle funzionalità
3.3. Il linguaggio SQL: domini, istruzioni select-from-where-group by-having-order by, operatori aggregati, interrogazioni nidificate, operatori insiemistici, istruzioni insert, delete, update, create/drop domain, create/drop table, vincoli di chiave e di integrità referenziale, clausole check, trigger, viste, controllo dell'accesso, transazioni, indici.


Modulo: I MODULO
Introduzione ai sistemi di gestione di basi di dati (2 ore)

Cenni storici.
Aspetti caratterizzanti dei sistemi di gestione di basi di dati.
Evoluzione di modelli e sistemi.

Il modello relazionale (30 ore)

Concetti di base: dominio, attributo, relazione, n-upla, schema.
I linguaggi di interrogazione (algebra relazionale, linguaggi relazionalmente completi).

Teoria della normalizzazione

Dipendenze funzionali.
Chiave di una relazione
Terza forma normale.
Assiomi di Armstrong e chiusura di un insieme di dipendenze.
Chiusura di un insieme di attributi.
Copertura minimale di un insieme di dipendenze.
Scomposizioni che hanno un join senza perdita.
Scomposizioni che preservano le dipendenze.

L’organizzazione fisica dei dati (14 ore)

La memoria secondaria.
Record fisici e record logici.
Puntatori.
Blocchi.
File heap.
File hash.
File con indice (indici densi e indici sparsi).
B-tree

La gestione della concorrenza (14 ore)

Transazioni.
Schedule seriale.
Serializzabilità.
Modelli di transazioni e meccanismi di locking.
Livelock e deadlock.
Protocolli a due fasi.
Protocolli conservativi e aggressivi.
Dati “sporchi”.
Rollback a cascata.
Timestamp.

Testi di riferimento

Modulo: II MODULO
Materiale didattico reso disponibile dal docente ed accessibile agli studenti registrati sul sito: http://tmancini.di.uniroma1.it


Modulo: I MODULO
1. R. A. Elmasri, S. B. Navathe, “Sistemi di basi di dati – Fondamenti”, Pearson – Addison Wesley, IV edizione, 2004.

2. J. D. Ullman, “Principles of database and knowledge-base systems”, vol. I, Computer Science Press, 1988.


Materiale e dispense del corso


Esempi di esercizi di esame

Bibliografia

Modulo: II MODULO
Libri di testo consigliati:

Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi, Riccardo Torlone:
Basi di dati, Modelli e linguaggi di interrogazione.
McGraw-Hill Education. ISBN 9788838668005.

Ramez Elmasri, Shamkant B. Navathe
Database Systems: Models, Languages, Design, and Application Programming.
Pearson. ISBN 9780132144988.



Modulo: I MODULO
N/D

Modalità di svolgimento

Modulo: II MODULO
Il modulo consiste in lezioni ed esercitazioni in aula, nelle quali verranno affrontate le diverse fasi della progettazione di applicazioni per basi di dati di dimensioni medio-grandi.


Modulo: I MODULO
Gli studenti hanno a disposizione dispense, le registrazioni video delle lezioni con le relative slide, e tutti i webinar degli anni precedenti come ulteriore materiale didattico. Ogni anno viene registrato un nuovo gruppo di webinar su domande poste dagli studenti o su soluzioni di esercizi di esame

Frequenza

Modulo: II MODULO
Data la natura fortemente progettuale del modulo, la frequenza delle lezioni e delle esercitazioni, sebbene non obbligatoria, è fortemente consigliata.



Modulo: I MODULO
Frequenza asincrona a distanza

Modalità di esame

Modulo: II MODULO
L'esame del modulo consiste in una prova scritta ed una prova orale.

La prova scritta avrà l'obiettivo di valutare la capacità dello studente di effettuare l'analisi concettuale e la progettazione di un'applicazione per basi di dati a partire da una specifica dei requisiti e applicando le metodologie apprese nel corso.
La prova orale sarà centrata nella discussione della prova scritta, ed ha l'obiettivo primario di verificare che non ci siano stati errori o incomprensioni da parte del docente durante la valutazione della prova scritta. La prova orale non potrà dunque sanare lacune nella prova scritta.
A discrezione del docente, la prova orale potrà trasformarsi in un colloquio approfondito per verificare il dominio dei contenuti del programma d'esame.

Maggiori dettagli sulle modalità di valutazione sono disponibili qui: http://tmancini.di.uniroma1.it/index.php?page=teaching.bd2.esame.modalita



Modulo: I MODULO
La prova scritta verte su esercizi di algebra relazionale, di teoria relazionale e di organizzazione fisica.
La prova orale verte sulle definizioni di base e sulla dimostrazione dei teoremi illustrati durante il corso.

L'esame può essere verbalizzato solo dopo il superamento di entrambi i moduli del corso.



Esempi di domande

Modulo: II MODULO
Si veda il sito web del corso per progetti del tutto analoghi a quelli da svolgere in sede d'esame.


Modulo: I MODULO
Esercizi di algebra relazionale
Applicazione degli algoritmi per controllo conservazione dipendenze e dati e decomposizione
Esercizi di calcolo di occupazione di strutture dati

Enunciato e dimostrazione dei teoremi discussi a lezione
Domande sulle strutture dati per l'organizzazione fisica delle basi di dati
Domande su tecniche di controllo della concorrenza

Programmazione delle attività didattiche

Modulo: II MODULO

  • 1. Introduzione e cenni di ingegneria del software: attori e ciclo di vita del software (10% circa delle lezioni)
    • Testi di riferimento: Materiale didattico reso disponibile dal docente ed accessibile agli studenti registrati nel sito del corso, raggiungibile da qui: https://raise.uniroma1.it/teachingLibri di testo consigliati:Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi, Riccardo Torlone:Basi di dati, Modelli e linguaggi di interrogazione.McGraw-Hill Education. ISBN 9788838668005.Ramez Elmasri, Shamkant B. NavatheDatabase Systems: Models, Languages, Design, and Application Programming.Pearson. ISBN 9780132144988.

  • 2. Analisi concettuale dei requisiti (50% circa delle lezioni)   2.1. Analisi dei requisiti sui dati mediante diagrammi UML concettuali delle classi   2.2. Analisi dei requisiti sulle funzionalità mediante diagrammi UML degli use-case   2.3. Formalizzazione della semantica dei diagrammi UML delle classi mediante logica del primo ordine e specifiche formali dei vincoli sui dati non esprimibili in UML mediante formule in opportune estensioni della logica del primo ordine   2.4. Specifiche formali delle funzionalità (operazioni di use-case) mediante pre- e post-condizioni espresse in opportune estensioni della logica del primo ordine
    • Testi di riferimento: Materiale didattico reso disponibile dal docente ed accessibile agli studenti registrati nel sito del corso, raggiungibile da qui: https://raise.uniroma1.it/teachingLibri di testo consigliati:Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi, Riccardo Torlone:Basi di dati, Modelli e linguaggi di interrogazione.McGraw-Hill Education. ISBN 9788838668005.Ramez Elmasri, Shamkant B. NavatheDatabase Systems: Models, Languages, Design, and Application Programming.Pearson. ISBN 9780132144988.

  • 3. Progettazione di basi di dati relazionali e di applicazioni per basi di dati a partire dall'output della fase di Analisi concettuale dei requisiti (40% circa delle lezioni):   3.1. Progettazione di una base dati relazionale con vincoli a partire da un diagramma UML concettuale delle classi con vincoli esterni e informazioni sul carico di lavoro e sui volumi dei dati   3.2. Progettazione delle funzionalità di un'applicazione di basi di dati mediante algoritmi in pseudo-codice e comandi in linguaggio SQL, a partire dalle specifiche formali delle funzionalità   3.3. Il linguaggio SQL: domini, istruzioni select-from-where-group by-having-order by, operatori aggregati, interrogazioni nidificate, operatori insiemistici, istruzioni insert, delete, update, create/drop domain, create/drop table, vincoli di chiave e di integrità referenziale, clausole check, trigger, viste, controllo dell'accesso, transazioni, indici.
    • Testi di riferimento: Materiale didattico reso disponibile dal docente ed accessibile agli studenti registrati nel sito del corso, raggiungibile da qui: https://raise.uniroma1.it/teachingLibri di testo consigliati:Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi, Riccardo Torlone:Basi di dati, Modelli e linguaggi di interrogazione.McGraw-Hill Education. ISBN 9788838668005.Ramez Elmasri, Shamkant B. NavatheDatabase Systems: Models, Languages, Design, and Application Programming.Pearson. ISBN 9780132144988.



Modulo: I MODULO
N/D

  • Anno accademico2024/2025
  • Corso di studio a cui afferisce l’insegnamentoInformatica - erogato in modalità prevalentemente a distanza
  • Linguaita
  • CFU12 CFU distribuiti in 2 moduli didattici integrati
  • Durata complessiva72 ore