Fornire agli studenti una conoscenza dettagliata dei sistemi si basi di dati dal punto di vista sia teorico sia pratico.
Le principali conoscenze acquisite saranno: - architetture dei sistemi di gestione delle basi di dati - progettazione concettuale e logica di una base di dati - linguaggio SQL - architettura client-server a tre livelli nelle applicazioni Web con basi di dati - linguaggio HTML e PHP
Le principali abilità acquisite saranno: - capacità di progettare basi di dati utilizzando il modello relazionale - capacità di implementare e interrogare basi di dati relazionali utilizzando SQL - capacità di compiere un’analisi preliminare di un dataset - capacità di realizzare semplici interfacce Web a basi di dati relazionali utilizzando PHP
Prerequisiti
Aver superato l'esame dell'insegnamento "Programmazione e Laboratorio".
È inoltre utile avere acquisito le conoscenze di base dell'insegnamento di "Algoritmi e Strutture Dati"
Metodi didattici
Lezioni frontali su tutti gli argomenti del corso. Lezioni di laboratorio in aula di informatica con esercitazioni guidate su SQL, PHP. Streaming sincrono delle lezioni
Verifica Apprendimento
Test a risposta multipla con 15 domande. Tempo a disposizione: 1h. Prova pratica che consiste nello svolgere 5 interrogazioni su un database esistente. Tempo a disposizione: 1h
Progetto di Laboratorio (individuale oppure a coppie) secondo le specifiche di massima fornite durante il corso.
Il voto di ciascuna prova è nell'intervallo canonico universitario. Il voto finale è dato dalla media pesata dei voti conseguiti nelle 3 prove con eventuale arrotondamento per eccesso.
Testi
Elmasri, Navathe, Sistemi di Basi di Dati - Fondamenti, Pearson Education, Database System Concepts Seventh Edition, Avi Silberschatz, Henry F. Korth, S. Sudarshan - https://www.db-book.com/db7/index.html e dispense fornite dal docente
Contenuti
Introduzione alle Basi di Dati e utenti di basi di dati Basi di Dati ed utenti di basi di dati. Concetti ed architettura di un sistema di basi di dati, modelli dei dati, schemi, istanze; architettura a tre livelli ed indipendenza dei dati. Linguaggi ed interfacce. Architetture client/server. (10 ore)
Modello ER e Modello EER Entità, associazioni, attributi, rapporti di cardinali, specializzazioni, generalizzazioni, reticoli, categorie e notazioni di diagramma più comuni. (23 ore)
Modello relazionale Vincoli di dominio, di chiave e sui valori nulli. Integrità sulle entità, referenziale e chiavi esterne. Superchiavi e chiavi. Gestione delle violazioni dei vincoli. (6 ore)
Algebra relazionale operazioni unarie e binarie, espressioni; operazioni di selezione, proiezione, unione, intersezione, differenza, prodotto cartesiano, join interna ed esterna, equijoin e thetajoin, divisione.(6 ore)
Traduzione dei modelli ER ed EER nel modello relazionale. (3 ore)
Il linguaggio SQL Tipi di dato e definizione dei dati in SQL; create table, specifica di vincoli di base, istruzioni di modifica drop ed alter; interrogazioni fondamentali: struttura select-from-where, alias e variabili di tupla, operatori di confronto, ordinamento. Comandi di insert, update e delete. (12 ore) Normalizzazione di uno schema di Base Dati in 1NF, 2NF, 3NF e BCNF. (3 ore)
Interrogazioni complesse in SQL valore NULL e logica a tre valori, query nidificate e nidificate e correlate; funzioni exists e in, join interne ed esterne, funzioni di aggregazione, clausole group by e having; peculiarità di MySQL (MariaDB). (5 ore)
Gestione degli accessi in MySQL (MariaDB) tabella user, host e db. Modifica ed inserimento di utenti e dei privilegi. Tipi di privilegi. Comandi di GRANT e REVOKE. (3 ore)
Cenni sul protocollo http e architettura a tre livelli. Apache + MySQL (MariaDB) + PHP. (2 hours)
Il linguaggio html5, cenni sui fogli di stile. (2 hours)
Il linguaggio PHP Modalità di connessione a database mediante php. Esecuzione di interrogazioni e gestione dei risultati. (5 ore)