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.