Download - A cura di: Campi Aldo
A cura di: Campi Aldo
Rif.PA. 2017-7220/RERBiennio 2017/2019
Progetto 1 Edizione 1
Modulo: DATABASE RELAZIONALI E NON RELAZIONALI
UF 11
FONDAZIONE ISTITUTO TECNICO SUPERIORE
MECCANICA, MECCATRONICA, MOTORISTICA E PACKAGING
Sede di BOLOGNA
“TECNICO SUPERIORE DEI SISTEMI DI CONTROLLO NELLA FABBRICA DIGITALE”
Corso di Basi di Dati
Introduzione ai Database
Management System (DBMS)
1
Dato vs Informazione
➢ Informazione (def): notizia, o elemento che consente di
avere conoscenza piu’ o meno esatta di fatti, situazioni e
modi d’essere.
➢Dato (def): elementi di informazione constituiti da
simboli che devono essere elaborati.
FERRARI, 8
NOTA: Senza interpretazione, il dato non e’ molto utile!
2
Sistemi Informativi
Un Sistema Informativo (SI) è una
componente di un’organizzazione il cui scopo è
quello di gestire le informazioni utili ad i fini
dell’organizzazione stessa.
Organizzazione Azienda, Ufficio, Ente, Università, etc
3
L’esistenza di un Sistema Informativo è
indipendente dalla sua automatizzazione.
Biblioteca reale di Alessandria d’Egitto
IV-I secolo a.C
400000 rotoli presenti.
Sistemi Informativi
4
L’esistenza di un Sistema Informativo è
indipendente dalla sua automatizzazione.
Censimenti e Registro Anagrafe.
Nell’Antica Roma, i censimenti venivano
effettuati dalla fine del IV secolo a.c. Gli
elenchi dei censiti, distinti secondo il
possesso o meno dei diritti civili e politici,
la classe patrimoniale e l'età, venivano
utilizzati come liste elettorali e per
determinare la ruoli per l’esenzione dei
tributi e le liste di leva.
Sistemi Informativi
5
➢La porzione automatizzata di un sistema
informativo prende il nome di Sistema
Informatico.
➢All’interno di un sistema informatico, le
informazioni sono rappresentate da dati …
SISTEMA
SISTEMA INFORMATIVO
SISTEMA INFORMATICO
Sistemi Informativi
6
Approcci di gestione dei dati
Gran parte dei sistemi informatici hanno necessità
di gestire dati in maniera persistente.
Persistente Dati memorizzati su
memoria secondaria
➢ Approccio convenzionale (basato su files)
➢ Approccio strutturato (basato su software di gestione dei dati)
APPROCCI di GESTIONE
7
Gran parte dei sistemi informatici hanno necessità
di gestire dati in maniera persistente.
Persistente Dati memorizzati su
memoria secondaria
➢ Approccio convenzionale (basato su files)
➢ Approccio strutturato (basato su software di gestione dei dati)
APPROCCI di GESTIONE
Approcci di gestione dei dati
8
➢ Approccio Convenzionale (basato su files)
APPLICAZIONE FILES
Operazioni di Lettura/Scrittura
su file mediante supporto del
Sistema Operativo
➢ Nessuna chiara distinzione tra dati ed applicazioni.
➢ L’applicazione contiene al suo interno la logica di gestione e
memorizzazione dei dati stessi (es. formato dei dati).
➢ Il Sistema Operativo offre le primitive di base per l’accesso ai
files ed i meccanismi di sicurezza del file-system.
Approccio basato su files
9
Approccio basato su files
➢ Approccio Convenzionale (basato su files)
Qualche esempio “estremo”:
59 Milioni di clienti iscritti
Oltre 42 Terabyte di dati
323 Terabyte di dati
1.9 trillioni di record relative a chiamate
PROBLEMA1: Gestione di grandi quantità di dati?
AT&T
AMAZON
Ovvi problemi di scalabilità ed efficienza …10
Approccio basato su files
➢ Approccio Convenzionale (basato su files)
In molti scenari pratici, i dati devono essere a disposizione di
una moltitudine di utenti/applicazioni per accessi concorrenti.
PROBLEMA2: Condivisione ed accesso concorrente?
Es. Dati del personale strutturato di UNIBO
UFFICIO
STIPENDI
SEGRETERIE
DIDATTICHE
ANAGRAFE
UNIBODati retribuzioni
Dati corsi,esami, etc
11
Approccio basato su files
➢ Approccio Convenzionale (basato su files)
➢ Accesso a file condivisi avviene attraverso le politiche di
accesso del file-system Lock a livello di file, bassa
granularità di concorrenza, prestazioni limitate!
➢ Applicazioni diverse devono conoscere l’esatta collocazione
e formato dei dati Aggiornamento del formato dei dati?
➢ In alternativa: replica dei dati presso i vari sistemi/utenti
che ne fanno utilizzo Consistenza delle repliche?
PROBLEMA2: Condivisione ed accesso concorrente?
12
Gran parte dei sistemi informatici hanno necessità
di gestire dati in maniera persistente.
Persistente Dati memorizzati su
memoria secondaria
➢ Approccio convenzionale (basato su files)
➢ Approccio strutturato (basato su software di gestione dei dati)
APPROCCI di GESTIONE
Approcci di gestione dei dati
13
Caratteristiche dei DBMS
Un DBMS è un sistema software che è in grado di gestire
collezioni di dati grandi, condivise e persistenti, in maniera
efficiente e sicura.
(ALCUNE) FUNZIONALITA’:
➢ Creazione di una base di dati e memorizzazione su
memoria secondaria
➢ Accesso in lettura/scrittura ad i dati
➢ Condivisione di dati tra diversi utenti/applicazioni
➢ Protezione dei dati da accessi non autorizzati
➢ Reliability dei dati in caso di guasti (hardware/software)
➢ …
14
Caratteristiche dei DBMS
Un DBMS è un sistema software che è in grado di gestire
collezioni di dati grandi, condivise e persistenti, in maniera
efficiente e sicura.
(ALCUNE) FUNZIONALITA’:
➢ Creazione di una base di dati e memorizzazione su
memoria secondaria
➢ Accesso in lettura/scrittura ad i dati
➢ Condivisione di dati tra diversi utenti/applicazioni
➢ Protezione dei dati da accessi non autorizzati
➢ Reliability dei dati in caso di guasti (hardware/software)
➢ …
Da qui in avanti nel corso, una base di dati è una
collezione di dati gestita da un DBMS!
15
Separazione
Dati/Applicazioni con
DBMS
➢ Tramite i DBMS, è possibile implementare un paradigma
di separazione di dati ed applicazioni …
➢ Le applicazioni non necessitano di conoscere la struttura
fisica dei dati (es. come e dove sono memorizzati su
disco) ma solo la struttura logica (cosa rappresentano).
APPLICAZIONE
DMBS
FILES
Accesso Fisico
ai dati
Accesso Logico
ai dati
M1
M2
M2
Moduli del DBMS
16
APPLICAZIONE
DMBS
FILES
M1
M2
M2
Moduli del DBMS
APPLICAZIONE
FILES
APPROCCIO
CONVENZIONALE
APPROCCIO
DBMS-BASED
Linguaggio
DDL/DML
Separazione
Dati/Applicazioni con
DBMS
17
DBMS: Quali?
4th Dimension
Adabas D
Alpha Five
Apache Derby
Aster Data
Altibase
BlackRay
CA-Datacom
Clarion
Clustrix
CSQL
CUBRID
Daffodil database
DataEase
Database Management
Dataphor
Java DB
Empress Embedded
Database
EnterpriseDB
eXtremeDB
FileMaker Pro
Firebird
Greenplum
GroveSite
H2
Helix database
HSQLDB
IBM DB2
IBM Lotus Approach
Infobright
Informix
Ingres
InterBase
InterSystems Caché
GT.M
Linter
MariaDB
MaxDB
Microsoft Access
Microsoft Jet Database
Engine (part of
Microsoft Access)
Microsoft SQL Server
Lista (parziale) dei DBMS più utilizzati.
18
DBMS: Quali?
Microsoft SQL Server Express
Microsoft Visual FoxPro
Mimer SQL
MonetDB
mSQL
MySQL
Netezza
NonStop SQL
Openbase
OpenLink Virtuoso
OpenLink Virtuoso Server
OpenOffice.org Base
Oracle
Oracle Rdb for OpenVMS
Panorama
PostgreSQL
Progress Software
RDM Server
SAND CDBMS
Sav Zigzag
ScimoreDB
SmallSQL
SQLBase
SQLite
Sybase SQL AdvantageServer
Teradata
TimesTen
txtSQL
Unisys RDMS 2200
UniData
UniVerse
Vertica
VMDS
VISTADB
Lista (parziale) dei DBMS
più utilizzati.
19
Gestore della
memoria secondaria
Gestore
del buffer
Gestore dei
metodi d’accesso
Gestore di
Interrogazioni e aggiornamenti
Gestore delle
transazioni
Gestore della
concorrenzaGestore della
affidabilità
➢ I DBMS sono software complessi
(e per questo costosi!)
➢ L’architettura di un DBMS
include tipicamente molte
componenti con ruoli diversi.
Componenti di un DBMS
20
Componenti di un DBMS
Efficienza
Affidabilità Sicurezza
Concorrenza
DBMS
21
Caratteristiche di un DBMS:
Efficienza
Efficienza di un DBMS nella gestione dei dati …
➢ DBMS forniscono
adeguate strutture dati
per organizzare I dati
all’interno dei file, e per
supportare le operazioni di
ricerca/aggiornamento.
➢ In genere, parliamo di
strutture dati ad albero o
tabelle hash.
22
Indice struttura che contiene informazioni
sulla posizione di memorizzazione delle tuple
sulla base del valore del campo chiave.
Q. A che serve un indice?IndiceIntroduzione 1
Capitolo 1 20
Capitolo 2 40
Capitolo 3 60
Conclusioni 65ACCESSO DIRETTO
Caratteristiche di un DBMS: Efficienza
23
Caratteristiche di un DBMS:
Efficienza
Efficienza di un DBMS nella gestione dei dati …
➢Le strutture ad albero dinamiche di tipo B (B-tree)
e B+(B+-tree) sono quelle più frequentemente
utilizzate per la realizzazione di indici.
4
1
9
8
530
➢ Ricerca O(log(N))
➢ Inserimento O(log(n))
➢ Cancellazione O(log(n))
24
Caratteristiche di un DBMS:
Efficienza
➢ Ottimizzazione di operazioni di ricerca (interrogazioni)
PROGRAMMA SQL
ANALISI SINTATTICA & LESSICALE
OTTIMIZZAZIONE ALGEBRICA
OTTIMIZZAZIONE BASATA SU MODELLO DEI COSTI
ACCESSO ai DATI
La query SQL viene tradotta
in una sequenza di operatori
algebrici per l’accesso ai dati
(algebra relazionale).
PA1A2..An(sCondizione(T1 T2 ... Tm))
25
Componenti di un DBMS
Efficienza
Affidabilità Sicurezza
Concorrenza
DBMS
26
➢ In molti sistemi è fondamentale gestire
operazioni concorrenti di accesso ai dati …
Processing di più di 7.7 milioni
di pagamenti ogni giorno
La maggior parte dei DBMS forniscono un livello di
granularità di locking più fine di quello
convenzionale (a livello di tabella, pagina, o singola entry).
Caratteristiche di un DBMS:
Gestione della Concorrenza
27
➢Al tempo stesso, un DBMS deve garantire il
fatto che accessi da parte di applicazioni
diverse non interferiscano tra loro, lasciando il
sistema in uno stato inconsistente …
Es. Sistema informativo dei conti bancari
➢ 2 richieste da gestire al tempo t:
➢ Prelievo di 100 euro dal conto X
➢ Prelievo di 80 euro dal conto X
➢ Saldo del conto X at tempo t: 120 euro
Caratteristiche di un DBMS:
Gestione della Concorrenza
28
ESEMPIO di ESECUZIONE (non corretta!!)
OP1
Leggi X
Calcola X-100
Scrivi X
OP2
Leggi X
Calcola X-80
Scrivi X
Schedule:
OP1: Leggi X
OP2: Leggi X
OP1: Calcola X-100
OP2: Calcola X-80
OP1: Scrivi X
OP2: Scrivi X
Valore X:
120
120
120
120
20
40 (????)
Per prevenire tali situazioni, i DBMS implementano
algoritmi di controllo della concorrenza che operazioni sui
dati (transazioni) eseguite in concorrenza producano lo stesso
risultato di un’esecuzione seriale.
Caratteristiche di un DBMS:
Gestione della Concorrenza
29
Lock Manager componente del DBMS
responsabile di gestire i lock alle risorse del DB, e di
rispondere alle richieste delle transazioni.
Caratteristiche di un DBMS:
Gestione della Concorrenza
OP1
Lock(x)
Leggi X
Calcola X-100
Scrivi X
Unlock(x)
OP2
Lock(x)
Leggi X
Calcola X-80
Scrivi X
Unlock(x)
➢Utilizzo di lock in
lettura/scrittura per
accesso a risorse
condivise (dati).
➢Algoritmi (2FL, S2FL)
per gestire ordine di
acquisizione dei lock.30
Componenti di un DBMS
Efficienza
Affidabilità Sicurezza
Concorrenza
DBMS
31
➢ Alcune operazioni sui dati sono particolarmente
delicate, e devono essere gestite in maniera
opportuna, secondo la regola del tutto o niente.
Es. Trasferimento di denaro (100$) dal conto X al conto Y.
Caratteristiche di un DBMS:
Meccanismi di Roll-back
Op1: X=X-100
Op2: Y=Y+100
CRASH!
32
➢ Alcune operazioni sui dati
sono particolarmente
delicate, e devono essere
gestite in maniera
opportuna, secondo la
regola del tutto o niente.
➢ Per questo, i DBMS devono fornire appositi
strumenti per annullare operazioni non completate
e fare roll-back dello stato del sistema …
Caratteristiche di un DBMS:
Meccanismi di Roll-back
33
In molti casi i DBMS mettono a disposizione
appositi strumenti ed algoritmi per garantire la
persistenza dei dati anche in presenza di
malfunzionamenti hardware/software.
Il controllore di affidabilità utilizza dei log, nel
quale sono indicate tutte le operazioni svolte dal
DBMS.
➢ Algoritmi ad-hoc (es. algorimo di ripresa a
caldo/a freddo) per ripristinare lo stato dei dati
a partire dai log del DBMS.
Caratteristiche di un DBMS:
Persistenza ed Affidabilità
34
Il controllore di affidabilità utilizza un log,
nel quale sono indicate tutte le operazioni
svolte dal DBMS.
Time
10:34 10:35 10:36
T1, INSERT T2, DELETE T3, INSERT
Tramite il log, e’ possibile fare do/undo delle operazioni…
Caratteristiche di un DBMS:
Persistenza ed Affidabilità
35
Il controllore di affidabilità utilizza un log,
nel quale sono indicate tutte le operazioni
svolte dal DBMS.
Time
10:34 10:35 10:36
T1, INSERT T2, DELETE T3, INSERT
Tramite il log, e’ possibile fare do/undo delle operazioni…
Caratteristiche di un DBMS:
Persistenza ed Affidabilità
Q. Dove/come memorizzare il file di log?
36
Transazione insieme di operazioni
(lettura/scrittura) eseguite su un DB dal DBMS.
Caratteristiche di un DBMS:
Persistenza ed Affidabilità
Proprietà ACID di un sistema transazionale
➢ Atomicita’ La transazione deve essere eseguita con la regola del
“tutto o niente”.
➢ Consistenza La transazione deve lasciare il DB in uno stato
consistente, vincoli di integrità sui dati non devono essere violati.
➢ Isolamento L’esecuzione di una transazione deve essere
indipendente dalle altre.
➢ Persistenza L’effetto di una transazione conclusa con successo non
deve essere perso.37
Componenti di un DBMS
Efficienza
Affidabilità Sicurezza
Concorrenza
DBMS
38
La maggior parte dei DBMS implementa
politiche di controllo degli accessi ad i dati
mediante sistemi di permessi:
➢ Quali operazioni sono consentite all’utente X?
➢ Quali dati appartengono all’utente X?
Caratteristiche di un DBMS:
Multi-utenza e Sicurezza
Utente OPERAZIONE DATO PERMESSO
Utente X Lettura Stipendio di X Consentito
Utente X Lettura Stipendio di Y Consentito
Utente Y Scrittura Stipendio di Y Negato
UTENTE X
UTENTE Y
39
Possibilità di gestire grandi moli di dati
aumentando il numero di nodi usati per lo
storage (database distribuito).
Caratteristiche di un DBMS:
Scalabilità (orizzontale)
40
f(nuovo_dato)
La funzione di
sharding
determina la
politica di
distribuzione dei
dati tra i nodi
Ulteriori funzionalità di un database distribuito.
1. Meccanismi di Load-balancing
2. Meccanismi di Gestione delle repliche dati
PROBLEMA. Come gestire la consistenza delle
repliche dati in presenza di partizionamenti della
rete e perdita di messaggi? CAP Theorem …
Caratteristiche di un DBMS:
Scalabilità (orizzontale)
41
Architettura a tre livelli
➢ In pratica, un DBMS può essere visto come
un’architettura software a 3 livelli …
SCHEMA
ESTERNO
SCHEMA
ESTERNOSCHEMA
ESTERNO
SCHEMA LOGICO
SCHEMA FISICO
Descrive come
si presenta il DB
Descrive cosa
rappresenta il DB
Descrive come/dove
sono memorizzati
i dati
Memorie di massa42
Livello Logico di un DBMS
I DBMS forniscono un approccio strutturato ad i dati.
???
In un DBMS, i dati sono organizzati secondo un
modello logico, che definisce i concetti
rappresentati, le associazioni dei dati, i vincoli che
questi devono rispettare.
➢ In pratica, l’utente/applicazione interagisce con i
dati del DBMS sulla base del modello logico …
43
➢ Sono stati proposti diversi modelli logici …
➢ DBMS possono differire sulla base del modello
logico dei dati che supportano:
➢ Modello Relazionale (di fatto, il più usato)
➢ Modello Gerarchico
➢ Modello Reticolare
➢ Modello ad Oggetti
➢ Approcci NoSQL (diversi)
Livello Logico di un DBMS
44
ESEMPIO: Modello Relazionale
Base di dati che gestisce le informazioni relative alla
programmazione didattica di un Corso di Laurea: elenco
corsi, con numero ore, semestre, crediti, nome e codice
identificativo di ciascun corso.
Codice Nome NumOre Semestre Crediti
010 Basi di Dati 72 1 9
001 Algoritmi 90 1 12} ISTANZE
SCHEMA
➢Nel modello relazionale, i dati sono organizzati in tabelle …
Livello Logico di un DBMS
45
➢ Il livello esterno consente di avere viste
personalizzate della base di dati da parte di
diversi utenti/applicazioni!
Codice Nome Cognome Data Nascita Livello Stipendio
001 Marco Rossi 10/10/1970 1 24000
002 Michele Bianchi 10/10/1970 1 32000
Es. Base di dati condivisa tra diversi uffici di una stessa organizzazione.
Solo alcuni uffici possono accedere a tutto il contenuto del DB!
VISTA Ufficio Anagrafe VISTA Ufficio Stipendi
Livello Esterno di un DBMS
46
INDIPENDENZA MODELLO LOGICO – MODELLO FISICO
➢ L’organizzazione logica dei dati non dipende dalle strutture
dati usate per l’effettiva memorizzazione su disco!
➢ In pratica, le applicazioni accedono al DBMS specificando i
concetti logici del modello dei dati, piuttosto che i dettagli
relativi alla loro memorizzazione.
APPLICAZIONE DBMS
Non vengono specificate
righe/colonne
nel quale queste informazioni
sono memorizzate nella
tabella!
Livello Logico di un DBMS
47
➢ Come possono utenti ed applicazioni
interagire con un DBMS?
Quasi tutti i DBMS mettono a disposizione dei linguaggi:
➢ Definizione dello schema logico (Linguaggio DDL)
➢ Manipolazione delle istanze (Linguaggio DML)
➢ Linguaggi orientati ad i dati, molto diversi da linguaggi di
programmazione “tradizionali” (es. C/C++/Java/etc)!
➢ Noi vederemo il linguaggio (DDL+DML) SQL
Interazione con un DBMS
48
Le applicazioni che si interfacciano con un DBMS:
➢ integrano codice SQL all’interno del loro codice
➢ utilizzano opportune librerie (fornite dal DBMS)
per gestire la connessione al DBMS.
APPLICAZIONEDBMSL
IBR
ER
IA Codice SQL
- Esecuzione
del codice
SQLDati/Risultati
Interazione con un DBMS
49
➢ Un esempio di modello integrato DMBS/App
molto in voga: Web Information System (WIS)
DBMSBrowser
(client)
1. HTTP request
6. HTTP response
2. Parametri3. SQL Query
➢ Esempio: Architettura AMP (Apache + MySQL + PHP)
Interazione con un DBMS
Quando usare un DBMS in un progetto SW?
➢ Necessità di gestire grandi volumi di dati
➢ Necessità di costruire sistemi data-centric con molte
operazioni di accesso ai dati
➢ Necessità di condividere dati, fornendo l’accesso a
diversi sistemi SW/applicazioni
➢ Necessità di garantire la persistenza dei dati anche a
fronte di possibili guasti e malfunzionamenti HW/SW
➢ Necessità di implementare meccanismi di sicurezza per
l’accesso ad i dati in un ambiente multi-utente
Vantaggi nell’uso di DBMS
51
Quando NON usare un DBMS in un progetto SW?
➢ Prestazioni In alcuni sistemi con richieste di
efficienza sull’elaborazione (es. real-time), l’overhead
computazionale introdotto dal DBMS può essere
eccessivo …
➢ Costo Spese per l’acquisto di DBMS, formazione
del personale, amministrazione del DB, etc
➢ Complessità Applicazioni/sistemi di dimensioni
ridotte, single-user e con pochi dati da gestire …
Svantaggi nell’uso di DBMS
52
➢ Fin’ora abbiamo parlato in generale delle
caratteristiche dei DBMS …
➢ … ma i DBMS sono tutti uguali? NO!
Differenze sostanziali, ad esempio in termini di:
Modello logico supportato (relazionale? RDBMS)
Linguaggio DDL/DML (SQL-2? SQL-3? varianti?)
Algoritmi di indicizzazione (es. R+ tree?)
Supporto alla transazioni (es. proprietà ACID?)
Gestione della concorrenza
…
Quale DBMS usare?
53
DBMS: Un po’ di storia
➢ Information Management System (IMS) è il nome di
un software sviluppato da IBM nel 1968.
➢Utilizzato come supporto
alle missioni Apollo per la
gestione dei dati
tecnici/amministrativi e
delle forniture di materiali.
➢Modello gerarchico di
gestione dei dati, motore
transazionale per la
concorrenza.54
DBMS: Un po’ di storia
➢ Nel 1970, un ricercatore della IBM (Edgar Codd)
pubblica la sua visione di modello “relazionale”
dei dati, basato sul concetto matematico di
relazione tra insiemi.
Edgar F. Codd A relational model of
data for large shared data banks
Communications of the ACM 13
(6), 377-387. 1970.
55
➢ Negli anni 1970, IBM lavora allo sviluppo di un
linguaggio basato sul modello relazionale (SQL),
ed all’implementazione di un RDBMS
sperimentale (System R SQL/DS DB2), ma
continua anche lo sviluppo del sistema IMS.
➢ Nel 1979, una piccola startup (Relational
Software Inc) produce un primo esempio di
RDBMS commerciale ... Nel 1982, Relational
Software cambia il proprio nome in Oracle
Corporation.
DBMS: Un po’ di storia
56
➢ Negli anni ‘80, compaiono i primi DBMS basati
sul modello ad oggetto (ORDBMS), che cercano
di emulare il successo del paradigma di
programmazione ad oggetti, e facilitare
l’integrazione tra DBMS e linguaggi di alto
livello (es. C++/Java)
➢ Viene sviluppata OQL – omologo di SQL per il
paradigma ad oggetti …
➢ Nonostante ciò ORDBMS restano poco diffusi!
DBMS: Un po’ di storia
57
➢Solo nel 2011, il mercato dei RDBMS ha avuto
una crescita del 16.5% con ricavi complessivi
pari a 24 miliardi di dollari.
➢ Il mercato dei RDBMS è dominato da 4 vendor, che da
soli occupano una percentuale di ricavi pari al 75% del
totale:
➢Oracle (10 billioni di dollari di ricavi nel 2011).
➢ IBM
➢Microsoft
➢ SAP Fonte: IDC
OGGI?
DBMS: Un po’ di storia
58
OGGI?
DBMS: Un po’ di storia
59
OGGI?
DBMS: Un po’ di storia
60
➢ Il mercato dei DBMS open source ...
DBMS: Un po’ di storia
61
➢ Oggi, una delle nuove linee evolutive dei DBMS
è rappresentata dall’approccio NoSQL.
➢ Idea di base: superare la rigidità del modello
relazionale nella definizione dello schema,
consentendo una più facile espansione del DB in
termini di dati, e di computazione distribuita.
➢ Molti approcci sotto la definizione NoSQL:
Es. Apache Cassandra, Apache CouchDB, ..
DBMS: Un po’ di storia
62
Il Modello Relazionale
Corso di Basi di Dati
Livelli di astrazione
In gran parte dei DBMS, i dati sono articolati su tre
livelli di astrazione:
➢ Schema Esterno descrive come i dati
appaiono per un utente o un gruppo di utenti.
➢ Schema Logico descrive l’organizzazione
logica dei dati (dettagli a breve …)
➢ Schema Fisico descrive come i dati sono
memorizzati su memoria secondaria.
Livelli di astrazione
In gran parte dei DBMS moderni, i dati sono
articolati su tre livelli di astrazione:
➢ Schema Esterno descrive come i dati
appaiono per un utente o un gruppo di utenti.
➢ Schema Logico descrive l’organizzazione logica
dei dati (dettagli a breve …)
➢ Schema Fisico descrive come i dati sono
memorizzati su memoria secondaria.
Modello Logico
In cosa consiste in pratica il Modello logico?
1. Insieme di concetti per strutturare/organizzare i
dati relativi ad un certo dominio d’interesse.
Record a struttura fissa Record a struttura variabile Grafi
<A,B,C,D,E,F,G,H,I>
<A,B,C,D,E,F,G,H,I>
<A,B,C,D,E,F,G,H,I>
<A,B,C,D,E,F,G,H,I>
<A,B,C,D,E,F,G,H,I>
<A,B,C,D>
<A>
<A,B,C,F,G,H,I>
AB
CD
E
Esempi di concetti …
Modello Logico
In cosa consiste in pratica il Modello logico?
2. Insieme di regole per modellare eventuali vincoli e
restrizioni sui dati.
Esempio di vincolo sui dati: Il voto d’esame è un numero
intero compreso tra 18 e 30.
Regole e Concetti generali indipendenti dal
dominio d’interesse che si sta considerando …
Proprietà dei livelli
Proprietà (auspicabili) dei livelli in un DBMS:
➢ Indipendenza fisica interagire con il modello
logico in modo indipendente dallo schema fisico.
➢ Indipendenza logica interagire con il livello
esterno in modo indipendente dallo schema logico
dei dati.
➢ Sono stati proposti diversi modelli logici …
➢ DBMS possono differire sulla base del modello
logico dei dati che supportano:
➢ Modello Relazionale
➢ Modello Gerarchico
➢ Modello Reticolare
➢ Modello ad Oggetti
➢ Modelli scheme-less (famiglia di approcci)
Modelli Logici
7
Modello Relazionale: overview
➢ Proposto nel 1970 da E.F. Codd, ricercatore
dell’IBM di San Jose, CA.
➢ Attualmente il più utilizzato tra i tool
disponibili.
➢ Garantisce l’indipendenza tra i livelli (esterno/fisico).
➢ Intuitivo, e basato su nozioni di algebra di base.
➢ DBMS basati sul modello relazionale
RDBMS (Oracle, MySQL, DB2, SQL Server etc)
Modello Relazionale: overview
Modello Relazionale i dati sono organizzati in record
di dimensione fissa, e divisi in tabelle (relazioni).
Nome Codice Corso Nome Docente
Basi di dati 0121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
➢Colonne della tabella (Proprietà di interesse) Attributi
➢ Intestazione della tabella (i.e. nome tabella + nome
attributi) Schema della relazione
➢Righe della tabellaIstanze della relazione
DEF. informale
Modello Relazionale: overview
Nome Codice Corso Nome Docente
Basi di dati 0121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
➢Nome della relazione: CORSI
➢Attributi: Nome, Codice del Corso, Nome Docente
➢Schema della relazione:
CORSI(Nome, Codice del Corso, Nome Docente)
➢ Istanze della relazione:
<Basi di dati, 0121, M. Di Felice>
CORSI
Modello Relazionale: overview
Nome Codice Corso Nome Docente
Basi di dati 0121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
VINCOLI sull’ordine dei dati:
➢L’ordinamento delle righe è irrilevante
➢L’ordinamento delle colonne è irrilevante.
CORSI
Modello Relazionale: overview
Nome Codice Corso Nome Docente Nome Docente
11/01/2012 0121 M. Di Felice M. Di Felice
Programmazione 0123 C. Laneve C. Laneve
Sistemi Operativi 1455 D. Sangiorgi R. Davoli
Sistemi Operativi 1455 D. Sangiorgi R. Davoli
VINCOLI sui dati della relazione
➢ Non possono esistere attributi uguali (1).
➢ Non possono esistere righe uguali (2).
➢ I dati di una colonna devono essere omogenei (3).
CORSI
Modello Relazionale: overview
Nome Codice Corso Nome Docente
E’ possibile avere uno schema di relazioni senza
istanze (es. in fase di creazione del DB) …
CORSI
Il viceversa è impossibile …
… … … …
Sistemi Operativi 1455 D. Sangiorgi R. Davoli
Sistemi Operativi 1451 D. Sangiorgi R. Davoli
Modello Relazionale: overview
Nome Codice Corso Nome Docente
Basi di dati 0121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
Ogni attributo dispone di un DOMINIO che definisce
l’insieme di valori validi per quell’attributo.
Es. dom(Nome) = string
E’ possibile avere domini ripetuti nella stessa relazione!
CORSI
Modello Relazionale: overview
Una relazione si dice in Prima Forma Normale
(PFN) se tutti gli attributi sono definiti su domini
atomici e non su domini complessi.
Nome Codice Corso Info Docente
Basi di dati 2121 M. Di Felice, Ricercatore, Codice:
13435
Programmazione 1213 C. Laneve,
Professore, Codice:6575
Sistemi Operativi 1455 D. Sangiorgi, Professore, Codice:
43242
CORSI Relazione NON in Prima Forma Normale!
Modello Relazionale: overview
Una relazione si dice in Prima Forma Normale
(PFN) se tutti gli attributi sono definiti su domini
atomici e non su domini complessi.
Nome Codice
Corso
Docente Ruolo Codice
Basi di
dati
2121 M. Di Felice Ricercatore 13435
Program
mazione
1213 C. Laneve Professore 6575
Sistemi
Operativi
1455 D. Sangiorgi Professore 43242
CORSI Relazione Normalizzata (PFN)
Rel
azio
ne
vali
da
…
… m
a n
on
ben
pro
gett
ata
!
Modello Relazionale: overview
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
Una base di dati può essere costituita da molte tabelle…
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1213 4324235245 25
1213 9854456565 18
CORSIESAMI
STUDENTI
Modello Relazionale: overview
Spesso, le informazioni contenute in relazioni
diverse sono correlate tra loro …
CORSI
ESAMI
STUDENTI
<Nome del corso, Codice docente >
<Voto
conseguito>
<Matricola, Cognome, Nome, Data di Nascita >
Modello Relazionale: overview
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
Nel modello relazionale, i riferimenti tra dati in
relazioni differenti sono espressi mediante valori.
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1213 4324235245 25
1213 9854456565 18
CORSIESAMI
STUDENTI
Modello Relazionale: overview
Nella pratica, quando si inizia a progettare una
base di dati di un certo dominio d’interesse, le
informazioni NON sono già tradotte in dati del
modello relazionale…
Es. Realizzazione di un sistema informativo per
gestire i dati di una società immobiliare.
➢ Quali dati devono essere gestiti?
➢ Quali/quante tabelle usare?
Modello Relazionale: overview
➢ Quali dati devono essere gestiti?
➢ Quali/quante tabelle usare?
PROPRIETARI IMMOBILIACQUIRENTI
Nome Cognome Codice Fiscale Data Nascita Residenza
ACQUIRENTI
Es. Realizzazione di un sistema informativo per
gestire i dati di una società immobiliare.
}
PR
OG
ET
TIS
TA
Modello Relazionale: overview
IdConto Nome Cognome Data Nascita
CLIENTE
Q. Quante relazioni/tabelle utilizzare?
Es. sistema informativo di una banca.
IdConto Data Importo
VERSAMENTO
BANCA
IdConto Data Importo Nome Cognome Data Nascita
SOLUZIONE1
SOLUZIONE2
Modello Relazionale: overview
Q: Perchè si chiama modello relazionale?
A: Una relazione sui dati può essere vista come
una relazione matematica! (con una leggera variazione).
Q2:… Com’ è definita una relazione matematica
(nella teoria degli insiemi)?
Modello Relazionale: overview
DEF. Dati n insiemi D1, D2, … Dn, una relazione
matematica sugli insiemi D1, D2, … Dn è definita
come un sottoinsieme del prodotto cartesiano
D1 x D2 x … x Dn.
DEF. Il prodotto cartesiano degli insiemi D1, D2,
… Dn è definito come l’insieme delle tuple
ordinate (d1, d2, … dn), con di Di,Î "i =1,2,...,n
Modello Relazionale: overview
Esempi di relazione (n=2):
A={a,b,c,d,e}, B={1,2,3}
Prod. Cartesiano ={(a,1),(a,2),(a,3),(b,1),(b,2),(b,3),
(c,1), (c,2), (c,3), (d,1), (d,2), (d,3), (e,1), (e,2), (e,3)}
Relazione = {(a,1),(a,2),(a,3)}
Relazione = {(a,2),(b,1),(d,3),(e,3)}
Relazione = {(d,2)}
r1 Í A´B
A´ B
r2 Í A´B
r3 Í A´B
Modello Relazionale: overview
Se usassimo la definizione classica di relazione
matematica nel modello relazionale dei dati:
Nome Codice Corso Nome Docente
Basi di dati 2121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
CORSI
CORSI Í string´ int´string
Problema: Ordinamento delle tuple in una relazione …
A´B¹ B´ AIn generale:
Modello Relazionale: overview
Dal punto di vista dei dati, i due schemi sono uguali, ma
non lo sono se consideriamo la definizione di relazione
matematica!
Nome Codice Docente
Basi di dati 2121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
Soluzione: Usare rappresentazione NON posizionale,
mediante gli attributi …
Codice Docente Nome
2121 M. Di Felice Basi di dati
1213 C. Laneve Programmazione
1455 D. Sangiorgi Sistemi Operativi
CORSI Í string´ int´string CORSI Í int´string´string
Modello Relazionale: overview
Volendo fornire una definizione rigorosa di relazione nel
modello relazionale …
➢Schema di relazione:
un nome R con un insieme di attributi A1, ..., An:
R (A1,..., An)
Corso Codice Docente
Basi di dati 2121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
CORSI(Corso, Codice, Docente)
Schema di relazione:
Modello Relazionale: overview
Volendo fornire una definizione rigorosa di relazione nel
modello relazionale …
➢Una ennupla su un insieme di attributi X è una
funzione che associa a ciascun attributo A in X un
valore del dominio di A.
➢ t[A] denota il valore della ennupla t sull'attributo A.
➢ Istanza di relazione su uno schema R(X):
insieme r di ennuple su X.
Modello Relazionale: overview
Volendo fornire una definizione rigorosa di relazione nel
modello relazionale …
Corso Codice Docente
Basi di dati 2121 M. Di Felice
Programmazione 1213 C. Laneve
Sistemi Operativi 1455 D. Sangiorgi
t1
t2
t3
t1[Corso] = “Basi di dati”
t1[Codice]=“2121”
t3[Docente]=“D. Sangiorgi”
Istanza di CORSI(Corso, Codice, Docente)= {t1,t2,t3}
Modello Relazionale: overview
Generalizzando nel caso di basi di dati composte
da più relazioni:
➢Schema di base di dati:
insieme di schemi di relazione: R = {R1(X1), ..., Rk(Xk)}
➢ Istanza di base di dati su uno schema R = {R1(X1), ...,
Rk(Xk)}: insieme di istanze di relazioni r = {r1,..., rn}
(con ri relazione sullo schema Ri)
Modello Relazionale: overview
Altre componenti del modello relazionale:
➢ Informazioni incomplete
➢ Vincoli di integrità
➢ Vincoli intra-relazionali
➢ Vincoli inter-relazionali
Modello Relazionale: overview
In una relazione, le ennuple di dati devono essere
omogenee (ossia avere tutte le stessa struttura).
PROBLEMA (1): Che accade se il valore di un
attributo per una certa ennupla non è noto?
Codice Nome Cognome Data di Nascita
21 Mario Rossi 12/4/1956
22 Vittorio Bianchi ????
IMPIEGATI
Modello Relazionale: overview
In una relazione, le ennuple di dati devono essere
omogenee (ossia avere tutte le stessa struttura).
PROBLEMA (2): Che accade se il valore di un
attributo per una certa ennupla è inesistente?
ESAMI
Codice Anno di Studi Corso Codice Docente
21 3 Basi di dati 0121
22 3 Idoneita’ inglese ????
Modello Relazionale: overview
In una relazione, le ennuple di dati devono essere
omogenee (ossia avere tutte le stessa struttura).
PROBLEMA (3): Che accade se il valore di un
attributo per una certa ennupla è senza
informazione?
➢ Il valore dell’attributo non esiste. (CASO2)
➢ Esiste ma non è noto al momento della creazione
della ennupla. (CASO1)
Modello Relazionale: overview
Una possibile soluzione per tutti e tre i casi
potrebbe essere quella di colmare le informazioni
mancanti usando “valori speciali”.
➢ Si richiedono valori speciali per ogni attributo.
➢ Si richiede di conoscere la semantica dei valori
“speciali” da parte delle applicazioni.
Codice Anno di Studi Corso Codice Docente
21 3 Basi di dati 0121
22 3 Idoneita’ inglese 0000
Modello Relazionale: overview
In alternativa: le informazioni mancanti sono
etichettate con il valore NULL.
➢ t[A], per ogni attributo A, è un valore del
dominio dom(A) oppure il valore NULL.
➢ Tramite valori NULL, è possibile gestire i 3 casi
visti in precedenza (valori non noti, inesistenti o
senza informazione), senza necessità di operare
distinzione tra gli stessi.
Modello Relazionale: overview
➢ Valore di attributo non noto:
Codice Nome Cognome Data di Nascita
21 Mario Rossi 12/4/1956
22 Vittorio Bianchi NULL
IMPIEGATI
➢ Valore di attributo inesistente: ESAMI
Codice Anno di Studi Corso Codice Docente
21 3 Basi di dati 0121
22 3 Idoneita’ inglese NULL
Modello Relazionale: overview
➢ E’ fondamentale limitare il numero di valori
NULL in una relazione … perche’?
STIPENDI
Codice Nome Cognome Qualifica Stipendio
21 Marco Rossi A 12000
22 Marco NULL NULL 14000
NULL NULL NULL C 16000
12 Michele Verdi D NULL
NULL Marco Rossi A 24000
Modello Relazionale: overview
➢ Trade-off tra numero di tabelle e valori NULL.
CLIENTI
Codice Nome Cognome NumeroCarta DataCarta ImportoCarta
21 Marco Rossi 12234 1/1/2014 100
22 Michele Bianchi 15678 1/2/2014 200
23 Maria Verdi NULL NULL NULL
24 Mauro Rossi NULL NULL NULL
25 Michela Bianchi NULL NULL NULL
Sistema informativo di un negozio: alcuni clienti (non tutti) possono essere
“abbonati” e disporre di una fidelity card (numero, data_sottoscrizione, importo).
Modello Relazionale: overview
➢ Trade-off tra numero di tabelle e valori NULL.
CLIENTI
Codice Nome Cognome
21 Marco Rossi
22 Michele Bianchi
23 Maria Verdi
24 Mauro Rossi
25 Michela Bianchi
Sistema informativo di un negozio: alcuni clienti (non tutti) possono essere
“abbonati” e disporre di una fidelity card (numero, data_sottoscrizione, importo).
ABBONAMENTI
Codice NumeroCarta DataCarta ImportoCarta
21 12234 1/1/2014 100
22 15678 1/2/2014 200
Modello Relazionale: overview
➢ Per definizione, NULL <> NULL
STIPENDI
Codice Nome Cognome Qualifica Stipendio
21 Marco Rossi A 12000
22 Marco NULL C 14000
22 Marco NULL C 14000
NULL Michele Verdi D 24000
NULL Michele Verdi D 24000
Righe distinte, no duplicati!
Righe distinte, no duplicati!
Modello Relazionale: overview
Altre componenti del modello relazionale:
➢ Informazioni incomplete
➢ Vincoli di integrità
➢ Vincoli intra-relazionali
➢ Vincoli inter-relazionali
Modello Relazionale: overview
Non tutte le istanze di una relazione (o di una base
di dati) possono considerarsi lecite!
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1213 4324235245 45
1213 9854456565 18L
CORSIESAMI
STUDENTI
Modello Relazionale: overview
Non tutte le istanze di una relazione (o di una base
di dati) possono considerarsi lecite!
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
4324235245 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1213 4324235245 45
1213 9854456565 18L
CORSIESAMI
STUDENTI
Modello Relazionale: overview
Non tutte le istanze di una relazione (o di una base
di dati) possono considerarsi lecite!
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1217 4324235245 25
1213 5555456565 18
CORSIESAMI
STUDENTI
Modello Relazionale: overview
Un vincolo è una funzione booleana, che associa
ad una istanza r di una base di dati definita su uno
schema R = {R1(X1), ..., Rk(Xk)} un valore di
verità (true/false).
Istanza lecita Instanza che soddisfa tutti i vincoli.
➢ Vincoli intra-relazionali (su ciascuna relazione)
➢ Vincoli di ennupla
➢ Vincoli di chiave
➢ Vincoli inter-relazionali (tra relazioni diverse)
Modello Relazionale: overview
Altre componenti del modello relazionale:
➢ Informazioni incomplete
➢ Vincoli di integrità
➢ Vincoli intra-relazionali
➢ Vincoli di ennupla
➢ Vincoli di chiave
➢ Vincoli inter-relazionali
Modello Relazionale: overview
I vincoli di ennupla esprimono condizioni su
ciascuna ennupla, considerata singolarmente.
Possono essere espressi mediante espressioni
algebriche o espressioni booleane.
Corso Studente Voto Lode
1213 4324235245 45 NO
1213 9854456565 18 SI
(voto³18)and(voto£ 30)
NOT((lode= SI )and(voto¹ 30))
C1:
C2:
Modello Relazionale: overview
I vincoli di ennupla esprimono condizioni su
ciascuna ennupla, considerata singolarmente.
Data Entrate Uscite Saldo
10/02/2012 500 0 500
11/02/2012 0 180 -180
12/02/2012 0 0 0
13/02/2012 700 200 500
14/02/2012 800 0 800
15/02/2012 200 200 0
(Saldo= Entrate-Uscite)C1:
Modello Relazionale: overview
I vincoli di ennupla esprimono condizioni su
ciascuna ennupla, considerata singolarmente.
(Saldo(GiornoX+1) = Entrate-Uscite+Saldo(GiornoX))
➢Come esprimere la condizione che il saldo di
un giorno sia dipendente dal saldo del giorno
precedente …
Non posso farlo con i vincoli di ennupla visti fin qui!
Modello Relazionale: overview
Altre componenti del modello relazionale:
➢ Informazioni incomplete
➢ Vincoli di integrità
➢ Vincoli intra-relazionali
➢ Vincoli di ennupla
➢ Vincoli di chiave
➢ Vincoli inter-relazionali
Modello Relazionale: overview
(Def. Informale) Una chiave è un insieme di
attributi che consente di identificare in maniera
univoca le ennuple di una relazione.
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
STUDENTI
➢Non esistono due studenti con la stessa matricola.
➢Data la matricola di uno studente, è possibile risalire
a tutti i suoi dati (cognome/nome/data di nascita).
Modello Relazionale: overview
Un sottoinsieme K di attributi di una relazione è
una superchiave se NON contiene due ennuple
distinte t1 e t2 con t1[K]=t2[K].
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
STUDENTI
1. {Matricola} è una superchiave
2. {Cognome} NON è una superchiave
3. {Matricola, Cognome} è una superchiave
4. {Cognome, Nome} è una superchiave
Modello Relazionale: overview
Una chiave di una relazione r è una superchiave
minimale di r (ossia non esiste un’altra superchiave
K’ che sia contenuta in K).
Matricola Cognome Nome Data Nascita
4324235245 Rossi Marco 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
STUDENTI
1. {Matricola} è una chiave
2. {Cognome} NON è una chiave
3. {Matricola, Cognome} NON e’ una chiave
4. {Cognome, Nome} è una chiave
Modello Relazionale: overview
Q1: Esiste sempre almeno una superchiave per
ogni relazione? SI’ (perche’?)
Q2: Possono esistere più superchiavi per la stessa
relazione? SI’ (esempio sotto)
Matricola Cognome Nome Data Nascita
4324235245 Rossi Marco 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
5456565653 Verdi Giovanni 12/5/1990
3223234444 Verdi Matteo 12/07/1990
STUDENTI
{Matricola}
{Cognome, Nome}
{Matricola,Cognome}
{Maricola, Nome,
Cognome}
….
Modello Relazionale: overview
Q1: Esiste sempre almeno una chiave per ogni
relazione ? SI’ (perche’?)
Q2: Possono esistere più chiavi per la stessa
relazione? SI’ (esempio sotto)
Matricola Cognome Nome Data Nascita
4324235245 Rossi Marco 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
5456565653 Verdi Giovanni 12/5/1990
3223234444 Verdi Matteo 12/07/1990
STUDENTI
{Matricola}
{Cognome, Nome}
….
Modello Relazionale: overview
In fase di progettazione, le chiavi dovrebbero essere
definite a livello di schema, e non di istanza.
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
5456565653 Verdi Giovanni 12/5/1990
3223234444 Verdi Matteo 12/07/1990
STUDENTI
➢ {Nome} e’ una chiave in questa istanza, ma è un
caso fortuito …
Modello Relazionale: overview
Come regola generale, le chiavi dovrebbero essere
definite a livello di schema, e non di istanza.
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 04/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Bianchi Marco 11/04/1988
5456565653 Verdi Giovanni 12/5/1990
3223234444 Verdi Matteo 12/07/1990
STUDENTI
➢ Per definire una chiave a livello di schema, servono
informazioni aggiuntive sul dominio dei dati …
Modello Relazionale: overview
A che servono le chiavi?
➢Per accedere a ciascuna ennupla della base di
dati, in maniera univoca.
➢Per correlare dati tra relazioni differenti.
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
0121 4324235245 30L
1213 4324235245 25
1213 9854456565 18
CORSIESAMI
Modello Relazionale: overview
Che accade se una chiave ha valori NULL?
➢ In questo caso, potrebbero NON essere garantiti
l’indirizzamento univoco delle ennuple, e le
correlazioni tra tabelle diverse…
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 04/12/1987
NULL Bianchi Marco 04/12/1987
9854456565 Bianchi Marco NULL
5456565653 Verdi Giovanni 12/5/1990
NULL Verdi Matteo 12/07/1990
STUDENTI
Modello Relazionale: overview
Chiave primaria chiave di un relazione su cui
NON sono ammessi valori NULL.
Gli attributi di una chiave primaria sono in genere
indicati con una sottolineatura.
Matricola Cognome Nome DataNascita
4324235245 Rossi Giorgio 04/12/1987
NULL Bianchi Marco 04/12/1987
9854456565 Bianchi Marco NULL
5456565653 Verdi Giovanni 12/5/1990
3223234444 Verdi Matteo 12/07/1990
STUDENTI
Modello Relazionale: overview
Chiave primaria chiave di un relazione su cui
NON sono ammessi valori NULL.
Gli attributi di una chiave primaria sono in genere
indicati con una sottolineatura.
Matricola Cognome Nome DataNascita
4324235245 Rossi Giorgio 04/12/1987
STUDENTI
STUDENTI(Matricola, Cognome, Nome, DataNascita)
Modello Relazionale: overview
Ogni relazione deve disporre di una chiave
primaria.
Come fare nel caso tutte le chiavi presentino dei valori
NULL? Aggiungere codici o identificativi progressivi …
Codice Nome Cognome Reparto Data
ricovero
Data
dimissione
1 NULL NULL Rianimazione NULL 10/02/2012
2 Bianchi Marco Dermatologia NULL 10/04/2012
3 Bianchi Marco Ortopedia 08/01/2011 10/02/2012
4 Verdi Giovanni Ortopedia 08/01/2011 NULL
5 Verdi Matteo Ortopedia 23/01/2011 NULL
RICOVERI
Modello Relazionale: overview
Una chiave può essere composta da più attributi.
Squadra1 Squadra2 Data Punti1 Punti2
Pol. Rossi Pol. Bianchi 10/04/2012 70 80
Pol. Verdi Pol. Rossi 10/06/2012 65 102
Virtus Palestra Grigi 10/09/2012 100 50
PARTITA
PARTITA(Squadra1,Squadra2, Dati, Punti1, Punti2)
Modello Relazionale: overview
Una chiave può essere composta da piu’ attributi.
Squadra1 Squadra2 Data Punti1 Punti2
Pol. Rossi Pol. Bianchi 10/04/2012 70 80
Pol. Rossi Pol. Bianchi NULL 65 102
Virtus Palestra Grigi 10/09/2012 100 50
PARTITA
Squadra1 Squadra2 Data Punti1 Punti2
Pol. Rossi Pol. Bianchi 10/04/2012 70 80
Pol. Rossi Pol. Bianchi 10/06/2012 65 102
Virtus Palestra Grigi 10/09/2012 100 50
PARTITA
Modello Relazionale: overview
Altre componenti del modello relazionale:
➢ Informazioni incomplete
➢ Vincoli di integrità
➢ Vincoli intra-relazionali
➢ Vincoli di ennupla
➢ Vincoli di chiave
➢ Vincoli inter-relazionali
Modello Relazionale: overview
➢ Nel modello relazionale, una base di dati può essere
composta da molte relazioni collegate tra loro.
➢ Collegamenti tra relazioni differenti sono espresse
mediante valori comuni in attributi replicati.
Codice Nome Cognome Cellulare
1 Michele Rossi 4243242
2 Luca Bianchi 5442432
3 Nicola Gialli 4324234
4 Luca Gialli 6564546
UTENTE
Titolo Data CodUtente
… … 1
… … 1
… … 2
… … 4
PRESTITI
Modello Relazionale: overview
Matricola Nome Cognome
12345 Michele Rossi
67890 Luca Bianchi
12123 Nicola Gialli
1233 Luca Gialli
12567 Michele Rosi
Provinci
a
Numero Proprietario
BO 3F7634 Pietro Verdi
RM 4G2121 Luca Verdi
FI 23G234 Tony Ricci
VIGILI
AUTO
Codice Data Agente Provincia Numero
C123 05/02/2012 748748 BO 3F7634
C345 07/09/2012 67890 MI 2746H7
C466 09/09/2012 12567 FI 23G234
INFRAZIONI
Modello Relazionale: overview
In molti scenari d’uso, risulta utile imporre un
vincolo sulle dipendenze tra relazioni.
Ogni riga della tabella referenziante si collega
al massimo ad una riga della riga della tabella
referenziata, sulla base dei valori comuni
nell’attributo/negli attributi replicati.
X1 X2 Xn Y1 Y2 Ym
Modello Relazionale: overview
Un vincolo di integrità referenziale (“foreign
key”) fra gli attributi X di una relazione R1 e
un’altra relazione R2 impone ai valori (diversi da
NULL) su X in R1 di comparire come valori
della chiave primaria di R2.
In pratica: consente di collegare le informazioni
tra tabelle diverse attraverso valori comuni …
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL FCO Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30Vincolo di integrità referenziale tra:
➢ attributo Pilota della relazione VOLI e la relazione PILOTI.
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL FCO Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30Vincolo di integrità referenziale tra:
➢ Attributo Partenza della relazione VOLI e la relazione AEROPORTI.
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL FCO Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30Vincolo di integrità referenziale tra:
➢ Attributo Arrivo della relazione VOLI e la relazione AEROPORTI.
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL MPX Alitalia 124
AF 11/02/2012 BOQ FKT Air France 126
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30
Vincoli di integrità referenziale VIOLATI!
Modello Relazionale: overview
Codice Data CittaPartenza Arrivo Compagnia Pilota
LH21 10/02/2012 Roma BOQ Lufthansa 123
AZ21 10/02/2012 Bologna MPX Alitalia 124
AF 11/02/2012 Atlanta FKT Air France 126
VOLI
PRENOTAZIONE
NrTicket CodiceVolo DataVolo Nome Cognome
123 LH21 10/02/2012 Mario Rossi
124 LH21 10/02/2012 Mario Bianchi
Vincoli di integritaà tra PRENOTAZIONE.{CodiceVolo,DataVolo}
VOLI [Vincoli su piu’ attributi!!! ]
Modello Relazionale: overview
Codice Data CittaPartenza Arrivo Compagnia Pilota
LH21 10/02/2012 Roma BOQ Lufthansa 123
AZ21 10/02/2012 Bologna MPX Alitalia 124
AF 11/02/2012 Atlanta FKT Air France 126
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
CMP Roma 5
ATL Atlanta 40
FKF Francoforte 30
Vincolo di integrità referenziale tra VOLI.CittaPartenza AEROPORTI? NO!
Modello Relazionale: overview
➢ Il vincolo di integrita’ referenziale è definito tra gli
attributi di una tabella (interna) ed il nome della
tabella referenziata.
➢ Es. Attributo Arrivo della relazione VOLI e la
relazione AEROPORTI
➢ Nel modello relazionale (teorico) non è necessario
definire l’attributo della relazione AEROPORTI, in
quanto si suppone che la chiave primaria esista e sia
unica.
Modello Relazionale: overview
➢ In pratica: alcuni DBMS consentono di definire
delle relazioni senza una chiave primaria
associata!
➢Per definire il vincolo di integrità referenziale,
occorre esplicitare i nomi degli attributi (su cui
si applica il vincolo) di entrambe le tabelle:
VOLI.Arrivi AEROPORTO.IdAeroporto
➢ Notazione: SCHEMA.NomeAttributo
Modello Relazionale: overview
Può accadere che un’operazione di
aggiornamento su una relazione causi
violazioni di vincoli di integrità su altre
relazioni.
Come reagire:
➢ Non consentire l’operazione.
➢ Eliminazione a cascata.
➢ Inserimento di valori NULL.
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL FCO Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30
COSA accade se elimino una riga nella tabella AEROPORTI …
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 FCO BOQ Lufthansa 123
AZ21 10/02/2012 ATL FCO Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30
SOLUZIONE 2: Eliminazione a cascata …
Modello Relazionale: overview
Codice Data Partenza Arrivo Compagnia Pilota
LH21 10/02/2012 NULL BOQ Lufthansa 123
AZ21 10/02/2012 ATL NULL Alitalia 124
AF 11/02/2012 BOQ FKT Air France 123
VOLI
PILOTI
IdPilota Nome Cognome
123 Mario Rossi
124 Michele Bianchi
AEROPORTI
IdAeroporto Citta’ #Piste
FCO Roma 10
BOQ Bologna 5
ATL Atlanta 40
FKF Francoforte 30
SOLUZIONE 3: Inserimento di valori NULL …
Modello Relazionale: overview
➢Modello intuitivo
➢Basato su proprietà algebrico/logiche
➢Garantisce indipendenza dallo schema fisico
➢Riflessività meta-informazioni di una relazione
sono gestite a loro volta attraverso relazioni.
➢ Poca flessibilità Tutte le istanza di una relazione
devono possedere la stessa struttura …
➢ Ridondanza dei dati causata dai vincoli ...
PRO
CONS
Altri Modelli Logici
Oltre al modello relazionale (proposto negli anni
settanta), esistono altri modelli logici di
organizzazione dei dati:
➢Modello gerarchico
➢Modello reticolare
➢Modello ad oggetti
➢Modello XML-based
➢…
Altri Modelli Logici
➢ I dati sono rappresentati come record.
➢ Le associazioni tra tabelle sono rappresentate con
puntatori in una struttura ad albero.
MODELLO GERARCHICO
CLIENTI
CONTI CORRENTI
MOVIMENTI
Altri Modelli Logici
Esempi di puntatori (=riferimenti) in Java
public class Prova {
public int a;
Prova() {
a=5;
}
public static void main(String[] argv) {
Prova o1=new Prova();
Prova o2=new Prova();
o1.a=10;
o2.a=5;
System.out.println(o1.a+" "+o2.a);
}
}
COSA STAMPA
IL PROGRAMMA?
Altri Modelli Logici
Esempi di puntatori (=riferimenti) in Java
public class Prova {
public int a;
Prova() {
a=5;
}
public static void main(String[] argv) {
Prova o1=new Prova();
Prova o2=o1;
o1.a=10;
o2.a=5;
System.out.println(o1.a+" "+o2.a);
}
}
COSA STAMPA
IL PROGRAMMA?
Altri Modelli Logici
Esempi di puntatori (=riferimenti) in Java
public class Prova {
public int a;
Prova() {
a=5;
}
public static void main(String[] argv) {
Prova o1=new Prova();
Prova o2=o1;
o1.a=10;
o2.a=5;
System.out.println(o1.a+" "+o2.a);
}
}
o1
10
a
o2
Altri Modelli Logici
Matricola Cognome Nome Data Nascita
4324235245 Rossi Giorgio 12/12/1987
6247673587 Bianchi Michele 04/12/1987
9854456565 Verdi Marco 11/04/1988
In molti modelli (es. gerarchico, reticolare, oggetti), i
riferimenti tra tabelle sono definiti mediante puntatori.
Nome Corso Codice
Corso
Codice Docente
Basi di dati 0121 00
Programmazione 1213 01
Sistemi Operativi 1455 02
Corso Studente Voto
30L
25
18
CORSIESAMI
STUDENTI
➢ I dati sono rappresentati come record.
➢ Le associazioni tra tabelle sono rappresentate con
puntatori in una struttura a grafo complesso.
MODELLO RETICOLARE
PROFESSORI
CORSI
STUDENTI
Altri Modelli Logici
➢ Una base di dati è una collezione di oggetti.
➢ Ogni oggetto ha un indentificatore univoco (OID)
gestito dal sistema (a differenza delle chiavi).
➢ Ogni oggetto ha uno stato, definito come una
struttura complessa a partire da dati semplici.
➢ Ogni oggetto ha dei metodi che consentono di
manipolare lo stato.
➢ Gli oggetti possono essere incapsulati in altri
oggetti, estesi (mediante ereditarietà), etc
MODELLO AD OGGETTI
Altri Modelli Logici
➢ Non un singolo modello, ma un insieme di
approcci accomunati dal tentativo di superare la
rigidità del modello relazionale, e di migliorare la
scalabilità della gestione di una base di dati in
ambienti distribuiti.
➢Approcci Key/Value Redis, BigTable, etc
➢Approcci document-oriented (JSON/XML)
MODELLI NO-SQL
Altri Modelli Logici