a cura di: campi aldo

156
A cura di: Campi Aldo Rif.PA. 2017-7220/RER Biennio 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”

Upload: others

Post on 29-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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”

Page 2: A cura di: Campi Aldo

Corso di Basi di Dati

Introduzione ai Database

Management System (DBMS)

1

Page 3: A cura di: Campi Aldo

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

Page 4: A cura di: Campi Aldo

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

Page 5: A cura di: Campi Aldo

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

Page 6: A cura di: Campi Aldo

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

Page 7: A cura di: Campi Aldo

➢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

Page 8: A cura di: Campi Aldo

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

Page 9: A cura di: Campi Aldo

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

Page 10: A cura di: Campi Aldo

➢ 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

Page 11: A cura di: Campi Aldo

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

Page 12: A cura di: Campi Aldo

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

Page 13: A cura di: Campi Aldo

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

Page 14: A cura di: Campi Aldo

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

Page 15: A cura di: Campi Aldo

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

Page 16: A cura di: Campi Aldo

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

Page 17: A cura di: Campi Aldo

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

Page 18: A cura di: Campi Aldo

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

Page 19: A cura di: Campi Aldo

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

Page 20: A cura di: Campi Aldo

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

Page 21: A cura di: Campi Aldo

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

Page 22: A cura di: Campi Aldo

Componenti di un DBMS

Efficienza

Affidabilità Sicurezza

Concorrenza

DBMS

21

Page 23: A cura di: Campi Aldo

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

Page 24: A cura di: Campi Aldo

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

Page 25: A cura di: Campi Aldo

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

Page 26: A cura di: Campi Aldo

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

Page 27: A cura di: Campi Aldo

Componenti di un DBMS

Efficienza

Affidabilità Sicurezza

Concorrenza

DBMS

26

Page 28: A cura di: Campi Aldo

➢ 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

Page 29: A cura di: Campi Aldo

➢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

Page 30: A cura di: Campi Aldo

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

Page 31: A cura di: Campi Aldo

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

Page 32: A cura di: Campi Aldo

Componenti di un DBMS

Efficienza

Affidabilità Sicurezza

Concorrenza

DBMS

31

Page 33: A cura di: Campi Aldo

➢ 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

Page 34: A cura di: Campi Aldo

➢ 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

Page 35: A cura di: Campi Aldo

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

Page 36: A cura di: Campi Aldo

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

Page 37: A cura di: Campi Aldo

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

Page 38: A cura di: Campi Aldo

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

Page 39: A cura di: Campi Aldo

Componenti di un DBMS

Efficienza

Affidabilità Sicurezza

Concorrenza

DBMS

38

Page 40: A cura di: Campi Aldo

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

Page 41: A cura di: Campi Aldo

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

Page 42: A cura di: Campi Aldo

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

Page 43: A cura di: Campi Aldo

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

Page 44: A cura di: Campi Aldo

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

Page 45: A cura di: Campi Aldo

➢ 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

Page 46: A cura di: Campi Aldo

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

Page 47: A cura di: Campi Aldo

➢ 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

Page 48: A cura di: Campi Aldo

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

Page 49: A cura di: Campi Aldo

➢ 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

Page 50: A cura di: Campi Aldo

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

Page 51: A cura di: Campi Aldo

➢ 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

Page 52: A cura di: Campi Aldo

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

Page 53: A cura di: Campi Aldo

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

Page 54: A cura di: Campi Aldo

➢ 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

Page 55: A cura di: Campi Aldo

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

Page 56: A cura di: Campi Aldo

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

Page 57: A cura di: Campi Aldo

➢ 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

Page 58: A cura di: Campi Aldo

➢ 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

Page 59: A cura di: Campi Aldo

➢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

Page 60: A cura di: Campi Aldo

OGGI?

DBMS: Un po’ di storia

59

Page 61: A cura di: Campi Aldo

OGGI?

DBMS: Un po’ di storia

60

Page 62: A cura di: Campi Aldo

➢ Il mercato dei DBMS open source ...

DBMS: Un po’ di storia

61

Page 63: A cura di: Campi Aldo

➢ 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

Page 64: A cura di: Campi Aldo

Il Modello Relazionale

Corso di Basi di Dati

Page 65: A cura di: Campi Aldo

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.

Page 66: A cura di: Campi Aldo

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.

Page 67: A cura di: Campi Aldo

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 …

Page 68: A cura di: Campi Aldo

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 …

Page 69: A cura di: Campi Aldo

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.

Page 70: A cura di: Campi Aldo

➢ 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

Page 71: A cura di: Campi Aldo

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)

Page 72: A cura di: Campi Aldo

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

Page 73: A cura di: Campi Aldo

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

Page 74: A cura di: Campi Aldo

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

Page 75: A cura di: Campi Aldo

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

Page 76: A cura di: Campi Aldo

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

Page 77: A cura di: Campi Aldo

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

Page 78: A cura di: Campi Aldo

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!

Page 79: A cura di: Campi Aldo

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

!

Page 80: A cura di: Campi Aldo

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

Page 81: A cura di: Campi Aldo

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 >

Page 82: A cura di: Campi Aldo

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

Page 83: A cura di: Campi Aldo

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?

Page 84: A cura di: Campi Aldo

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

Page 85: A cura di: Campi Aldo

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

Page 86: A cura di: Campi Aldo

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)?

Page 87: A cura di: Campi Aldo

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

Page 88: A cura di: Campi Aldo

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

Page 89: A cura di: Campi Aldo

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:

Page 90: A cura di: Campi Aldo

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

Page 91: A cura di: Campi Aldo

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:

Page 92: A cura di: Campi Aldo

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.

Page 93: A cura di: Campi Aldo

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}

Page 94: A cura di: Campi Aldo

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)

Page 95: A cura di: Campi Aldo

Modello Relazionale: overview

Altre componenti del modello relazionale:

➢ Informazioni incomplete

➢ Vincoli di integrità

➢ Vincoli intra-relazionali

➢ Vincoli inter-relazionali

Page 96: A cura di: Campi Aldo

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

Page 97: A cura di: Campi Aldo

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 ????

Page 98: A cura di: Campi Aldo

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)

Page 99: A cura di: Campi Aldo

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

Page 100: A cura di: Campi Aldo

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.

Page 101: A cura di: Campi Aldo

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

Page 102: A cura di: Campi Aldo

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

Page 103: A cura di: Campi Aldo

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).

Page 104: A cura di: Campi Aldo

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

Page 105: A cura di: Campi Aldo

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!

Page 106: A cura di: Campi Aldo

Modello Relazionale: overview

Altre componenti del modello relazionale:

➢ Informazioni incomplete

➢ Vincoli di integrità

➢ Vincoli intra-relazionali

➢ Vincoli inter-relazionali

Page 107: A cura di: Campi Aldo

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

Page 108: A cura di: Campi Aldo

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

Page 109: A cura di: Campi Aldo

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

Page 110: A cura di: Campi Aldo

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)

Page 111: A cura di: Campi Aldo

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

Page 112: A cura di: Campi Aldo

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:

Page 113: A cura di: Campi Aldo

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:

Page 114: A cura di: Campi Aldo

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!

Page 115: A cura di: Campi Aldo

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

Page 116: A cura di: Campi Aldo

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).

Page 117: A cura di: Campi Aldo

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

Page 118: A cura di: Campi Aldo

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

Page 119: A cura di: Campi Aldo

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}

….

Page 120: A cura di: Campi Aldo

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}

….

Page 121: A cura di: Campi Aldo

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 …

Page 122: A cura di: Campi Aldo

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 …

Page 123: A cura di: Campi Aldo

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

Page 124: A cura di: Campi Aldo

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

Page 125: A cura di: Campi Aldo

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

Page 126: A cura di: Campi Aldo

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)

Page 127: A cura di: Campi Aldo

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

Page 128: A cura di: Campi Aldo

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)

Page 129: A cura di: Campi Aldo

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

Page 130: A cura di: Campi Aldo

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

Page 131: A cura di: Campi Aldo

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

Page 132: A cura di: Campi Aldo

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

Page 133: A cura di: Campi Aldo

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

Page 134: A cura di: Campi Aldo

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 …

Page 135: A cura di: Campi Aldo

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.

Page 136: A cura di: Campi Aldo

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.

Page 137: A cura di: Campi Aldo

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.

Page 138: A cura di: Campi Aldo

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!

Page 139: A cura di: Campi Aldo

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!!! ]

Page 140: A cura di: Campi Aldo

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!

Page 141: A cura di: Campi Aldo

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.

Page 142: A cura di: Campi Aldo

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

Page 143: A cura di: Campi Aldo

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.

Page 144: A cura di: Campi Aldo

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 …

Page 145: A cura di: Campi Aldo

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 …

Page 146: A cura di: Campi Aldo

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 …

Page 147: A cura di: Campi Aldo

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

Page 148: A cura di: Campi Aldo

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

➢…

Page 149: A cura di: Campi Aldo

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

Page 150: A cura di: Campi Aldo

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?

Page 151: A cura di: Campi Aldo

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?

Page 152: A cura di: Campi Aldo

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

Page 153: A cura di: Campi Aldo

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

Page 154: A cura di: Campi Aldo

➢ 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

Page 155: A cura di: Campi Aldo

➢ 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

Page 156: A cura di: Campi Aldo

➢ 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