Fondamenti di
Informatica
Prof. Fenza Giuseppe
DBMS – Introduzione ai DBMS
• Sez. 7.5: Introduzione
• Sez. 22.1: I criteri di archiviazione
• Sez. 20.4, 20.5: Come si usano, DB online
• Sez. 18.2, 22.2, 22.3: Query
Fogli elettronici (Excel) e DBMS
(Access)
• I Fogli Elettronici (documenti Excel) sono adatti a
– Trattare piccole quantità di dati – prevalentemente di tipo numerico – con elevate dipendenze reciproche
• es: bilancio di un’azienda dove, cambiando il valore in una cella si modificano a cascata i valori presenti in tante altre celle
• Inoltre i fogli elettronici
– hanno notevoli capacità analitiche, grazie alla disponibilità di funzioni predefinite e alla facilità di costruirne nuove
– permettono di visualizzare i dati attraverso grafici e diagrammi, aiutando l’analista nella ricerca di trends
Fogli elettronici (Excel) e DBMS (Access)
• Al contrario, i fogli elettronici sono poco adatti per svolgere
operazioni di
–
ricerca di informazioni in archivi
–
a cui accedono contemporaneamente anche migliaia di
utenti
• Spesso, infatti, è necessario “trattare”
–
grandi quantità di dati
–
di
tipo molto diversificato
(testi, numeri, date, immagini, …)
–
correlati, ma poco dipendenti gli uni dagli altri
•
es:
schedario di una biblioteca
, dove l’inserimento o
l’eliminazione di un volume non ha effetti sulle informazioni
che riguardano altri libri
Definizione di DB e di DBMS
BASE DI DATI (DB=Database)
•Collezione di dati (tipicamente molto corposa)
– memorizzati in un computer
– organizzati in forma strutturata
– condivisi tra più utenti (anche migliaia) e da questi accessibili contemporaneamente
sui quali è possibile operare efficientemente ricerche e aggiornamenti
DBMS (Data Base Management System)
•Software che permette di gestire un Database (es.: memorizzare, cancellare, aggiornare o interrogare i dati)
Organizzazione di una Base di Dati
Tutti i dati sono memorizzati in tabelle
• ogni tabella memorizza (in righe e colonne) informazioni su un
insieme di “oggetti” che hanno identica struttura (es. un insieme
di studenti, di libri, di film, di CD, …)
• righe (dette record, ennuple o tuple) ognuna corrispondente a un singolo dato (1 libro, 1 studente, …)
• colonne (detti campi o attributi), corrispondenti a singole informazioni relative ai dati (es. matricola, data di nascita, …)
Tabella con informazioni su una popolazione di STUDENTI
Matricola Cognome Nome Data di Nascita
276545 Rossi Maria 25/11/1971 485745 Neri Anna 23/04/1972 200768 Verdi Fabio 12/02/1972 587614 Rossi Luca 10/10/1971 937653 Bruni Mario 01/12/1971
DBMS Relazionali: creazione di un DB
•
Per utilizzare un DBMS
bisogna
–
costruire le tabelle che lo compongono
.
–
Stabilire
proprietà di validità delle tabelle
(chiavi,
vincoli di integrità), per evitare l'inserimento di dati
palesemente sbagliati
–
Creare gli
strumenti di lavoro
:
• Interrogazioni o Queries
• Maschere
• Report
Linguaggi per basi di dati
• Per accedere ai dati, un DBMS mette a disposizione linguaggi e
interfacce diverse
–
Linguaggi testuali interattivi (SQL)–
Interfacce amichevoli (QBE senza linguaggio testuale)–
Comandi (simili ad SQL) immersi in un linguaggio diprogrammazione tradizionale, in questo caso detto ospite
(Pascal, C, Cobol, etc.)
–
Comandi (simili ad SQL) immersi in un linguaggio diprogrammazione ad hoc, con altre funzionalità (p.es. per grafici
o report) e con l’ausilio di strumenti di sviluppo (p. es. gestione di maschere)
I Protagonisti
• Progettisti e realizzatori di DBMS (a volte questa figura è svolta
dall'Amministratore della Base di Dati)
• Amministratori della base di dati (DBA)
• Progettisti e Programmatori di applicazioni
• Utenti
–
utenti finali (terminalisti): eseguono applicazioni predefinite (transazioni)–
utenti casuali: eseguono operazioni non previste a priori, usando linguaggi interattiviAmministratore della Base di Dati
• Persona o gruppo di persone responsabile di
–
Progettare–
Controllare centralmente il sistema–
Amministrare e gestire il sistema–
Garantire elevate prestazioni e alta affidabilità del sistema–
Gestire le autorizzazioni di accesso ai dati–
Definirne e modificare la struttura del DB• Tutto questo mediando le esigenze degli utenti, spesso
Progettisti e Programmatori di applicazioni
•
Progetta e realizza i programmi per l’accesso ai dati
•Scrive le transazioni per il terminalista
DataBase Management System (DBMS)
• Un DBMS è un Sistema Software che gestisce collezioni di dati:
–
Grandi e persistenti–
Condivise garantendo–
Affidabilità–
Privatezza–
Efficienza ed efficaciaLe Basi di Dati sono … grandi e persistenti
• Il DB è di dimensioni molto maggiore della memoria centrale dei
sistemi di calcolo utilizzati
–
i dati devono quindi essere gestiti in memoria di massa–
il limite è solo quello fisico dei dispositivi• Il DB è persistente cioè i dati hanno un tempo di vita indipendente
dalle singole esecuzioni dei programmi che li utilizzano
Le Basi di Dati sono ... condivise
• Il DB è condiviso, cioè applicazioni e utenti diversi devono
poter accedere a dati comuni, anche contemporaneamente.
• In questo modo
–
Si riduce la ridondanza–
Si evita l’inconsistenza. Si ha inconsistenza di dati quando in undato momento esistono due o più versioni di uno stesso dato che
non presentano lo stesso livello di aggiornamento.
Ø Questo si verifica quando un programma accede e aggiorna solo la propria copia di un dato, lasciando inalterate le altre copie dello stesso dato.
Gestione degli Accessi Condivisi
Problematiche legate alla “condivisione”
•Alcune operazioni non interferiscono l’una con l’altra
(es.: la lettura di un estratto conto da più parti)
•Altre operazioni vanno eseguite non simultaneamente (prelievo e deposito di denaro). In questo caso c’è un meccanismo di “blocco” di un’operazione mentre è in corso un’altra operazione critica.
•Il DB può anche essere distribuito in più parti (luoghi fisicamente lontani)
I DBMS garantiscono ... affidabilità
•
Affidabilità (per le basi di dati):
• resistenza a malfunzionamenti hardware e software
•
Il DBMS garantisce l’affidabilità dei dati, cioè è capace di
conservare praticamente intatto il contenuto della base di
dati, anche in presenza di guasti hardware e software.
• Presenta meccanismi sofisticati di backup/recovery con i quali è
I DBMS garantiscono ... privatezza
• Per ogni utente è specificato il tipo di operazione che può
effettuare (autorizzazione dell’accesso)
–
accesso in lettura / scrittura / eliminazione / esecuzione• Ad esempio, in un Database bancario:
–
Un cliente può leggere il suo estratto conto, ma non modificarlo,se non tramite un’operazione di prelievo.
–
Un cliente non può leggere l’estratto conto di altri.–
Lo sportellista può leggere e modificare solo alcune informazionisul conto di un cliente (non può cioè eseguire tutte le operazioni; ad esempio non può modificare l’importo del fido assegnato).
–
Il Direttore può leggere e modificare tutti i campi del contoI DBMS debbono essere ... efficienti
•
Il
DBMS usa efficientemente le risorse disponibili
–
svolge tutte le operazioni utilizzando un insieme di
risorse di spazio (memoria principale e secondaria)
e di tempo (di esecuzione e di risposta) che sia
accettabile per gli utenti
–
rende produttive le attività degli utilizzatori,
offrendo servizi e funzionalità articolate, potenti e
flessibili
–
mette a disposizione un insieme di
strumenti
software che rendono veloce l’accesso ai dati
TABELLE
•
Per utilizzare un DBMS
bisogna innanzitutto costruire le
tabelle che lo compongono
.
–
Per prima cosa bisogna identificare il
tipo di informazione
(es. libri) da memorizzare e quali sono le sue
proprietà
(es.
titolo, autore, pagine, … ) pertinenti per l’applicazione.
–
Ad ogni proprietà (colonna o campo) va poi assegnato un
nome
, una
lunghezza
e una
categoria di dati
• Un’applicazione semplice può presentare anche una sola
tabella, ma più
spesso un DB è composto da più tabelle
,
TABELLE: Excel vs DB
• Nei fogli elettronici la posizione della cella è fondamentale: – A1, B5, etc.
• La struttura della tabella non è importante nei fogli elettronici:
– Nei DB è fondamentale perché la struttura identifica i vari dati.
• In un foglio elettronico le singole celle possono ospitare diversi tipi di
dati
– Nei database il formato, il tipo e la lunghezza va dichiarato
Le relazioni tra tabelle
• Per collegare tra loro le tabelle è necessario un campo CHIAVE che
identifica univocamente ogni record.
– Carta di Identità, – Codice fiscale
– Matricola per lo studente, – Etc..
• Il collegamento tra le tabelle è realizzato mediante il meccanismo della
CHIAVE ESTERNA
– I valori della chiave primaria della tabella principale sono duplicati
Tipi di Chiave
• Genericamente una chiave è un insieme di campi che identificano un
record;
• CHIAVE PRIMARIA:
– È unica; – Non è nulla
Tipi di relazioni
•
Relazione uno a uno:
a un record della prima tabella
corrisponde un solo record della seconda;
•
Relazione uno a molti:
a un record della prima tabella
corrispondono più record della seconda;
•
Relazione molti a molti:
a più record della prima
Chiave
•
Chiave: insieme di campi che identifica
univocamente ogni singola riga di una tabella
•
Il vincolo di chiave deve essere soddisfatto da tutte
le istanze possibili dei dati
–
Non esistono
–
Non sono esistiti
–
Non esisteranno mai
due record con valori uguali in tutti i campi della
chiave
Esempio
• Es: in un Database di persone, in cui ad ogni persona viene associato
il proprio codice fiscale
–
non ci sono (non ci sono state e non ci saranno mai) due righe con lo stesso valore sul campo chiave Codice Fiscale…–
… proprio perchè, nel mondo reale,•
non ci sono•
non ci sono state•
non ci saranno maiEsistenza delle chiavi
•
Una relazione, in quanto insieme matematico, per
definizione non può contenere tuple uguali
–
Ogni relazione ha almeno una chiave: l’insieme di
tutti i suoi attributi …
•
Una relazione possiede
almeno una chiave
,
•ma potrebbe averne
anche più di una
.
•
La chiave
–
garantisce
l'accessibilità
a tutti i valori in una base
di dati e la loro univoca
identificabilità
.
–
permette di
stabilire "efficacemente" gli agganci
tra relazioni
diverse
Esempio
• Es: in un Database di studenti, Matricola è una chiave in quanto
Esempio di chiave (alternativa)
• ma anche Cognome+Nome+Nascita è chiave, in quanto
–
Non esistono 2 studenti che hanno uguali, contemporaneamente, nome, cognome e data di nascita• Si noti che non sono sufficienti ad essere chiave i campi
–
Cognome o Nome o NascitaEsempio di NON CHIAVE
• Nome+Corso non è una chiave,
in quanto nella relazione
compaiono due tuple (le ultime due) fra loro uguali (infatti è
possibile che due studenti con lo stesso nome di battesimo
seguano lo stesso corso)
Attenzione alle FALSE CHIAVI
• In questa particolare istanza non ci sono tuple uguali sui campi
Cognome e Corso:
– Per questa ISTANZA della relazione, Cognome+Corso
sembrerebbe essere una chiave minimale.
• Ma questa non è una proprietà sempre vera
– Infatti potrebbero iscriversi, in futuro, allo stesso corso studenti
Chiavi e valori nulli
• In presenza di valori nulli, una chiave non garantisce
–
di poter identificare ogni singola tupla–
di realizzare facilmente i riferimenti ad altre relazioniTUTTI I CAMPI CHE FORMANO LA CHIAVE DEVONO PRESENTARE VALORI NON NULLI
• Quando ci sono più chiavi candidate?
–
Tra tutte le chiavi va scelta una chiave che viene definitaCHIAVE PRIMARIA.
Campo CONTATORE (o ID)
• Nel caso in cui
–
non è possibile individuare una chiave (molto raro)–
si vuole inserire qualche valore NULLO in campi della chiave–
si è in presenza di una chiave con molti campi e si vuole utilizzare una chiave più ‘‘snella’’• si può utilizzare un campo extra con funzione di Chiave.
–
Tale campo (di tipo numerico) è detto CONTATORE o ID–
Il DBMS assegna automaticamente al campo ID di ogni tupla, al momento del suo inserimento nella tabella, un valore intero (il suo numero progressivo di inserimento) diverso da quello giàEsempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Esempio
• La carriera dello studente con matricola 276545 è ricostruita
Vincoli di integrità
• Più in generale, esistono istanze di basi di dati che,
pur
essendo sintatticamente corrette
…
• …
non rappresentano informazioni ammissibili
per
l’applicazione di interesse
Una base di dati "scorretta": 1’ motivo
VALORI NON AMMISSIBILI
COMBINAZIONE NON AMMISSIBILE
DUPLICAZIONE NON AMMISSIBILE
Una base di dati "scorretta": 4’ motivo
INDESIDERABILE (valore assente in Corsi) INDESIDERABILE (valore assente in Studenti)Vincolo di integrità
• Per evitare situazioni come le precedenti è stato introdotto il
concetto di vincolo d'integrità
• Un vincolo d'integrità è una proprietà che è soddisfatta dalle
istanze che rappresentano informazioni corrette
• Ad uno schema di Base di Dati associamo un insieme di vincoli
–
e consideriamo corrette (o lecite o ammissibili) le istanze cheTipi di vincoli
• Vincoli intrarelazionali
–
il loro soddisfacimento è definito rispetto ad una singola tabella(relazione) di una Base di Dati
–
primi tre casi dell'esempio precedente• Vincoli interrelazionali
–
il loro soddisfacimento è definito rispetto a più di una tabella(relazione) di una Base di Dati
–
quarto caso, nel quale l'anomalia è rimossa imponendo che unostudente compaia nella relazione ESAMI solo se compare in quella STUDENTI. Analogamente, il corso per essere associato allo studente deve esistere nella relazione CORSI
–
I principali Vincoli Interrazionali sono i Vincoli d'Integrità ReferenzialeVincoli di tupla
•
I
vincoli di tupla
(casi 1 e 2 dell'esempio) esprimono
condizioni sui valori della singola tupla
–
Quando il vincolo riguarda il dominio di un singolo campo
si parla di
vincolo di dominio
–
ciò corrisponde a limitazioni sul dominio dell'attributo (caso 1)•
un vincolo di tupla si implementa tramite
un'espressione
booleana
–
(1) "Un voto è un numero intero compreso tra 18 e 30":
• (Voto
³
18) AND (Voto
£
30)
–
(2) "O non c'è la lode O il voto è 30", cioè che la lode è
ammessa solo se il voto è 30:
Violazione vincolo di integrità referenziale
Quale agente ha rilevato l’infrazione?
Violazione vincolo di integrità referenziale
A chi appartiene l’auto oggetto dell’infrazione?
Vincolo di integrità referenziale
• È opportuno definire vincoli di integrità referenziale fra:
–
(Vincolo 1)–
l’attributo AGENTE della tabella INFRAZIONI e–
l'attributo Matricola, chiave della tabella AGENTI–
(Vincolo 2)–
gli attributi PROV e NUMERO della tabella INFRAZIONI–
gli attributi PROV e NUMERO, chiave della tabella AUTOVincolo di integrità referenziale
• Un vincolo di integrità referenziale (“foreign key”) tra
– gli attributi X di una tabella R1 e
– un’altra tabella R2
impone che i valori degli attributi X di R1 devono avere
esattamente un unico record corrispondente in R2.
• Ciò significa che gli attributi X in R1 devono corrispondere a una
chiave in R2
– Più record della tabella R1 possono però puntare allo stesso
Esempio (caso 1 – tabella corretta)
•
vincolo integrità referenziale fra
l’attributo AGENTE (X)
Esempio (caso 2 – tabella corretta)
•