Introduzione alle Basi di Dati Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo e il suo indice (magari solo capitoli numerati) Informazione strutturata Molta struttura, contenuto rigidamente codificato I sistemi informativi delle organizzazioni, le basi di dati DBMS (database management system) Obiettivo: gestione strutturata di dati, organizzati in modo omogeneo. Base di dati: Collezione di dati organizzati in modo coerente (un insieme casuale di dati non è una base di dati !) Modella alcuni aspetti del mondo reale Costruito con funzionalità ben precise, note fin dall’inizio della progettazione. Basi di dati: operazioni Definizione della base di dati quali informazioni (struttura) quali relazioni tra le informazioni Manipolazione inserimento di dati cancellazione di dati aggiornamento (update) interrogazione Protezione e sicurezza dei dati Esempio di Tabella Nomi di Attributi Schema Nome tuple Cognome Telefono Mario Rossi 050 90… … Luigi Bianchi 06 499… … Guido La Vespa 02 009… … … Notazione: La tabella Rubrica è anche indicata con la notazione: Rubrica (Nome, Cognome, Telefono, …) In ogni modello esistono Lo schema: la descrizione della struttura stabile nel tempo L‘istanza: i valori (cioè i dati) variabile nel tempo studenti Matricola 6554 8765 9283 3456 Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Relazioni e Attributi: esempio studenti Matricola 6554 8765 9283 3456 Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria esami Studente 3456 3456 9283 6554 corsi Codice 01 02 04 Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Voto 30 24 28 26 Corso 04 02 01 01 Titolo Docente Analisi Sempronio Chimica Bruni Chimica Verdi Relazioni e Attributi: esempio… Modello relazionale Modello relazionale dei dati i dati sono organizzati in “tabelle” la tabella è un insieme di “record” (ennuple) con un insieme di attributi di tipi opportuni (numeri, stringhe, date …) i dati in tabelle diverse sono correlati sulla base dei valori (chiavi) Modello relazionale Relazione su due insiemi A e B sottoinsieme del prodotto cartesiano AxB Esempio sposato_con incluso in Persone figlio_di incluso in Persone x Persone x Persone vive_a incluso in Persone x Città Esempio di relazione Persone= {Paolo, Luca,Mario} Città={Torino,Roma} PersonexCittà Persone Città Paolo Paolo Luca Luca Torino Roma Torino Roma Vive_a Persone Città Paolo Luca Torino Roma Relazioni e Attributi Attributi: nomi che specificano un ruolo in una relazione, esempi: sposato_con(Marito, Moglie) figlio_di(Figlio, Genitore) vive_a(Nome,Citta,Provincia) libro(N.Inv, Autore, Titolo, Anno_edizione, Casa_editrice, Collocazione) Gli attributi devono avere nomi differenti Vincoli Vincoli sulle relazioni I valori contenuti nelle tabelle possono essere soggetti a vari tipi di vincoli che dipendono dalla ‘realtà’ che si vuole rappresantare: vincoli di dominio: valori dei singoli Attributi vincoli di tupla: valori di attributi correlati in una tupla vincoli di integrità valori di attributi in tuple diverse (anche in relazioni diverse) Vincoli di dominio vincoli sui valori dei singoli attributi (vincoli di dominio), es: dato ESAMI(Studente,Voto, Lode,Corso) deve essere: Voto >=18 AND Voto <=30 Vincoli sul valore di un attributo data Vincoli di tupla vincoli sui valori di attributi correlati, es Data la relazione ESAMI come prima deve essere: not (Lode = Yes) OR Voto = 30 equivalente a Lode= No OR Voto = 30 Data la relazione PAGAMENTI(Data,Importo,Ritenute,Netto) deve essere: Netto = Importo - Ritenute Esempio complesso di vincoli Supponiamo che STUDENTE contenga anche gli attributi Borsa di Studio: valori {Yes, No} Reddito (della famiglia): euro Residente (nella città sede univ.): {Yes, No} Uno studente ha diritto ad una borsa se: ha una media >= 27 e un reddito <= 20000, Oppure non è residente e ha una media >= 25 e un reddito <=25000 Relazioni tra tabelle In una base di dati relazionale le tabelle sono collegate tra loro tramite attributi comuni Esempio: Il collegamento tra la relazione LIBRI e la relazione CASE_EDITRICI può essere espressa mediante l’ attributo “Numero di inventario”. Uso di chiavi primarie per evitare replicazione di dati. Tabelle organizzate per contenere dati omogenei di entità di informazioni ritenute interessanti (Persone, Comuni…). Funzionalità DBMS Funzionalità DBMS Funzioni per: definizione della base di dati inserimento / rimozione /aggiornamento di informazioni deve soddisfare i vincoli! Interrogazione Creazione tabelle: Chiavi primarie CREATE TABLE Studenti ( Matricola integer, Cognome string, Nome string, Data di nascita integer, Primary Key (Matricola); ); Creazione Tabelle Chiavi primarie: esempio studenti Matricola Cognome Nome Data di nascita Creazione tabelle: Chiavi primarie CREATE TABLE Corsi ( Codice integer, Titolo string, Docente string, Primary Key (Codice); ); Creazione Tabelle Chiavi primarie: esempio studenti Matricola Cognome corsi Nome Codice Data di nascita Titolo Docente Creazione tabelle: Chiavi primarie e chiavi esterne CREATE TABLE Esami ( ID integer, Studente integer, Voto integer, Corso integer, Primary Key (ID), Foreign Key (Studente) references Studenti(Matricola), Foreign Key (Corso) references Corsi(Codice)); ); Creazione Tabelle Chiavi esterne: esempio studenti Matricola esami Cognome Id corsi Nome Data di nascita Studente Voto Corso Codice Titolo Docente Inserzione dati: esempio studenti Matricola 6554 8765 9283 3456 esami Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria Studente Id 1135622 3456 1135623 3456 9283 1135624 1135623 6554 corsi Codice 01 02 04 Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Voto 30 24 28 26 Corso 04 02 01 01 Titolo Docente Analisi Sempronio Chimica Bruni Chimica Verdi Interrogazioni Linguaggio SQL Produce come risultato una tabella Agisce su insiemi (di tuple) e restituisce insiemi (di tuple). Per tale motivo le interrogazioni possono essere annidate. Clausola Base SELECT “Lista di attributi” FROM “Elenco relazioni” WHERE “Condizione” Esempi di query SELECT Docente FROM Corsi WHERE Titolo=“Chimica” Qual’e’ il nome di tutti i docenti che insegnano chimica? corsi Codice 01 02 04 Titolo Docente Analisi Sempronio Bruni Chimica Chimica Verdi Esempi di query Qual’e’ il nome e il cognome degli studenti con numero di matricola >7000 ? studenti Matricola 6554 8765 9283 3456 Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Esempi di query SELECT Cognome, Nome FROM Studenti WHERE Matricola <7000 Qual’e’ il nome e il cognome degli studenti con numero di matricola >7000 ? studenti Matricola 6554 8765 9283 3456 Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Esempi di query SELECT Studente FROM Esami WHERE Corso=01 AND Voto>27 Qual’e’ lo studente Che ha superato il corso 01 con voto >27 ? esami Studente Id 1135622 3456 1135623 3456 9283 1135624 1135623 6554 Voto 30 24 28 26 Corso 04 02 01 01 Join Join: combinare le tuple di più tabelle i cui valori per attributi correlati soddisfano una condizione di confronto Il join di due relazioni è il sottoinsieme del loro prodotto cartesiano specificato dalla condizione di selezione Relazioni tra tabelle e Join Le relazioni tra tabelle sono espresse da valori comuni di attributi correlati Join: Example SELECT Studenti.Nome, Studenti.Cognome FROM Studenti, Esami WHERE Studenti.Matricola=Esami.studenti AND Esami.corso=01 AND Esami.voto>27 studenti Matricola 6554 8765 9283 3456 esami Cognome Pinco Neri Verdi Rossi Nome Pallino Paolo Luisa Maria Studente Id 1135622 3456 1135623 3456 9283 1135624 1135623 6554 Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Voto 30 24 28 26 Corso 04 02 01 01 Conclusioni CONTROLLO DEI DATI: LE TRANSAZIONI Definizione Una transazione è una sequenza di azioni di lettura e scrittura in memoria permanente e di elaborazioni di dati in memoria temporanea, con le seguenti proprietà: Atomicità: Le transazioni che terminano prematuramente (aborted transactions) sono trattate dal sistema come se non fossero mai iniziate; pertanto eventuali loro effetti sulla base di dati sono annullati. Consistenza: i vincoli vengono rispettati. Serializzabilità (isolation): Nel caso di esecuzioni concorrenti di più transazioni, l’effetto complessivo è quello di una esecuzione seriale. Persistenza (durability): Le modifiche sulla base di dati di una transazione terminata normalmente sono permanenti, cioè non sono alterabili da eventuali malfunzionamenti. FUNZIONALITÀ DEI DBMS: MECCANISMI PER IL CONTROLLO DEI DATI Una caratteristica molto importante dei DBMS è il tipo di meccanismi offerti per garantire le seguenti proprietà di una base di dati: Integrità, sicurezza e affidabilità. Integrità: mantenimento delle proprietà specificate in modo dochiarativo nello schema (vincoli d’integrità) Sicurezza: protezione dei dati da usi non autorizzati Affidabilità: protezione dei dati da malfunzionamenti hardware o software (fallimenti di transazione, di sistema e disastri) e da interferenze indesiderate dovute all’accesso concorrente ai dati da parte di più utenti. RIEPILOGO DEI VANTAGGI DEI DBMS Indipendenza dei dati Recupero efficiente dei dati Integrità e sicurezza dei dati Accessi interattivi, concorrenti e protetti dai malfunzionamenti Amministrazione dei dati Riduzione dei tempi di sviluppo delle applicazioni La riduzione dei costi della tecnologia e i possibili tipi di DBMS disponibili sul mercato facilitano la loro diffusione.