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.
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)