Basi di dati T2/2006-2007

Da WikiDsy.

Orari delle lezioni

  • Martedì, 17:45-19:15, aula Beta
  • Mercoledì, 17:45-19:15, aula Beta
  • Giovedì, 17:45-19:15, aula Beta

Scaglione alfabetico

Il turno 2 comprende gli studenti nello scaglione H-Z

Professore

Alfio Ferrara

Sito del corso

Sito web del corso

Materiale didattico

Corso

Testo di riferimento:

Altri testi utili:

  • P.Atzeni, S. Ceri, S. Paraboschi, R. Torlone 'Basi di dati, II Edizione', McGraw-Hill, 1999.

Corrispondenze programma/testi

(Prima parte del corso)

Programma prima prova in itinere

(Seconda parte)

Laboratorio

Testi consigliati:

  • L. Welling, L. Thomson 'MySQL Tutorial', Pearson-Addison Wesley, 2004.
  • David Sklar 'PHP 5 - Elementi di programmazione', McGraw-Hill, 2005.
  • A. Gutmans, S. Bakken, D. Rethans 'PHP 5 Guida Completa', Apogeo, 2005.

Materiale scaricabile

Modalità d'esame

L'esame consiste in una prova scritta, una (eventuale) discussione orale e nello svolgimento di un progetto di laboratorio.

Prova scritta Consiste di una parte A con domande di teoria e di una parte B con esercizi.

Discussione orale Per risultati fino a 24/30, SI CONFERMA DIRETTAMENTE il risultato della prova scritta. Per votazioni superiori a 24/30 OCCORRE SOSTENERE la prova orale per la conferma del voto; in caso contrario si intende confermata la votazione di 24/30.

Svolgimento di un progetto: vedere la sezione Progetto

Svolgimento dell'esame: che cosa bisogna fare Lo studente deve iscriversi OBBLIGATORIAMENTE VIA SIFA all'appello d'esame che intende sostenere. Lo studente che si iscrive ad un appello d'esame per sostenere lo scritto DEVE consegnare anche il progetto il giorno stesso dell'esame. Gli studenti che sostengono l'esame mediante le prove in itinere potranno consegnare il progetto entro e non oltre l'appello di Aprile.

IMPORTANTE. Qualora uno studente non superasse lo scritto, il progetto consegnato verrà corretto. I progetti sufficienti avranno validità un anno a decorrere dall'appello di consegna.

Progetto

Progetti di laboratorio

I progetti per l'Anno Accademico 2006-2007 verranno comunicati durante il corso.

Svolgimento dei progetti

Il progetto può essere svolto in gruppi di non più di 3 studenti. Può essere sviluppato su propri PC o presso i laboratori didattici, ma l'applicazione dovrà essere visionabile su un calcolatore portatile o on-line in sede d'esame. Per la valutazione dell’elaborato avrà luogo un apposito colloquio a cui tutti i membri del gruppo sono tenuti a partecipare. In casi giudicati eccezionali, e' anche possibile proporre un progetto alternativo. In questo caso dovrà essere inviata una email ai docenti allegando una descrizione della proposta di circa 2 pagine. La proposta sarà valutata dai docenti per l'eventuale accettazione.

Consegna dei progetti

Il progetto deve essere consegnato entro la data dell'appello d'esame scritto che lo studente intende sostenere. Il materiale deve essere consegnato entro la scadenza al prof. Ferrara durante il suo orario di ricevimento. In alternativa, il materiale può essere lasciato entro la scadenza nella casella postale del prof. Ferrara accanto alla portineria del dipartimento in via Comelico, 39. I progetti consegnati saranno corretti secondo un calendario di correzione che verrà pubblicato per ogni appello d'esame su questo sito. I progetti sufficienti avranno validità UN ANNO a decorrere dall'appello di consegna.

Diario del corso

Lezioni fino all'11/10/2006

  • introduzione al DBMS (è un sistema software che serve per manipolare condividere etc.... basi di dati)
  • obbiettivi del DBMS (efficienza, gestione della concorrenza, funzionalità di salvataggio e ripristino dei dati, gestione delle interrogazioni in modo efficiente, garantire protezione dei dati)
  • DBMS gestisce dati e metadati

Perchè usare una BD (base di dati)

Varie figure di utenza con accesso al database DBA (database administrator, utenti occasionali, utenti registrati etc...)

  • Modello dei dati
  • Differenza tra associazione e relazione di dati

Lezione del 12/10/2006

Schema e istanza

  • definizione di intensionale estensionale
  • insieme delle istanze
  • stato della base di dati

Livelli

  • livello esterno (sono le viste)
  • livello logico (sono le tabelle)
  • livello interno (sono i file)

note: quindi DBMS lavora su 3 livelli

Indipendenza

  • indipendenza dei dati
  • indipendenza logica

I linguaggi

  • DDL (scrive il catalogo "metadati" )
  • DML (scrive i dati ed interroga la BD) è un linguaggio di query
  • UDL viste esterne

note: SQL li incorpora entrambi (DDL e DML)

Classificazione dei DBMS

  • In base al modello dei dati:
    • relazionali,
    • object-oriented,
    • reticolari,
    • gerarchici,
    • object relational
  • In base al n° di utenti:
    • mono utente (es: access)
    • multi utente
  • In base al n° di siti in cui la BD è distribuita:
    • BD centralizzata (tutto su un solo server)
    • BD distribuita (BD su molteplici server) ogni transizione coinvolge più server, c'è da risolvere il problema della concorrenza

Lezione del 17/10/2006

  • Il fondamento del modello relazionale è una relazione matematica fra domini + un insieme di domini
  • Definizione di schema, attributo, schema di relazione, schema di basi di dati, istanza di relazione, istanza di basi di dati.
  • Problema dei dati incompleti: l'operatore NULL

Lezione del 18/10/2006

Vincoli

  • Intrarelazionali
    • su valori
    • di ennupla
    • di dominio
  • Interrelazionali

Chiave

  • Definizione
  • Superchiave
  • Chiave primaria

Integrità referenziale (definizione)

Tipi di attributo

  • semplice (atomico)
  • multivalore
  • strutturato

Prima forma normale (definizione)

Lezione del 19/10/2006

non ero presente, mi riferiscono

Le operazioni sul database (Theta join, join naturale, selezione, proiezione..)

Lezione del 24/10/2006

  • Outer Join
  • Regole di trasformazione
    • Atomizzazione delle selezioni
    • Commutatività della selezione
    • Idempotenza delle proiezioni
    • Anticipazione della selezione rispetto al Join
    • Anticipazione della proiezione rispetto al Join
    • Conversione di 1 sequenza
  • Esempi (presidenti americani)

Lezione del 25/10/2006

  • Esempi (sempre sui presidenti americani)
  • Accenno di SQL
    • Domini
    • CREATE SCHEMA (sintassi)
    • CREATE TABLE (sintassi)
    • Elementi dello schema

Lezione del 26/10/2006

ESERCITAZIONE

Lezione del 31/10/2006

  • SQL
    • Vincoli intrarelazionali
      • NOT NULL
      • UNIQUE
      • PRIMARY KEY
    • Vincoli interrelazionali
      • Integrità referenziale
        • FOREIGN KEY
        • REFERENCES
      • Politiche di risposta alla violazione del vincolo di integrità referenziale
        • CASCADE
        • SET NULL
        • SET DEFAULT
        • NO ACTION
        • ... ON DELETE
        • ... ON UPDATE
    • CHECK
    • CREATE DOMAIN

Lezione del 01/11/2006

VACANZA

Lezione del 02/11/2006

  • DROP
  • ALTER TABLE
    • ALTER COLUMN
    • ADD CONSTRAINT
    • DROP CONSTRAINT
    • ADD COLUMN
    • DROP COLUMN
  • Interrogazione: SELECT
    • operatori della clausola WHERE
      • <
      • >
      • <>
      • =
      • AND
      • NOT
      • OR
      • BETWEEN X AND Y
      • IN (LISTAVALORI)
      • IS NULL
      • LIKE
      • EXISTS
    • ridenominazione attributi: AS
    • Alias: AS (nella condizione "FROM")

Lezione del 07/11/2006

  • Interrogazione
    • ordinamento risultato: ORDER BY
  • JOIN interni ed esterni
    • (INNER) JOIN
    • NATURAL JOIN
    • OUTER JOIN (LEFT,RIGHT,FULL)
  • operatori aggregati
    • COUNT
    • SUM
    • MAX
    • MIN
    • AVG
  • sintassi
    • GROUP BY
    • HAVING

Lezione del 08/11/2006

  • Interrogazioni di tipo insiemistico
    • UNION (Default/ALL)
    • INTERSECT (Default/ALL)
    • EXCEPT (Default/ALL)
  • Interrogazioni nidificate
    • ALL
    • ANY
  • Interrogazioni correlate
    • EXISTS
    • NOT EXISTS

Lezione del 09/11/2006

Ripasso lezione precedente

Lezione del 14/11/2006

  • TRIGGERS

Ero assente, sorry.

Lezione del 15/11/2006

  • Triggers
  • SQL: manipolazione dati
    • INSERT
    • UPDATE
    • DELETE
  • Viste
    • CREATE VIEW
    • Problemi aggiornamento viste

Lezione del 16/11/2006

ESERCITAZIONE


Lezione del 21/11/2006

ESERCITAZIONE

Lezione del 22/11/2006

PREPARAZIONE ALLA PROVA IN ITINERE

Lezione del 23/11/2006

PROVA IN ITINERE

Lezione del 28/11/2006

  • Progettazione
  • Modelli
    • concettuali
    • logici
  • Astrazione
    • per classificazione (is-member-of)
    • per aggregazione (is-part-of)
    • per generalizzazione (is-a)
  • Modello E-R
    • Concetti Base
      • Entità
      • Relazione (o associazione)
        • Cardinalità della relazione
      • Attributo

Lezione del 29/11/2006

  • Relazoni 1:1 1:n n:n
  • Identificatore
    • Interno
    • Esterno
  • Gerarchie di entità
    • Specializzazione
    • Generalizazione
  • Proprietà delle gerarchie
    • Totalità
    • Disgiunzione
  • Attributi composti

Lezione del 30/11/2006

Lezione di laboratorio n.1

  • Comandi di PostgreSQL

Lezione del 5/12/2006

  • Fasi della progettazione
    • Raccolta dei requisiti
    • Analisi dei requisiti
      • Scegliere liv. astrazione
      • Standardizzaz. struttura frasi
      • Evitare frasi contorte
      • Identificare sinonimi ed omonimi e disambiguare
        • unificare sinonimi
        • diversificare omonimi
      • Costruire un glossario
    • Progettaziuone concettuale
    • Generazione schema E-R
      • top-down
      • bottom-up
      • inside-out
      • mista
    • Qualità di 1 schema
      • Leggibilità
        • nomi comprensibili
        • minimizzazione intersezioni
      • Minimalità: eliminare la ridondanza
      • Correttezza
        • semantica
        • sintattica
    • Progettazione di transazioni

Lezione del 6/12/2006

  • Gestione di sequenze
    • CREATE SEQUENCE
    • Nextval
    • Curval
    • Setval
  • Catalogo composto da 3 schemi:
  1. Pg_catalog (database di sistema)
  2. Information_schema (metadati)
  3. Public (schema di default nuovi DB)
  • Controllo dell'accesso: pg_hba.conf

Lezione del 7/12/2006

VACANZA (S.AMBROGIO)

Lezione del 12/12/2006

Trasformazione da schema concettuale a schema logico

3 fasi:

  1. Ristrutturazione schema concettuale
  2. Traduzione in schema logico
  3. Verifica di normalizzazione schema logico risultante


Fase 1 (Ristrutturazione schema concettuale)

3 tipi di modifiche possibili:

  1. Analisi di dati derivati (ridondanza)

Possibili casi di ridondanza:

  • informazioni derivanti da numero di occorrenze
  • informazioni derivanti da cicli
  • attributi rid. di 1 entità
  • attributi derivanti da attributi di 1 altra entità legata alla prima da una associazione
  1. Eliminazione delle gerarchie di generalizzazione

Possibili tipi di eliminazione:

  • Mantenimento della sola superclasse (+ valori NULL, + possibili inconsistenze da verificare)
  • Mantenimento della sola sottoclasse (applicabile SOLO a gerarchie di tipo TE)
  • Mantenimento di entrambe e ricostruzione della gerarchia attraverso un'associazione.
    • Il problema è che le sottoclassi (ora entità) diventano entità deboli.
    • Inoltre se la generalizzazione è totale, bisogna controllare che ogni elemento dell'entità generale ci sia in almeno una delle entità specifiche
  1. Scelta degli identificatori primari

Criteri di scelta: ***non sono riuscito a prenderli tutti, completate perfavore***

  • Eliminazione di attributi composti

Lezione del 13/12/2006

  • Traduzione da ER a relazionale
  • Associazioni N:M, 1:N, 1:1
  • Associazioni ricorsive
  • Normalizzazione di schemi relazionali (prima forma normale)
  • Anomalie
  • Ridondanze

(se guardate le videolezioni, per la lezione del 13/12/2006 guardate alla slide n° 29 balla 45 della videolezione del 29/11/2005)

Lezione del 14/12/2006

  • Normalizzazione di schemi relazionali (seconda e terza forma normale)
  • Forma normale di Boyce-Codd

(se guardate le videolezioni, per la lezione del 13/12/2006 guardate la videolezione del 30/11/2005

Lezione del 19/12/2006

  • Forma normale di Boyce-Codd
  • Decomposizione senza perdita
  • Conservazione delle dipendenze funzionali
  • PLSQL
  • PLpgSQL

Lezione del 21/12/2006

  • Archietettura del web
  • La comunicazione HTTP
  • HTTP Request
  • HTTP Response
  • GET/POST
  • URL
  • Browser
  • HTML

Lezione del 09/01/2007

a breve il resoconto

Lezione del 10/01/2007

  • Esempi di GRANT
  • Tabelle sysauth e syscolauth: composizione
  • Revoca dei privilegi (REVOKE)
    • sintassi
    • politica di gestione delle revoche di diritti ottenuti lungo una catena di GRANT
  • Viste e diritti sulle viste

Lezione del 11/01/2007

  • PHP5 - esempi
  • una serie di informazioni su php (peraltro saltando parti dato che poi le schede vengono pubblicate e quindi consigliando di leggersele a parte)
  • Le tre caratteristiche di php
    1. Interpretato
    2. Loose Type
    3. Object Oriented
  • Comandi vari
    • ini_set (var, val)
    • gettype (var)
    • is_type(*non so*)
  • Variabili super-globali
    • $SERVER[PHP_SELF] (pagina corrente)
    • $_GET (array di parametri passati col metodo GET)
    • $_POST (array di parametri passati col metodo POST)
  • PHP ed interazione con DBMS
    • pg_connect
    • pg_pconnect
    • pg_query
    • pg_close
    • pg_fetch_array
    • pg_free_result

Lezione del 16/01/2007

  • Transazioni
    • Definizione
    • Proprietà ACIDe
      • Atomicità
      • Consistenza
      • Isolamento
      • Durability (Persistenza)
    • Strutture per garantire le proprietà ACIDe
      • A+D: recovery manager o controllore dell'affidabilità
      • C: compilatore DDL
      • I: controllore della concorrenza

Lezione del 17/01/2007

Ero assente, metto il programma desunto da quello che ho sentito

  • Interazione PHP con DB
    • Insert
    • Update
    • (...)

Lezione del 18/01/2007

ultima lezione ufficiale

  • PHP e Cookie
    • Settare un cookie: setcookie ('nome', 'valore', scadenza)
      • setcookie deve essere eseguito prima di emettere outpout
    • Leggere un cookie: variabile super-globale $_COOKIE
    • Eliminare un cookie: setcookie ('nome', );
  • PHP e Sessioni
    • Iniziare una sessione
    • Leggere le info di una sessione: variabile super-globale $_SESSION
    • Aggiungere info alla sessione: aggiungere valori all'array $_SESSION
    • Cancellare una sessione
  • PHP e XML
    • Regole di buona formazione
    • DTD
    • SAX/DOM