Sei sulla pagina 1di 121

Appunti

di

Sistemi di Basi di Dati


1.2ª ed.

per le lauree triennali


di Informatica

a.a. 2010-11

Prof. Ezio Lefons

Un Corso Online di Basi di Dati è alla URL: http://db-course.di.uniba.it/ATutor4/login.php


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. i

Indice
Appunti di Sistemi di Basi di Dati 1.2ª ed. per le lauree triennali di Informatica a.a.
2010-11 Prof. Ezio Lefons .................................................................................... 1 
Strutture informative: DATO ....................................................................................1 
Strutture informative: CAMPO ..................................................................................2 
Strutture informative: RECORD ................................................................................ 3 
Strutture informative: ARCHIVIO.............................................................................. 4 
Sistemi di archiviazione ........................................................................................... 6 
Sistemi di archiviazione: limiti ................................................................................ 7 
Sistemi di archiviazione: necessità .......................................................................... 8 
Strutture informative: BASE DI DATI ........................................................................ 9 
Sistemi di Gestione di Basi di Dati ........................................................................ 10 
Il DBMS ...................................................................................................10 
Struttura dei DBMS ............................................................................................... 12 
Sistema di comunicazione: Linguaggi ................................................................... 13 
Linguaggi di Basi di Dati: Tipi .............................................................................. 14 
Sistema di comunicazione: Interfacce ................................................................... 15 
Sistema di utilità .................................................................................................... 16 
I modelli di dati ...................................................................................................... 17 
Il modello relazionale ............................................................................................ 18 
Modello Relazionale: DOMINIO ............................................................................. 19 
Modello Relazionale: RELAZIONE.......................................................................... 20 
Relazione: definizioni ............................................................................................ 21 
Relazione: proprietà ............................................................................................... 22 
Relazione: Attributo e Schema .............................................................................. 23 
Nome degli Attributi .............................................................................................. 24 
Relazione: Vincolo di Integrità .............................................................................. 25 
Vincolo di dominio ...................................................................................25 
Vincolo d’integrità semantica...................................................................25 
Vincolo di chiave ......................................................................................27 
Integrità dell’entità ...................................................................................28 
Vincolo di Integrità Referenziale .............................................................29 
Violazione dei vincoli d’integrità .......................................................................... 30 
Politiche di reazione alle violazioni dell’integrità referenziale ............................. 31 
Operatori Relazionali ............................................................................................. 32 
Operatori insiemistici (´ ,¨ ,-) ......................................................................... 33 
Esempi ......................................................................................................34 
Ridenominazione (r)..............................................................................................35 
Ridenominazione ......................................................................................35 
Esempio ....................................................................................................36 
Selezione (s) .......................................................................................................... 37 
Formula proposizionale ......................................................................................... 38 
Proiezione (p) ........................................................................................................39 
Selezione e Proiezione ........................................................................................... 41 

Indice a.a 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. ii

Prodotto (*) .......................................................................................................... 42 


Join (ä) ...................................................................................................................44 
Theta-Join (äF) .......................................................................................................45 
Equi-join (äF=) ....................................................................................................... 46 
Join naturale (&, ä) ................................................................................................47 
Join completo ......................................................................................................... 48 
Join non completo .................................................................................................. 49 
Join vuoto ............................................................................................................... 50 
0 \ card (R1 ä R2) \ card (R1)*card (R2) .............................................................51 
Join esterni (ï, , , ïF , …) .................................................................................. 52 
Semijoin ( , , F , F)........................................................................................... 53 
Divisione (%, /)...................................................................................................... 54 
Esempio  Divisione.............................................................................................. 55 
Divisione ................................................................................................................56 
Riepilogo Operatori Relazionali ............................................................................ 57 
esempi + complessi ................................................................................................ 58 
VISTE (Relazioni Derivate) .................................................................................. 59 
Viste virtuali e materializzate ................................................................................ 60 
Viste: motivazioni .................................................................................................. 61 
Viste ....................................................................................................................... 62 
Viste come strumento di programmazione ............................................................ 63 
Viste e aggiornamenti ............................................................................................ 64 
SQL ........................................................................................................................65 
Sommario della sintassi di SQL () ......................................................................... 66 
DDL ....................................................................................................................... 67 
SQL Domini Elementari ........................................................................................ 68 
Tabelle ......................................................................................................70 
Vincoli Intrarelazionali .............................................................................71 
Vincoli Interrelazionali .............................................................................72 
Violazione del vincolo FOREIGN KEY .......................................................73 
DML - Interrogazioni............................................................................................. 75 
Struttura della query SQL .........................................................................75 
Esempio ....................................................................................................76 
Operatore LIKE ..........................................................................................77 
Proiezione: duplicati .................................................................................78 
Espressioni nella target list .......................................................................78 
Ordinamento .............................................................................................78 
Join ...........................................................................................................79 
inner join ...................................................................................................79 
outer join ...................................................................................................79 
Variabili (alias) .........................................................................................80 
Operatori aggregati ...................................................................................81 
Interrogazioni con Raggruppamento ........................................................82 
Predicati sui Gruppi ..................................................................................83 
Interrogazioni Insiemistiche .................................................................................. 84 

Indice a.a 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. iii

Interrogazioni Nidificate ........................................................................................ 85 


Asserzioni ..............................................................................................................87 
Viste (Virtuali) ....................................................................................................... 87 
Ciclo di vita dei Sistemi Informativi...................................................................... 89 
Progettazione guidata dai dati ................................................................................ 90 
Il modello E-R (Entità-Relationship) ..................................................................... 91 
I costrutti del modello E-R..................................................................................... 91 
Entità.........................................................................................................92 
Associazione (relationship) ......................................................................93 
Attributo ...................................................................................................94 
Cardinalità della relationship ....................................................................96 
Cardinalità dell’attributo ........................................................................100 
Identificatore dell’entità..........................................................................100 
Generalizzazione ....................................................................................103 
Proprietà di copertura della generalizzazione.........................................103 
Gerarchie di generalizzazione ................................................................106 
Ereditarietà .............................................................................................107 
Progettazione Logica ........................................................................................... 108 
Ristrutturazione EER in E-R ..................................................................109 
Attributi multivalore ...............................................................................111 
Traduzione ER vs Relazionale ............................................................................. 112 
Entità e associazioni molti-a-molti .........................................................112 
Associazioni ternarie (molti-a-molti) .....................................................113 
Associazioni uno-a-molti........................................................................113 
Entità con identificatore esterno .............................................................114 
Associazioni uno-a-uno ..........................................................................115 

Indice a.a 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 1

Strutture informative: DATO

“Cristoforo Colombo”

“125”

??????

In che via abita Gianni e a quale numero civico ?

Dato: ciò che è immediatamente presente alla conoscenza,


prima di ogni elaborazione; rappresentazione convenzio-
nale, che individua univocamente un’informazione.

Informazione: notizia, dato o elemento che consente di


avere conoscenza più o meno esatta di fatti, situazioni.

Lo stesso dato può fornire informazioni diverse


Chi ha scoperto le Americhe?
Quant’è il peso di Cristoforo Colombo in libbre ?

Dati diversi possono fornire la stessa informazione


Anni vissuti da Cristoforo Colombo: AnniVita [55];
Anni(DataMorte-DataNascita) [19/05/1506-?/?/1451]

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 2

Strutture informative: CAMPO


Il Campo (Item) è la struttura informativa più semplice

Il campo ha un nome (attributo, proprietà) e un valore

Città di residenza ‘Bari’

nome valore

Il campo può essere:

• semplice
città
• composto indirizzo via
civico

• ripetuto Ing. Bianchi Roberto via ... 5664477 / 5016688

Il valore di un campo può essere:

• dato valido

• dato non valido (nullo: sconosciuto, inesistente, …)

Ulteriori attributi del campo, oltre al nome e al valore,


sono: l’indicatore di esistenza, la chiave di accesso, il tipo,
la lunghezza, il range, i sinonimi, ecc.

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 3

Strutture informative: RECORD


Il record è una struttura informativa costituita da un
insieme di campi logicamente correlati che individuano un
elemento in una popolazione di oggetti, descritti da un
insieme di proprietà.
Esempio
nome : valore
Matricola : 444
Cognome : Rossini
Nome : Domenico
Data di nascita : 24/05/70
Indirizzo : via Cavour 13
§: §

Schema (tracciato) record


del record

Dal punto di vista fisico, il record può essere a lunghezza


• fissa
• variabile
• indefinita

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 4

Strutture informative: ARCHIVIO


Un Archivio (file) è un insieme di record omogenei
(descritti dallo stesso schema) identificato da un nome.

Principali operazioni sugli archivi:

Creazione
Inserimento
Cancellazione
Aggiornamento
Interrogazione
Ordinamento

Si può definire sugli archivi il tipo di accesso


• sequenziale
• diretto
• con chiave
• ...

Dal punto di vista fisico esistono:

Primari
File
Secondari (Indice)

Il file indice non può esistere senza un file primario di


riferimento

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 5

Esempio

ARCHIVIO (DIPENDENTI)
I# Matr Cognome Nome Ind. Residenza
1 100 Albanese Franco … Bari
2 111 Binolini Luigi … Cassano
3 222 Brio Giuseppe … Bari
4 555 Burro Filippo … Molfetta
5 101 Cialda Mario … Molfetta
6 201 Corradi Maria … Bari
7 501 Corradi Leo … Bari
8 333 Rossini Luisa … Cassano
9 301 Rota Maria … Bari
10 99 Zizzi Silvio … Molfetta

INDICE (RESIDENZA)
Residenza Record
Bari 1, 3, 6, 7, 9
Cassano 2, 8
Molfetta 4, 5, 10

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 6

Sistemi di archiviazione
Il software che permette di gestire archivi di dati a livello
di Sistema Operativo è il Sistema di archiviazione (Filing
System, File System) e consente le seguenti operazioni sui
file:

Creazione
Cancellazione
Organizzazione
Lettura
Scrittura
Modifica

generalmente dall’interno di un linguaggio di programma-


zione.

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 7

Sistemi di archiviazione: limiti


• I dati sono organizzati in insiemi indipendenti senza
possibilità di definire relazioni fra di essi

• È possibile gestire una sola registrazione per volta

• Occorre scrivere un programma anche per effettuare


elaborazioni di tipo semplice

• La struttura logica dell’archivio deve essere dichiarata


in tutti i programmi che ne fanno uso. Ciò comporta
- difficoltà a tener traccia della struttura per i nuovi
programmi
- in caso di dati riservati (sottoinsieme) bisogna dupli-
care il file (inconsistenza)

• File secondari e strutture ausiliarie per agevolare


l’accesso sono specifiche per l’applicazione

• Ogni modifica della struttura di dati o dei meccanismi di


accesso comporta una modifica anche dell’applicazione

• I meccanismi di protezione e di recovery vanno realizzati


esplicitamente.

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 8

Sistemi di archiviazione: necessità


• Integrazione dei dati
- rendere disponibili i dati per scopi generali e non
legati ad una applicazione specifica
- limitare la ridondanza
- aumentare l’efficienza (ottimizzazione globale)

• Flessibilità
- seguire l’evoluzione tecnologica
- seguire l’evoluzione delle specifiche

• Indipendenza fisica
- consentire la modifica delle strutture ausiliarie
- consentire il cambiamento dei dispositivi fisici
- consentire di cambiare la locazione dei dati nei
sistemi distribuiti
- …

• Indipendenza logica
- consentire modifiche dello schema logico
- la gestione dello schema deve dipendere dal sistema
e non dai programmi applicativi.

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 9

Strutture informative: BASE DI DATI


Una base di dati è un insieme di dati (organizzati in archivi)
non duplicati, logicamente correlati, utilizzabili contempo-
raneamente da diversi utenti in linea.

Architettura a tre livelli di base di dati:

LIVELLO VISTA ●●● VISTA


ESTERNO ESTERNA ESTERNA

mapping
esterno/concettuale

LIVELLO
CONCETTUALE SCHEMA LOGICO
(CONCETTUALE)

mapping interno/concettuale

LIVELLO
SCHEMA INTERNO
INTERNO

BASE DI DATI MEMORIZZATA

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 10

Sistemi di Gestione di Basi di Dati


Il software responsabile della creazione, della gestione e
della cancellazione delle basi di dati è il
Sistema di Gestione di Basi di Dati o DBMS (DataBase
Management System).

Il DBMS non è parte del Sistema Operativo: utilizza le fun-


zioni del Sistema di Archiviazione per gestire i propri file.

Il DBMS può essere utilizzato contemporaneamente sia da


utenti programmatori che da utenti finali

Il DBMS permette di manipolare i dati ad un alto livello

Il DBMS

• Consente la descrizione dei dati secondo un modello

• Consente visioni differenti dell’informazione

• L’utente accede ai soli dati di suo interesse specifico

• Assicura la consistenza dei dati anche in presenza di una


loro a volte necessaria duplicazione. La modifica dei dati
comporta l’aggiornamento automatico di tutte le copie

• Garantisce la sicurezza dei dati. L’accesso all’informa-


zione è consentito solo all’utente autorizzato.

• Sincronizza l’accesso concorrente ai dati

• Provvede alle funzioni di recovery.


Parte I: Basi di Dati a.a. 2010-11
ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 11

Applicazione 1 Applicazione 2 # Applicazione n

Archivio 1 Archivio 2 Archivio n

Applicazione 1 Applicazione 2 Applicazione n


#
Definizione dati 1 Definizione dati 2 Definizione dati n

Sistema Operativo

Archivio 1 Archivio 2 # Archivio n

Applicazione 1 Applicazione 2 # Applicazione n

Sistema di Gestione Definizione Dati


di Basi di Dati
(DBMS) (Schema)

Sistema Operativo Base di


Dati

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 12

Struttura dei DBMS


In un DBMS si individuano tre componenti principali:
• Il sistema di comunicazione
• Il sistema di gestione
• Il sistema di utilità

Il sistema di comunicazione definisce i linguaggi e le


interfacce del DBMS

Il sistema di gestione è l’insieme dei moduli che realizzano,


con l’ausilio del filing system, la definizione e la gestione
dei dati, l’accesso ad essi e la loro protezione

Il sistema di utilità è costituito da un insieme di programmi


di utilità di ausilio (al DBA) per gestire il sistema di basi di
dati

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 13

Sistema di comunicazione: Linguaggi


Un linguaggio di Basi di Dati consente la

• definizione dei dati: DDL (Data Definition Language)

• definizione delle viste: VDL (View D L)

• definizione della memorizzazione: SDL (Storage D L)

• manipolazione dei dati: DML (Data Manipulation L)

o DDL, VDL e DML sono generalmente contenuti in un


unico linguaggio

o La definizione della memorizzazione è tenuta separata ed


utilizzata dallo staff del DBA (Data Base Administrator)

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 14

Linguaggi di Basi di Dati: Tipi


Vi sono due tipi di DML:

• DML di alto livello o non procedurale


- set di istruzioni interattive
- linguaggio di interrogazione (query language)
- istruzioni incapsulate (embedded) in un linguaggio di
programmazione

• DML di basso livello o procedurale


- sempre incapsulato in un linguaggio di programma-
zione

o I DML di alto livello sono set-at-a-time o set-oriented


DML in quanto possono recuperare più record con una
singola istruzione

o I DML di basso livello sono record-at-a-time DML in


quanto recuperano ed elaborano un record per volta

Il linguaggio di programmazione viene detto


Linguaggio ospite (Host Language) e
il DML Linguaggio specializzato per la gestione dati.

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 15

Sistema di comunicazione: Interfacce


Le interfacce fornite dal DBMS possono comprendere:

• Interfacce a menù per la navigazione (guidano l’utente


nella formulazione delle interrogazioni)

• Interfacce a moduli (mostrano un modulo all’utente con


i campi da compilare)

• Interfacce grafiche d’utente (mostrano all’utente un


diagramma che, con un dispositivo di puntamento, guida
l’utente a formulare l’interrogazione)

• Interfacce in linguaggio naturale

• Interfacce per utenti parametrici (mnemonico, per


abbreviare i tempi)

• Interfacce per il DBA (comandi privilegiati per creare


account e autorizzazioni)

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 16

Sistema di utilità
I programmi che aiutano il DBA a gestire il sistema,
svolgono le seguenti funzioni

• Caricamento per caricare file esistenti e specificare le


conversioni di formato

• Backup

• Riorganizzazione dei file

• Monitoraggio delle prestazioni

Parte I: Basi di Dati a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 17

I modelli di dati
• Il Modello dei Dati caratterizza il livello concettuale
(logico) e quello esterno dei DBS (DataBase System)

• È definito da regole precise e permette di esprimere le


proprietà sia statiche che dinamiche dei dati

Evoluzione dei modelli

Modello Gerarchico
Modello Reticolare
Modello Relazionale
Modelli Object-Oriented

o I modelli gerarchico e reticolare sono più vicini alle


strutture fisiche di memorizzazione, mentre il modello
relazionale è più astratto:
- nel modello relazionale si rappresentano solo valori
—anche i riferimenti fra dati in strutture (relazioni)
diverse sono rappresentati per mezzo dei valori
stessi;
- nei modelli gerarchico e reticolare si utilizzano
riferimenti espliciti (puntatori) tra i record.

o Più recentemente, è stato introdotto il modello a oggetti.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 18

Il modello relazionale
Proposto da E. F. Codd nel 1970 per favorire l’indipenden-
za dei dati, è disponibile come modello logico nei DBMS
reali solo dal 1981 (non è facile implementare l’indipenden-
za con efficienza e affidabilità!).

Si fonda sul concetto matematico di relazione.

Nelle basi di dati, le relazioni sono rappresentate in modo


naturale tramite tabelle.

I principali concetti del modello relazionale sono

Dominio
Relazione
Attributo
Schema di relazione
Vincolo di integrità.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 19

Modello Relazionale: DOMINIO


Un dominio D è un insieme di valori atomici (indivisibili).

Esempio

Città = {Firenze, Matera, Sassari, Chieti, Terni, …},


Regione = {Basilicata, Toscana, Sardegna, Umbria, …}
Tel = l’insieme dei numeri telefonici a 10 cifre validi in Italia,
Cod# = valori compresi fra 1 e 20000,
Orario = l’insieme delle ore e dei minuti in un giorno.

Queste sono definizioni logiche dei domini.

Per ogni dominio, occorre specificare oltre al suo nome (D)


anche il tipo dei suoi elementi (e/o formato)

Esempio

Tipo del dominio Città: stringa di caratteri,


Regione: stringa di caratteri,
Tel: stringa di caratteri con formato
ddd/ddddddd dove d è una cifra decimale,
Cod#: numero intero fra 1 e 20000,
Orario: stringa di caratteri della forma oo,mm.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 20

Modello Relazionale: RELAZIONE


Siano D1, …, Dn domini (non necessariamente distinti).

• Il Prodotto Cartesiano D1 * D2 * # * Dn è l’insieme


delle n-ple (ennuple, tuple) ordinate

{(v1, v2, …, vn) | v1aD1, v2aD2, …, vnaDn}

• Una relazione r su D1, …, Dn è un sottoinsieme del pro-


dotto cartesiano D1*#*Dn

r • D1*D2*#*Dn.

Esempio

D1 = {1,2},
D2 = {x, y, z},
D1*D2 = {(1, x), (l, y), (l, z), (2, x), (2, y), (2, z)},
r = {(1, x), (l, z), (2, y)} • D1*D2.
forma tabellare:

D1*D2: 1 x r • D1*D2: 1 x
1 y 1 z
1 z 2 y
2 x
2 y
2 z

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 21

Relazione: definizioni
Ogni relazione definita su n domini D1, …, Dn ha grado n.

Il prodotto cartesiano di n domini ha grado n. (È una rela-


zione di grado n.)

Sia R il nome di una relazione r su D1, D2, …, Dn.

Il numero N di n-ple della relazione R è la cardinalità della


relazione R:
card(R) = N
|R| = N

card(D1*#*Dn) = card(D1)*#*card(Dn)

card(R) \ card(D1*#*Dn).

Se i domini sono finiti, allora la cardinalità del prodotto


cartesiano è finita.

Se i domini sono finiti, allora ogni relazione su di essi


definita ha cardinalità finita.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 22

Relazione: proprietà
La relazione è un insieme di n-ple ordinate. Pertanto,

• non c’è ordinamento fra le n-ple

• le n-ple sono distinte fra di loro

• ciascuna n-pla è ordinata e ha n componenti (pari al


grado): l’i-esimo valore proviene dall’i-esimo dominio.

Nelle basi di dati,


per motivi pratici (le memorie sono finite),
ogni relazione memorizzata deve essere finita.

Esempio

relazione Treno • Cod# * Città * Città * Orario * Orario


200 Firenze Chieti 08,36 17,50
500 Matera Firenze 11,20 23,30
444 Terni Chieti 17,00 19,00
3333 Matera Terni 17,00 23,30

Vi sono domini con due (o più) ruoli diversi, distinguibili


attraverso la posizione:

La struttura di relazione è posizionale.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 23

Relazione: Attributo e Schema


Una formulazione più conveniente consiste nell’associare
un nome—detto nome di attributo—a ciascun dominio.

• La coppia {nome di attributo, dominio} è detto attributo.


• L’insieme degli attributi di una relazione R ne costituisce
lo schema.
• Data una relazione R con insieme di attributi X = {Al, A2
… , An}, lo schema della relazione è denotato R(X).

L’uso degli attributi permette di denotare le componenti di


ogni n-pla per nome invece che per posizione.
L’uso del termine “tupla” anziché “n-pla” evidenzia il fatto che
l’ordine degli attributi e dei loro valori non è realmente importan-
te. Indicando con D l’insieme unione di tutti i domini di uno
schema X, la funzione totale dom: X → D che associa ad ogni
nome di attributo Ai il corrispondente dominio, consente di defini-
re la relazione R come un insieme di trasformazioni {t1, t2, …, tN}
da R in D, dette tuple. Per ogni tupla t, risulta t[Ai]adom(Ai) per
1 § i § n.

Esempio
Treno(Cod#, CittaP, CittaA, OraP, OraA)
Cod# CittàP CittaA OraP OraA
200 Firenze Chieti 08,36 17,50
500 Matera Firenze 11,20 23,30
444 Terni Chieti 17,00 19,00
3333 Matera Terni 17,00 23,30

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 24

Nome degli Attributi


I nomi degli attributi debbono essere tutti distinti nello
schema di una relazione.

Tale limitazione non si applica nell’ambito dell’intera Base


di Dati. Cioè, due distinti attributi possono avere lo stesso
nome, purchè appartengano a relazioni differenti. In tal
caso, il riferimento all’attributo avviene utilizzando la
cosiddetta notazione punto (dot notation)

Esempio

R.A, S.A

IMPIEGATO (I#, Nome, Direttore, I#)

IMPIEGATO (I#, Nome, Direttore, ID#)


DIPARTIMENTO (D#, Nome, ID#)

IMPIEGATO.Nome, IMPIEGATO.ID#,
DIPARTIMENTO.Nome, DIPARTIMENTO.ID#

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 25

Relazione: Vincolo di Integrità


Tipi di vincolo:
dominio
integrità semantica
chiave
integrità dell’entità
integrità referenziale
dipendenza funzionale
dipendenza multivalore

Vincolo di dominio

Il valore di ciascun attributo A deve


(a) essere atomico
(b) nel dominio di A dom(A).

Vincolo d’integrità semantica

a. Non tutte le combinazioni del prodotto cartesiano dei


domini hanno senso dal punto di vista semantico
Esempio Treno(Cod#, CittaP, CittaA, OraP, OraA)
TRENO
Cod# CittàP CittaA OraP OraA
200 Firenze Chieti 08,36 17,50
500 Matera Firenze 11,20 23,30
444 Temi Chieti 17,00 19,00
3333 Matera Terni 17,00 23,30
400 Firenze Firenze 17,10 19,00 ?
200 Matera Chieti 19,00 18,30 ?

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 26

b. Può essere necessario imporre vincoli generali sulla base


di dati

Esempi

lo stipendio dell’impiegato non deve essere superiore a quello


del suo capo

il numero max di ore lavorative settimanali per l’impiegato è 40

sullo schema TRENO(Cod#, CittaP, CittaA, OraP, OraA)


deve essere CittaP ≠ CittaA e OraA > OraP

sullo schema PAGAMENTO(P#, Data, Importo, Iva, Netto)


deve essere Netto = Importo − Iva

Questi vincoli possono essere specificati e imposti usando


un linguaggio di specificazione dei vincoli (di uso generale,
espressioni booleane).

Possono essere utilizzati meccanismi particolari quali


trigger e asserzioni.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 27

Vincolo di chiave

Identificazione delle tuple

Esempio

IMPIEGATO
Data
I# Cognome Nome Reparto
Assunzione
201 Primo Aldo Produzione 05/12/1998
500 Primo Aldo Produzione 06/05/1999
333 Secondo Maria Vendite 10/03/1997
400 Secondo Aldo Produzione 06/05/1999
200 Primo Ugo Magazzino 05/12/1998

a. I# identifica gli impiegati


b. L’insieme degli attributi (attributo composto)
{Cognome, Nome, Assunzione} identifica gli impiegati

Siano R una relazione con schema R(X) e K un sotto-


insieme degli attributi di R, cioè K¥X.

K è superchiave per R se ß t1, t2aR, con t1≠t2, risulta


tl[K]≠t2[K], (cioè, R non contiene tuple distinte che abbiano
gli stessi valori in K—vincolo di univocità)

K è chiave per R se è una superchiave minimale (cioè, non


contiene un’altra superchiave)

Pertanto, la superchiave K è una chiave di R se ßAaK ®t1,


t2aR, con t1≠t2, risulta t1[K−A] = t2[K−A].

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 28

La chiave è una proprietà (invariante rispetto al tempo)


dello schema di relazione che deve sussistere in ogni stato
di relazione

Esistenza delle chiavi

Le relazioni sono insiemi e pertanto non possono contenere


tuple uguali. Ogni relazione R(X) ha come superchiave X.

Poiché il grado della relazione R è finito, ogni relazione ha


(almeno) una chiave.

Chiavi candidate
Chiave primaria.

Integrità dell’entità

Il vincolo di integrità dell’entità stabilisce che nessun


valore di chiave primaria può essere nullo.

L’esistenza della chiave garantisce l’accessibilità a ciascun


dato (nome della relazione, valore della chiave, nome
dell’attributo).

Le relazioni sono associabili fra loro tramite i valori delle


chiavi (associazione basata sui valori).

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 29

Vincolo di Integrità Referenziale


VINCOLI INTERRELAZIONALI (con Violazione)

IMPIEGATO PROGETTO ASSEGNAZIONE


Imp# Nome Prog# Nome Capo_prog# Imp# Prog#
101 Rossi p21 Libri 102 101 p43
102 Bianchi p28 Riviste 110 103 p34
103 Verdi p33 Tecniche 102 104 p33
104 Neri p38 Collane NULL 104 p21
112 Bianchi p43 Hobby 102 106 p21
NULL p28
103 p33

RAPPRESENTAZIONE DIAGRAMMATICA: RELAZIONE RIFERITA ← RELAZIONE REFERENTE

IMPIEGATO ASSEGNAZIONE PROGETTO


Imp# Nome Imp# Prog# Prog# Nome Capo_prog#

VINCOLI INTRARELAZIONALI

IMPIEGATO
Imp# Nome Direttore#
IMPIEGATO
101 Rossi 102
Imp# Nome Direttore#
102 Bianchi 102
103 Verdi 103
104 Neri 104
112 Bianchi 102

ALTRO ESEMPIO
PERSONA
CF Nome Indirizzo NomePadre CFpadre NomeMadre CFmadre

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 30

Violazione dei vincoli d’integrità


Le istanze delle relazioni debbono essere coerenti con i
vincoli (integrità). Quest’ultimi vengono verificati dal DBMS
dopo ogni operazione di
• Inserimento
• Cancellazione
• Aggiornamento

Inserimento

• Possibili violazioni per tutti i tipi di vincolo. Se un


inserimento viola uno o più vincoli, l’opzione di default
consiste nel rifiutare l’inserimento

Cancellazione

• Può violare solo l’integrità referenziale (solo se la cancel-


lazione viene effettuata nella relazione riferita)

Aggiornamento (Modifica)

• Equivale ad una cancellazione seguita da un inserimento.

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 31

Politiche di reazione alle violazioni


dell’integrità referenziale
operazione sull’attributo riferito
• Standard (RESTRICT, rifiutata)
• No Action (permessa, possibile non integrità)

conseguenza sull’attributo referente


• A cascata (propagazione)
• Valore di Default
• Valore Null

Esempio

PROGETTO
PROGETTO
Prog# Nome Capo_prog#
Prog# Nome Capo_prog#
p21 Libri 102
cancellazione p28 Riviste 110
p28 Riviste 110
p33 Tecniche 102
p33 Tecniche 102
p34 Astri 110
p34 Astri 110
p43 Hobby 102
p43 Hobby 102

ASSEGNAZIONE
Imp# Prog# ASSEGNAZIONE
101 p43 propagazione Imp# Prog#
103 p34 cancellazione 101 p43
104 p33 103 p34
104 p21 a cascata 104 p33
106 p21 107 p28
107 p28 103 p33
103 p33

Parte II: Il Modello Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 32

Operatori Relazionali
Insieme di operatori

• su relazioni

• che producono relazioni

• e quindi possono essere la base per espressioni complesse

Operatori dell’algebra relazionale:

• unione, intersezione, differenza

• ridenominazione

• selezione

• proiezione

• join (join naturale, prodotto cartesiano, theta-join)

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 33

Operatori insiemistici (´ ,¨ ,-)


• le relazioni sono insiemi

i risultati debbono essere relazioni (insiemi di ennuple


omogenee)

Quindi

• è possibile applicare gli operatori insiemistici (unione,


intersezione, differenza) solo a coppie di relazioni definite
sugli stessi attributi.

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 34

Esempi

LAUREATI
Matricola Cognome Età
7274 Rossi 37
7432 Neri 39 LAUREATI ´ QUADRI
9824 Verdi 38 Matricola Cognome Età
7274 Rossi 37
QUADRI 7432 Neri 39
Matricola Cognome Età 9824 Verdi 38
9297 Neri 56 9297 Neri 56
7432 Neri 39
9824 Verdi 38

LAUREATI
Matricola Cognome Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38 LAUREATI ¨ QUADRI
Matricola Cognome Età
QUADRI 7432 Neri 39
Matricola Cognome Età 9824 Verdi 38
9297 Neri 56
7432 Neri 39
9824 Verdi 38

LAUREATI
Matricola Cognome Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38 LAUREATI - QUADRI
Matricola Cognome Età
QUADRI 7274 Rossi 37
Matricola Cognome Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 35

Ridenominazione (r)
Esempio

PATERNITÀ MATERNITÀ
Padre Figlio Madre Figlio
Adamo Caino Eva Caino
Adamo Abele Eva Set
Abramo Isacco Sara Isacco
Abramo Ismaele Agar Ismaele

PATERNITÀ ? MATERNITÀ ??

Ridenominazione

• operatore monadico (“unario”)

• intuitivamente, “modifica lo schema” lasciando inalterata


l’istanza dell’operando

• permette di superare le limitazioni imposte agli operatori


insiemistici

Esempio

PATERNITÀ rGENITORE _ PADRE (PATERNITÀ)


Padre Figlio Genitore Figlio
Adamo Caino Adamo Caino
Adamo Abele Adamo Abele
Abramo Isacco Abramo Isacco
Abramo Ismaele Abramo Ismaele

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 36

Esempio

PATERNITÀ MATERNITÀ
Padre Figlio Madre Figlio
Adamo Caino Eva Caino
Adamo Abele Eva Set
Abramo Isacco Sara Isacco
Abramo Ismaele Agar Ismaele

rGENITORE _ PADRE (PATERNITÀ) ´ rGENITORE _ MADRE (MATERNITÀ)


Genitore Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele

Esempio

IMPIEGATO OPERAIO
Cognome Agenzia Stipendio Cognome Fabbrica Salario
Rossi Roma 45 Verdi Latina 33
Neri Milano 53 Bruni Monza 32

rSEDE, RETRIBUZIONE _ AGENZIA, STIPENDIO (IMPIEGATO) ´ rSEDE, RETRIBUZIONE _ FABBRICA, SALARIO (OPERAIO)
Cognome Sede Retribuzione
Rossi Roma 45
Neri Milano 53
Verdi Latina 33
Bruni Monza 32

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 37

Selezione (s)
• operatore monadico

• produce un risultato che

- ha lo stesso schema dell’operando

- contiene un sottoinsieme delle ennuple dell’operando

Esempio

IMPIEGATO
Cognome Nome Età Stipendio
Rossi Mario 25 2.000,00
Neri Luca 40 3.000,00
Verdi Nico 36 4.500,00
Rossi Marco 40 3.900,00

sEtà < 30 v Stipendio > 4.000,00 (IMPIEGATO)


Cognome Nome Età Stipendio
Rossi Mario 25 2.000,00
Verdi Nico 36 4.500,00

Il risultato di una selezione contiene le ennuple dell’operan-


do che soddisfano la condizione di selezione.

card(sF (R)) \ card(R)

La selezione produce decomposizioni orizzontali

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 38

Formula proposizionale
• r(X) : relazione

• F : formula proposizionale su X:

- ottenuta combinando con i connettivi logici


º(OR), ª (AND), æ (NOT),

- atomi del tipo AqB o Aqc con

o A e B attributi in X

o c costante “compatibile” con dom(A), e

o q operatore di confronto (=, ], >, <, ^, \).

È definito un valore di verità per F su ciascuna ennupla t:

- AqB è vera su t se t[A] è in relazione q con t[B]

- Aqc è vera su t se t[A] è in relazione q con c

- Fl º F2, Fl ª F2 e æFl hanno l’usuale significato

la selezione sF (r) di r rispetto a F


contiene le ennuple t di r su cui F è vera

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 39

Proiezione (p)
Dati
- una relazione con schema R(X) e
- un sottoinsieme di attributi Y ¥ X
la proiezione di R su Y è così definita

pY (R) = {t[Y] | taR}

Esempio

IMPIEGATO
Matricola Cognome Filiale Stipendio
7309 Neri Napoli 55,00 K
5998 Neri Milano 64,00 K
9553 Rossi Roma 44,00 K
5698 Rossi Roma 64,00 K

Per tutti gli impiegati:

- Matricola e Cognome

- Cognome e Filiale

p Matricola, Cognome (IMPIEGATO) p Cognome, Filiale (IMPIEGATO)


Matricola Cognome Cognome Filiale
7309 Neri Neri Napoli
5998 Neri Neri Milano
9553 Rossi Rossi Roma
5698 Rossi

La proiezione produce decomposizioni verticali

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 40

card(pY(R)) \ card(R)

Se Y è superchiave di R, allora la proiezione su Y di R


contiene esattamente tante tuple quante ne ha R, cioè

card(pY (R)) = card(R)

Per la proiezione non vale la commutatività

pY (pZ (R)) = pY (R), purché Y ¥ Z.

(La proiezione consente di determinare i domini attivi)

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 41

Selezione e Proiezione

Spesso utilizzate in combinazione nelle interrogazioni

Esempio

Q1: matricola e cognome degli impiegati che guadagnano più di 50K.

IMPIEGATO
Matricola Cognome Filiale Stipendio
7309 Neri Napoli 55,00 K
5998 Neri Milano 64,00 K
9553 Rossi Roma 44,00 K
5698 Rossi Roma 64,00 K

pMatricola, Cognome(sStipendio>50 (IMPIEGATO))


Matricola Cognome
7309 Neri
5998 Neri
9553 Rossi
5698 Rossi

Commutatività di selezione e proiezione

pY (sFZ (R)) = sFZ (pY (R)), se Z¥Y

pY (sFZ (R)) = pY (sFZ (pZY (R))), altrimenti.

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 42

Prodotto (*)
Combinando selezione e proiezione, possiamo estrarre
informazioni da una relazione

Non possiamo però correlare informazioni presenti in


relazioni diverse

Siano R1(X1) e R2(X2) due schemi di relazioni.

Definiamo il Prodotto (Prodotto Cartesiano) di Rl e R2 la


relazione sullo schema X1X2 :

R1 * R2 = {t1 ) t2 su X1X2 | t1aR1 e t2aR2}

Esempio
R1 R2
A B C D E
a1 b1 c1 d1 e1
a2 b1 c2 d1 e2
c1 d1 e2
c2 d1 e1

R1*R2
A B C D E
a1 b1 c1 d1 e1
a1 b1 c2 d1 e2
a1 b1 c1 d1 e2
a1 b1 c2 d1 e1
a2 b1 c1 d1 e1
a2 b1 c2 d1 e2
a2 b1 c1 d1 e2
a2 b1 c2 d1 e1

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 43

Se n e m sono rispettivamente il grado di Rl e R2, il grado di


Rl * R2 è n+m.

card(R1 * R2) = card(R1) * card(R2)

Il prodotto è commutativo e associativo

Rl * R2 = R2 * Rl

Rl * (R2 * R3) = (R1 * R2) * R3

n
R1 * R2 * … * Rn = *i=1 Ri

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 44

Join (ä)
Dal punto di vista semantico, il Prodotto Cartesiano di
relazioni non ha molto senso.

Esempio

STUDENTI CORSI
S# Nome Esame# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1

STUDENTI * CORSI
S# Nome Esame# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1 c1 Chimica
s1 Rossi c1 c2 Algebra
s1 Rossi c2 c1 Chimica
s2 Bianchi c1 c2 Algebra

Di solito, il Prodotto Cartesiano ha senso se seguito da una


selezione.

sEsame# = C# (STUDENTI * CORSI)


S# Nome Esame# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1 c1 Chimica

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 45

Theta-Join (äF)

L’operazione viene chiamata theta-join ed è indicata con

R1 äF R2 = {t1 ) t2 su X1X2 | t1aR1ªt2aR2ªF(t1) t2)}

Equivalentemente

R1 äF R2 = sF (R1 * R2)

dove F (condizione di join) è una formula proposizionale di


condizioni del tipo Ai q Bj, con q operatore di confronto fra
gli attributi AiaXl e BjaX2.
Esempio
R1 R2
A B C D E F
1 2 3 2 3 3
6 7 8 2 3 5
9 7 8 7 8 10

R1 äA < F R2
A B C D E F
1 2 3 2 3 3
1 2 3 2 3 5
1 2 3 7 8 10
6 7 8 7 8 10
9 7 8 7 8 10

R1 ä(A < F)ª(B ] D) R2


A B C D E F
1 2 3 7 8 10

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 46

Equi-join (äF=)
Se nel theta-join l’operatore q è l’operatore di uguaglianza
“=” avremo un equi-join.

Esempio

STUDENTE CORSO
S# Nome Esame# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1

STUDENTE äESAME# = C# CORSO


S# Nome Esame# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1 c1 Chimica

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 47

Join naturale (&, ä)


Siano R e S relazioni con rispettivi schemi R(YX) e S(ZX)
con attributi X in comune.

Il join naturale RäS è la relazione sullo schema YXZ tale


che

taR ä S ¢ t[YX]aR ª t[ZX]aS

Esempio

STUDENTE CORSO
S# Nome C# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1

STUDENTE ä CORSO
S# Nome C# NomeCorso
s1 Rossi c1 Chimica
s1 Rossi c2 Algebra
s2 Bianchi c1 Chimica

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 48

Join completo

Esempio

STUDENTE CORSO
S# Nome C# C# NomeCorso
s1 Rossi c1 c1 Chimica
s1 Rossi c2 c2 Algebra
s2 Bianchi c1

STUDENTE ä CORSO
S# Nome C# NomeCorso
s1 Rossi c1 Chimica
s1 Rossi c2 Algebra
s2 Bianchi c1 Chimica

(Ogni tupla contribuisce al risultato)

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 49

Join non completo

Esempio

IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Dipartimento Direttore
i1 Rossi Informatica Infomatica Barca
i2 Rossi Fisica Matematica Nave
i3 Bianchi Informatica

IMPIEGATO ä DIPARTIMENTO
I# Nome Dipartimento Direttore
i1 Rossi Informatica Barca
i3 Bianchi Informatica Barca

(Non tutte le tuple contribuiscono al risultato)

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 50

Join vuoto
Esempio

IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Dipartimento Direttore
i1 Rossi Informatica Chimica Barca
i2 Rossi Fisica Matematica Nave
i3 Bianchi Informatica

IMPIEGATO ä DIPARTIMENTO
I# Nome Dipartimento Direttore

(Non ci sono tuple)


(Ma lo schema c’è!)

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 51

0 \ card (R1 ä R2) \ card (R1)*card (R2)

Se R1 ä R2 è completo

max(card(R1), card(R2)) \ card(R1 ä R2)

Se R1¨R2 è chiave per R1 (o R2) con vincolo referenziale

card(R1 ä R2) = card(R1) (= card(R2))

Il join è commutativo e associativo

R1 ä R2 = R2 ä R1

R1 ä (R2 ä R3) = (R1 ä R2) ä R3

n
R1 ä R2 ä … ä Rn = *i=1 Ri

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 52

Join esterni (ï, , , ïF , …)


Estendono—con valori nulli—le tuple delle relazioni che
non contribuirebbero al risultato di join non completi.

Esempio

IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Dipartimento Direttore
i1 Rossi Informatica Infomatica Barca
i2 Rossi Fisica Matematica Nave
i3 Bianchi Informatica

IMPIEGATO ï DIPARTIMENTO
I# Nome Dipartimento Direttore
i1 Rossi Informatica Barca
i2 Rossi Fisica NULL
i3 Bianchi Informatica Barca
NULL NULL Matematica Nave

Join esterno
IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Direttore
i1 Rossi Informatica Barca
i2 Rossi Fisica NULL
i3 Bianchi Informatica Barca

Join esterno sinistro


IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Direttore
i1 Rossi Informatica Barca
i3 Bianchi Informatica Barca
NULL NULL Matematica Nave

Join esterno destro

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 53

Semijoin ( , , F , F)

Date le relazioni con schemi R(XY) e S(XZ), con X


attributo composto eventualmente vuoto, il semijoin sinistro
( ) è definito

R S ={ taR | t[X]apX(S)}

Equivalentemente,

R S = pYX(R ä S).

Il semijoin destro ( ) è definito

R S=S R

Esempio

IMPIEGATO DIPARTIMENTO
I# Nome Dipartimento Dipartimento Direttore
i1 Rossi Informatica Infomatica Barca
i2 Rossi Fisica Matematica Nave
i3 Bianchi Informatica

IMPIEGATO DIPARTIMENTO IMPIEGATO DIPARTIMENTO


I# Nome Dipartimento Dipartimento Direttore
i1 Rossi Informatica Infomatica Barca
i3 Bianchi Informatica

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 54

Divisione (%, /)

Se T=R%S

allora quoziente dividendo divisore

con schemi T(X) R(XY) S(Y)

Se R=S*T
allora R%S=T
e anche R%T=S

Date le relazioni con schemi R(XY) e S(Y), con X attributo


composto non vuoto, la divisione è definita

R % S ={ t su X | (ß saS) t ) saR}.

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 55

Esempio Divisione
Si abbia il dividendo (relazione) ASSORTIMENTO contenente
l’abbinamento (disponibilità) di misura e colore di prodotti
(ad es., magliette, scarpe, ecc.).
Quali taglie sono disponibili per i colori chiesti dal cliente ?
Quali colori sono disponibili per le taglie chieste dal cliente ?
Quali taglie sono disponibili per tutti i colori … ?
Quali colori sono disponibili per tutte le taglie … ?
ASSORTIMENTO
Misura Colore Colore Misura

divisore
32 grigio Colore Colore blue Misura 32
32 blue grigio bianco bianco 38 38
32 bianco
32 rosa Misura Misura Misura Colore Colore
34 grigio 32 32 32 grigio grigio

quoziente
34 blue 34 34 34 rosa rosa
34 bianco 36
34 rosa 38
36 grigio 40
36 blue 42
36 rosa
38 grigio pMisura(ASSORTIMENTO)
38 rosa Misura
40 grigio pColore(ASSORTIMENTO) 32
divisore

40 rosa Colore 34
42 grigio grigio 36
blue 38
dividendo bianco 40
rosa 42

ASSORTIMENTO%pColore(ASSORTIMENTO) ASSORTIMENTO%pMisura(ASSORTIMENTO)
quoziente

Misura Colore
32 grigio
34

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 56

Divisione
Equivalentemente,

R % S = pX(R) - pX((pX(R) * S) - R).

Questa equivalenza è molto utile poiché l’operazione di


divisione non è direttamente disponibile nei linguaggi
commerciali per basi di dati.

Esempio

R S
A B C D C D
a b c d c d
a b e f e f
b c e f
e d c d
e d e f
a b d e

pX(R) pX(R)*S (pX(R)*S)-R pX ((pX(R)*S)-R)


A B A B C D A B C D A B
a b a b c d b c c d b c
b c a b e f
e d b c c d
b c e f
e d c d
e d e f

R%S
A B
a b
e d

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 57

Riepilogo Operatori Relazionali


Operazione Effetto Notazione

SELEZIONE Seleziona tutte le tuple di una relazione s<condizione di selezione>(R)


R che soddisfano la condizione di
selezione.

PROIEZIONE Produce una nuova relazione con solo p<lista di attributi>(R)


alcuni degli attributi di R ed elimina le
tuple duplicate.

RIDENOMINAZIONE Assegna/modifica il nome a una r<nome rel> / <lista attributi 2> ← <lista
relazione e/o a suoi attributi. attributi 1>(R)

THETA JOIN Produce tutte le combinazioni di tuple di R1 ä <condizione di join> R2


R1 e di R2 che soddisfano la condizione
di join.

EQUIJOIN Produce tutte le combinazioni di tuple R1 ä <condizione di join> R2, oppure


prelevate da R1 e R2 che soddisfano una R1 ä (<attributi di join 1>), (<attributi di join
condizione di join che presenta solo 2>) R2
confronti di uguaglianza.

JOIN NATURALE Lo stesso dell’EQUIJOIN, se non per il R1 ä <condizione di join> R2, oppure
fatto che gli attributi di join di R2 non R1 ä (<attributi join 1>), (<attributi join 2>)
sono inseriti nella relazione risultante; R2, oppure R1 ä R2 (R1 & R2)
se gli attributi di join hanno gli stessi
nome non è necessario specificarli.

UNIONE Produce una relazione che contiene tutte R1 ´ R2


le tuple presenti in R1 o in R2, o in
entrambe; R1 e R2 devono essere
compatibili all’unione.

INTERSEZIONE Produce una relazione che contiene tutte R1 ¨ R2


le tuple presenti sia in R1 sia in R2; R1 e
R2 devono essere compatibili all’unione.

DIFFERENZA Produce una relazione che contiene tutte R1 - R2


le tuple di R1 che non sono in R2; R1 e R2
devono essere compatibili all’unione.

PRODOTTO Produce una relazione che presenta gli R1 * R2


CARTESIANO attributi di R1 e R2 e contiene come tuple
tutte le possibili combinazioni di tuple
di R1 con tuple di R2.

DIVISIONE Produce una relazione R(X) che R1 % R2 (R1 / R2)


contiene tutte le tuple t[X] di R1(Z) che
in R1 si presentano in combinazione con
ogni tupla di R2(Y), dove Z = X ´ Y.

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 58

esempi + complessi
PERSONE
Nome Età Reddito
Andrea 27 21 MATERNITÀ PATERNITÀ
Aldo 25 15 Madre Figlio Padre Figlio
Maria 55 42 Luisa Maria Sergio Franco
Anna 50 35 Luisa Luigi Franco Andrea
Filippo 26 30 Anna Olga Franco Aldo
Luigi 50 40 Anna Filippo Luigi Olga
Franco 60 20 Maria Andrea Luigi Filippo
Olga 30 41 Maria Aldo
Sergio 85 35
Luisa 75 87

nome e reddito delle persone


con meno di 30 anni padri delle persone
che guadagnano più di venti milioni

pNome, Reddito (sEtà < 30 (PERSONE))


pPadre (PATERNITÀ ä Figlio = Nome (sReddito > 20 (PERSONE)))

Nome Reddito
Padre
Andrea 21
Franco
Aldo 15
Luigi
Filippo 30

nome, reddito e nome del rispettivo padre delle


padri i cui figli guadagnano tutti più di venti milioni persone che guadagnano più dei propri padri

pPadre (PATERNITÀ) pN, R, P (sR > RP ((PERSONE ä N = F PATERNITÀ)


- ä P = NP
pPadre (PATERNITÀ ä Figlio = Nome (sReddito ≤ 20 (PERSONE))) (rNP, EP, RP ← N, E, R (PERSONE))))

Padre Nome Reddito Padre


Luigi Andrea 21 Franco
Olga 41 Luigi

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 59

VISTE
(Relazioni Derivate)
ƒ Possono esistere rappresentazioni diverse per gli stessi
dati (architettura ANSI/SPARC a tre livelli)

ƒ Nelle basi di dati relazionali, le Relazioni Derivate sono


relazioni il cui contenuto è funzione del contenuto di altre
relazioni (definito per mezzo di interrogazioni)

ƒ Le Relazioni di Base hanno un contenuto autonomo

ƒ Le Relazioni Derivate possono essere definite su altre


Relazioni Derivate

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 60

Viste virtuali e materializzate


ƒ Due tipi di relazioni derivate:

ƒ viste materializzate: relazioni derivate memorizzate nella


base di dati;

vantaggi: immediata disponibilità per le interrogazioni

svantaggi: difficoltà degli aggiornamenti, non supportate


nei DBMS

ƒ relazioni virtuali ( o viste): supportate dai DBMS

ƒ una interrogazione su una vista viene eseguita


ricalcolando la vista

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 61

Viste: motivazioni
ƒ Schema esterno o vista utente:

Ogni utente vede solo ciò che gli interessa e nel modo in
cui gli interessa, senza essere distratto dal resto

Ogni utente vede solo ciò che autorizzato a vedere


(autorizzazioni sulle viste)

ƒ Strumento di programmazione: con le viste si può


semplificare la scrittura di interrogazioni; molto utile per
espressioni complesse o con sottoespressioni ripetute

ƒ Utilizzo di programmi esistenti su schemi strutturati

ƒ L’utilizzo delle viste non influisce sull’efficienza delle


interrogazioni

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 62

Viste
Esempio

AFFERENZA DIREZIONE
Impiegato Reparto Reparto Direttore
Rossi Vendite Acquisti Leoni
Neri Acquisti Vendite Falchi
Bruni Vendite Personale Leoni
Mori Personale

ƒ Vista

SUPERVISIONE := pImpiegato, Direttore (AFFERENZA ä DIREZIONE)

ƒ Interrogazione sulla vista

sDirettore = ‘Leoni’ (SUPERVISIONE)

ƒ Eseguita come

sDirettore = ‘Leoni’ (pImpiegato, Direttore (AFFERENZA ä DIREZIONE))

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 63

Viste come strumento di programmazione

Esempio

AFFERENZA DIREZIONE
Impiegato Reparto Reparto Direttore
Rossi Vendite Acquisti Leoni
Neri Acquisti Vendite Falchi
Bruni Vendite Personale Leoni
Mori Personale

Trovare gli impiegati che hanno lo stesso direttore di Rossi.

ƒ Senza la vista

pImpiegato ((AFFERENZA ä DIREZIONE)


ä
rImpR, RepR ← Impiegato, Reparto (sImpiegato = ‘Rossi’ (AFFERENZA) ä DIREZIONE))

ƒ Con la vista

pImpiegato (SUPERVISIONE ä
rImpR ← Impiegato (sImpiegato = ‘Rossi’ (SUPERVISIONE)))

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 64

Viste e aggiornamenti

Esempio

Relazioni di base:

AFFERENZA DIREZIONE
Impiegato Reparto Reparto Direttore
Rossi Vendite Acquisti Leoni
Neri Acquisti Vendite Falchi
Bruni Vendite Personale Leoni

ƒ Vista:
SUPERVISIONE
Impiegato Direttore
Rossi Falchi
Neri Leoni

ƒ Vogliamo inserire, nella vista, il fatto che Mori ha


come direttore Lupi.

ƒ Come fare ?

ƒ Gli aggiornamenti possibili sulle viste sono limitati.

Parte III: Algebra Relazionale a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 65

SQL
Structured Query Language

Contiene il DDL (Data Definition Language) e il DML


(Data Manipulation Language).

I sistemi commerciali spesso offrono una serie di strumenti


che estendono le funzionalità definite a livello di standard.
(Ad esempio: i trigger per la definizione di BD attive.)

QUERY LANGUAGE

SELECT Estrae dati da una o più tabelle

DATA MANIPULATION LANGUAGE

INSERT Aggiunge una o più righe in una tabella esistente


UPDATE Modifica dati in una o più righe di una tabella
DELETE Rimuove una o più righe da una tabella

DATA DEFINITION LANGUAGE

CREATE TABLE Definisce la struttura di una nuova tabella nella BD


DROP TABLE Rimuove la definizione della tabella dal sistema
ALTER TABLE Aggiunge una colonna alla definizione di una tabella
CREATE VIEW Definisce una vista-utente di una porzione della BD
DROP VIEW Rimuove la vista-utente dal sistema
CREATE INDEX Indicizza una o più colonne di una tabella
DROP INDEX Rimuove l’indice dal sistema

Principali comandi di Query, Manipolazione e Definizione dei dati in SQL.

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 66

Sommario della sintassi di SQL (1)


CREATE TABLE <nome tabella> (<nome colonna> <tipo colonna> [<vincoli attributo>]
{, <nome colonna> <tipo colonna> [<vincoli attributo>] }
[<vincoli tabella> {, <vincoli tabella>} ] )

DROP TABLE <nome tabella>

ALTER TABLE <nome tabella> ADD <nome colonna> <tipo colonna>

SELECT [DISTINCT] <lista attributi>


FROM (<nome tabella> {<alias>} | <tabella di join>) {, (<nome tabella> {<alias>} | < tabella di join>)}
[WHERE <condizione>]
[GROUP BY <attributi raggruppamento> [HAVING <condizione selezione gruppi> ] ]
[ORDER BY <nome colonna> [<ordine>] {, <nome colonna> [<ordine>] } ]

<lista attributi>::= (& | ( <nome colonna> | <funzione> ([DISTINCT] <nome colonna> | &)))
{, ( <nome colonna> | <funzione> ([DISTINCT] <nome colonna> | &) ) }

<attributi raggruppamento>::= <nome colonna> {, <nome colonna>}

<ordine>::= (ASC | DESC)

INSERT INTO <nome tabella> [( <nome colonna>{, <nome colonna>} ) ]


(VALUES ( <costante> {, <costante>}){, ( <costante> {, <costante>})} | <istruzione SELECT>)

DELETE FROM <nome tabella>


[WHERE <condizione selezione>]

UPDATE <nome tabella>


SET <nome colonna> = <espressione> {, <nome colonna> = <espressione> }
[WHERE <condizione selezione>]

CREATE VIEW <nome vista> [ ( <nome colonna> {, <nome colonna> } ) ]


AS <istruzione SELECT>

DROP VIEW <nome vista>

CREATE [UNIQUE] INDEX <nome indice>


ON <nome tabella> ( <nome colonna> [ <ordine> ] {, <nome colonna> [ <ordine>] } )
[CLUSTER]

DROP INDEX <nome indice>

1
Si presenta un riassunto della sintassi (o struttura) delle varie istruzioni SQL. Il riepilogo è incompleto e non descrive
ogni possibile costrutto SQL, perché vuole servire da riferimento rapido ai principali tipi di costrutti disponibili. Viene
utilizzata la notazione BNF: i simboli non terminali sono tra parentesi angolari <…>, le parti opzionali sono riportate tra
parentesi quadre […], le ripetizioni tra parentesi graffe {…} e le alternative tra parentesi tonde (…|…|…).

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 67

DDL
SQL-2 consente la definizione dello schema di base di dati i
cui elementi sono:

• famiglie di caratteri

• i domini

• le tabelle

• gli indici

• le asserzioni

• le viste

• i privilegi.

La sintassi è la seguente:
CREATE SCHEMA [Nome]
[[AUTHORIZATION] Autorizzazione]
{DefElementoSchema}

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 68

SQL Domini Elementari


• Carattere: permette di rappresentare caratteri o stringhe.
Le stringhe possono essere a lunghezza fissa oppure
variabile.
CHARACTER [VARYING] [(Lunghezza)]
[CHARACTER SET NomeFamigliaCaratteri]

Forme compatte: CHAR e VARCHAR.

• Bit: (SQL-2) utilizzato per attributi che possono assumere


valori 0 e 1. Può essere usato per singoli flag ma anche
per stringhe di bit.
BIT [VARYING] [(Lunghezza)]

• Data e Ora: (SQL-2) per rappresentare istanti di tempo.


DATE record of {year, month, day}
TIME record of {hour, minute, second}
TIMESTAMP date + time

• Intervalli temporali: (SQL-2)


INTERVAL PrimaUnitàTempo [TO UltimaUnitàTempo]

INTERVAL YEAR TO MONTH

indica che gli intervalli vanno misurati in numero di anni


e di mesi. La prima unità può essere caratterizzata da
precisione.

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 69

• Tipi numerici esatti: permettono di rappresentare valori


interi o valori in virgola fissa.
NUMERIC [(Precisione [, Scala])]
DECIMAL [(Precisione [, Scala])]
INTEGER
SMALLINT

o I domini INTEGER e SMALLINT si usano quando non serve


una parte frazionaria. L’unico vincolo implementativo è
che la precisione del dominio INTEGER sia non inferiore a
quella del dominio SMALLINT.

o Il dominio NUMERIC rappresenta numero in base decimale;


Precisione indica il numero di cifre, Scala il numero di
cifre dopo la virgola.
NUMERIC(6,3) [-999.999, 999.999]

La differenza tra NUMERIC e DECIMAL è che la Precisione


per NUMERIC è un requisito esatto, mentre per DECIMAL è
un requisito minimo.

• Tipi numerici approssimati: Numeri in virgola mobile.


FLOAT [(Precisione)]
DOUBLE PRECISION
REAL

Nel dominio FLOAT si può scegliere la precisione, intesa


come numero di cifre della mantissa.

La precisione di DOUBLE è doppia di quella di REAL.

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 70

Tabelle
CREATE TABLE NomeTabella
( NomeAttr Dominio [ValoreDefault] [vincoli]
{, NomeAttr Dominio [ValoreDefault] [vincoli]}
[, Altri Vincoli] );
Esempio

CREATE TABLE DIPARTIMENTO


( NOME CHAR(20) PRIMARY KEY,
INDIRIZZO CHAR(50),
CITTÀ CHAR(20) );

• Gli attributi possono appartenere ai domini predefiniti o,


in alcune implementazioni di SQL, essere creati tramite
CREATE DOMAIN Nomedom AS TipodiDato
[ValoreDiDefault] [Vincolo];

• Nella definizione delle tabelle e dei domini, i valori di


default rappresentano il valore che assume l’attributo
quando viene inserita una riga nella tabella senza specifi-
care il valore per l’attributo stesso.
DEFAULT {Valore|USER|NULL}
Esempio

NROFIGLI SMALLINT DEFAULT 0

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 71

Vincoli Intrarelazionali

• NOT NULL: indica che l’attributo deve essere specificato, a


meno che ad esso non sia associato un valore di default
diverso da NULL.

• UNIQUE: indica che nella tabella non possono esistere due


righe con valori identici su tale attributo.
MATRICOLA CHAR(6) UNIQUE

Può anche essere applicato a più attributi:


COGNOME CHAR(20), NOT NULL
NOME CHAR(20), NOT NULL
UNIQUE (COGNOME, NOME)

per indicare che non devono esistere righe che abbiano


uguali sia il nome sia il cognome.

• PRIMARY KEY: è specificato per un solo attributo (eventual-


mente composto) nella tabella ed indica la chiave prima-
ria della tabella. È, di solito, l’attributo (semplice o com-
posto) più frequentemente utilizzato per accedere alle
righe della tabella. Gli attributi appartenenti alla chiave
non possono assumere valori nulli (integrità dell’entità).
NOME CHAR(20),
COGNOME CHAR(20),
DIPART CHAR(15),
STIP NUMERIC(9) DEFAULT 0,
PRIMARY KEY (COGNOME, NOME)

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 72

Vincoli Interrelazionali

Il più diffuso è il vincolo di integrità referenziale realizzato


dal vincolo SQL di chiave esterna (FOREIGN KEY). La chiave
esterna è un attributo della tabella referente (interna) vinco-
lato ad assumere o i valori di un attributo della tabella rife-
rita (esterna) o il valore NULL. L’attributo riferito deve esse-
re di tipo UNIQUE (tipicamente, è la chiave primaria della
tabella esterna).

Tabella e attributo riferiti vengono specificati dalla clausola


REFERENCES. La chiave esterna, se è un attributo composto,
deve essere specificata dalla clausola FOREIGN KEY.
Esempi

CREATE TABLE IMPIEGATO


( MATR CHAR(6) PRIMARY KEY,
NOME CHAR(20) NOT NULL,
COGNOME CHAR(20) NOT NULL,
DIPART CHAR(15)
REFERENCES DIPARTIMENTO(NOME),
STIP NUMERIC(9) DEFAULT 0,
UNIQUE (COGNOME, NOME) );

CREATE TABLE IMPIEGATO


( MATR CHAR(6) PRIMARY KEY,
NOME CHAR(20) NOT NULL,
COGNOME CHAR(20) NOT NULL,
DIPART CHAR(15)
REFERENCES DIPARTIMENTO(NOME),
STIP NUMERIC(9) DEFAULT 0,
FOREIGN KEY(NOME,COGNOME)
REFERENCES ANAGRAFE(NOME,COGNOME) );
Parte IV: SQL a.a. 2010-11
ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 73

Violazione del vincolo FOREIGN KEY


Esempio

CREATE TABLE IMPIEGATO


( NOME CHAR(20),
COGNOME CHAR(20),
DIPART CHAR(15),
REFERENCES DIPARTIMENTO(NOME) );

Tabella interna: IMPIEGATO, tabella esterna: DIPARTIMENTO.

La violazione di vincoli può avvenire sia a livello di tabella


interna sia esterna.

• Tabella interna. Il vincolo potrebbe essere violato a causa


dell’inserimento o modifica di una riga in cui il valore
dell’attributo DIPART non sia presente nella colonna NOME
della tabella DIPARTIMENTO (e neanche sia NULL). In tal
caso, il DBMS rifiuta l’inserimento (o la modifica).

• Tabella esterna. Le operazioni che possono violare


l’integrità referenziale sono:
→ Modifica del valore dell’attributo riferito
→ Cancellazione di righe.

Possibili politiche di reazione alla violazione per


ciascuna operazione
o NO ACTION (default, operazione rifiutata)
o CASCADE (propaga l’operazione)
o SET NULL (assegna il valore null)
o SET DEFAULT (assegna il valore di default)

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 74

CREATE TABLE IMPIEGATO


( MATR CHAR(9),
NOME CHAR(20) NOT NULL,
COGNOME CHAR(20) NOT NULL,
DIPART CHAR(15),
STIP NUMERIC(9) DEFAULT 0,
PRIMARY KEY (MATR),
FOREIGN KEY (DIPART)
REFERENCES DIPARTIMENTO(NOME)
ON DELETE SET NULL
ON UPDATE CASCADE,
UNIQUE (COGNOME, NOME) );

IMPIEGATO
Nome Cognome Dipart Ufficio Stipendio Città
Mario Rossi Amministrazione 10 45 Milano
Carlo Bianchi Produzione 20 36 Torino
Giuseppe Verdi Amministrazione 20 40 Roma
Franco Neri Distribuzione 16 45 Napoli
Carlo Rossi Direzione 14 80 Milano
Lorenzo Lanzi Direzione 7 73 Genova
Paola Borroni Amministrazione 75 40 Venezia
Marco Franco Produzione 20 46 Roma

DIPARTIMENTO
Nome Indirizzo Città
Amministrazione Via Tito Livio, 27 Milano
Produzione P.le Laveter, 3 Torino
Distribuzione Via Segre, 9 Roma
Direzione Via Tito Livio, 27 Milano
Ricerca Via Morone,6 Milano

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 75

DML - Interrogazioni
• SQL consente di esprimere le interrogazioni in modo
dichiarativo attraverso il comando SELECT. L’interroga-
zione viene poi automaticamente tradotta in termini
procedurali ed eseguita.

• In alternativa, si possono utilizzare tradizionali linguaggi


di programmazione, in cui SQL è immerso (e compilato).

• Esistono vari modi per formulare una query. L’utente può


non occuparsi dell’efficienza nel formulare la query,
quanto piuttosto della sua leggibilità e modificabilità.

Struttura della query SQL

SELECT ListaAttributi
FROM ListaTabelle
[WHERE Condizione];

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 76

Esempio

Impiegato (Nome, Cognome, Dipart, Ufficio, Stipendio)


Dipartimento (Nome, Indirizzo, Città)
SELECT STIPENDIO AS SALARIO
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';

Ritorna una tabella con l’unico attributo Salario i cui valori


sono ottenuti dalla colonna Stipendio delle righe di
Impiegato aventi Cognome = Rossi.

SELECT &
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';
SELECT STIPENDIO/12 AS STIPMENSILE
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';

SELECT IMPIEGATO.NOME, DIPARTIMENTO.NOME,


DIPARTIMENTO.CITTÀ
FROM IMPIEGATO, DIPARTIMENTO
WHERE IMPIEGATO.DIPART = DIPARTIMENTO.NOME;

Le righe vengono estratte dal prodotto cartesiano. Equiva-


lentemente, e in forma più compatta:
SELECT I.NOME, D.NOME, D.CITTÀ
FROM IMPIEGATO AS I, DIPARTIMENTO AS D
WHERE I.DIPART = D.NOME;

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 77

Nella clausola WHERE è possibile usare connettivi logici


(AND, OR, NOT) ed espressioni di confronto.
SELECT NOME, COGNOME
FROM IMPIEGATO
WHERE UFFICIO = 20 AND DIPART = 'AMMINISTRAZIONE';
SELECT NOME, COGNOME
FROM IMPIEGATO
WHERE DIPART = 'PRODUZIONE' OR
DIPART = 'AMMINISTRAZIONE';

SELECT NOME
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI' AND
(DIPART = 'PRODUZIONE' OR DIPART = 'AMMINISTRAZIONE');

Operatore LIKE

Consente il confronto di stringhe e si basa su due caratteri


speciali:

“_” (rappresenta un qualsiasi carattere)

“%” (rappresenta una stringa, anche vuota)


SELECT NOME
FROM IMPIEGATO
WHERE COGNOME LIKE '_O%I';

ritornerà tutti nomi di Impiegato il cui cognome ha una “o”


in seconda posizione e termina per “i” (Ad es., rossi, Rossi,
Mongelli, Loi).

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 78

Proiezione: duplicati
SELECT COGNOME SELECT DISTINCT COGNOME
FROM IMPIEGATO; FROM IMPIEGATO;

Cognome Cognome
Rossi Rossi
Bianchi Bianchi
Verdi Verdi
Neri Neri
Rossi Lanzi
Lanzi Borroni
Borroni Franco
Franco

Espressioni nella target list


SELECT STIPENDIO/12 AS STIPENDIOMENSILE
FROM IMPIEGATO
WHERE COGNOME = 'BIANCHI';

StipendioMensile
3.00

Ordinamento

Il risultato di una interrogazione è una relazione che, come


tale, non è ordinata. Nelle applicazioni può essere invece
utile avere risultati ordinati. Ciò è ottenibile con la clausola
ORDER BY AttrOrdinamento [ASC|DESC]
{, AttrOrdinamento [ASC|DESC]}
SELECT &
FROM IMPIEGATO
ORDER BY STIPENDIO DESC, COGNOME, NOME;
Parte IV: SQL a.a. 2010-11
ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 79

Join

Una interrogazione su più tabelle agisce sul loro prodotto


cartesiano. La clausola WHERE consente di specificare gli
attributi e le condizioni per ottenere un join. È inoltre
possibile (e conveniente) distinguere le condizioni di
selezione delle righe (clausola WHERE) dalle condizioni di
join (clausola FROM) secondo la sintassi
FROM Tabella1 TIPOJOIN JOIN Tabella2 ON CondizioneJoin

TIPOJOIN può essere:


INNER, RIGHT[OUTER], LEFT[OUTER], FULL[OUTER]

inner join
È il theta-join. Vengono selezionate solo le righe del
prodotto cartesiano che soddisfano la condizione espressa
SELECT I.NOME, COGNOME, CITTÀ
FROM IMPIEGATO I INNER JOIN DIPARTIMENTO D
ON DIPART = D.NOME;

outer join
Il join esterno mantiene tutte le righe della tabella di
sinistra (LEFT), della tabella di destra (RIGHT) oppure di
entrambe (FULL) e mette il valore NULL per indicare la
mancanza di valori corrispondenti nell’altra tabella.

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 80

Variabili (alias)
SELECT I.NOME, D.NOME, D.CITTÀ
FROM IMPIEGATO AS I, DIPARTIMENTO AS D
WHERE I.DIPART = D.NOME;

Le variabili I e D (alias) fanno riferimento alle tabelle in


modo più compatto.

Gli alias consentono di far riferimento a più esemplari della


stessa tabella (equivalenti alla ridenominazione). L’inter-
pretazione è che, per ogni alias, si introduce una variabile di
tipo tabella in cui viene copiato il contenuto della tabella di
cui è alias.
Esempio

Impiegati (Matr, Nome, Età, Stip)


Supervisione (Capo, Imp)

Trovare il nome e lo stipendio dei capi degli impiegati che


guadagnano più di 40.
SELECT I1.NOME, I1.STIP
FROM IMPIEGATO [AS] I1, SUPERVISIONE S,
IMPIEGATO I2
WHERE I1.MATR = S.CAPO AND
S.IMP = I2.MATR AND
I2.STIP > 40;

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 81

Operatori aggregati

Costituiscono la principale estensione di SQL rispetto al-


l’algebra relazionale. Agiscono non a livello di tupla ma a
livello di relazione.

• COUNT (<&|[DISTINCT|ALL] ListaAttributi>)


SELECT COUNT(&)
FROM IMPIEGATO
WHERE DIPART = 'PRODUZIONE';

SELECT COUNT (ALL NOME, COGNOME)


FROM IMPIEGATO;

• <SUM|AVG|MAX|MIN> ([DISTINCT|ALL] Attributo)

ƒ SUM e AVG richiedono che l’attributo sia numerico o di


tipo intervallo temporale.

ƒ MAX e MIN possono riferirsi a qualsiasi attributo sul cui


dominio sia definito un ordinamento.

SELECT MAX(STIP) SELECT MATR , MAX(STIP)


FROM IMPIEGATI FROM IMPIEGATI
WHERE ETÀ < 35; WHERE ETÀ < 35;

corretta errata

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 82

Interrogazioni con Raggruppamento

In alcune applicazioni sorge l’esigenza di applicare gli


operatori aggregati distintamente a sottoinsiemi di righe.
Esempio

PERSONALE
Nome Dipart Uff Stip
Rossi dip1 1 10
Bianchi dip2 2 15
Verdi dip3 3 12
Neri dip2 4 11
Gialli dip1 5 10

SELECT DIPART, SUM(STIP)


FROM PERSONALE
GROUP BY DIPART;

Step 1. Valutazione di SELECT DIPART, STIP


FROM PERSONALE;

Step 2. Le righe della tabella ottenuta vengono raggruppate


in sottoinsiemi in funzione dei valori dell’attributo
di GROUP BY (DIPART).

Step 3. L’operatore aggregato (SUM) viene applicato a


ciascun sottoinsieme.

Dipart Stip
dipl 20
dip2 26
dip3 12

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 83

SELECT UFFICIO
FROM IMPIEGATO
GROUP BY DIPART;

sintatticamente errata e priva di senso.


SELECT DIPART, COUNT(&), CITTÀ
FROM IMPIEGATO I INNER JOIN DIPARTIMENTO D
ON I.DIPART = D.NOME
GROUP BY DIPART;

significativa ma sintatticamente errata.


SELECT DIPART, COUNT(&), CITTÀ
FROM IMPIEGATO I INNER JOIN DIPARTIMENTO D
ON I.DIPART = D.NOME)
GROUP BY DIPART, CITTÀ;

Predicati sui Gruppi

La clausola GROUP BY consente di raggruppare in sottoinsiemi.


La clausola HAVING consente di selezionare i sottoinsiemi.
SELECT DIPART, SUM(STIP)
FROM IMPIEGATO
GROUP BY DIPART
HAVING SUM(STIP) >= 20;

Dipart Stip
dip1 20
dip2 26

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 84

Interrogazioni Insiemistiche
SelectSQL {UNION|INTERSECT|EXCEPT> [ALL] SelectSQL}

• Possono essere solo al livello più esterno di una query, e


operano sul risultato di una SELECT.

• Eseguono sempre una eliminazione di duplicati (se non si


esplicita la keyword ALL).

• È richiesto che gli attributi siano compatibili.


SELECT COGNOME
FROM IMPIEGATO
UNION ALL
SELECT NOME
FROM IMPIEGATO;

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 85

Interrogazioni Nidificate
In SQL è possibile confrontare un valore con il risultato di
una SELECT.

• ANY
• ALL

SELECT &
FROM IMPIEGATO
WHERE DIPART = ANY (SELECT NOME
FROM DIPARTIMENTO
WHERE CITTÀ = 'BARI');

SELECT &
FROM IMPIEGATO
WHERE DIPART <> ALL (SELECT NOME
FROM DIPARTIMENTO
WHERE CITTÀ = 'BARI');

SELECT NOME
FROM DIPARTIMENTO
WHERE NOME <> ALL (SELECT DIPART
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI');
SELECT NOME
FROM DIPARTIMENTO
EXCEPT
SELECT DIPART
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 86

SELECT DIPART
FROM IMPIEGATO
WHERE STIPENDIO = MAX(STIPENDIO); _ errata
SELECT DIPART SELECT DIPART
FROM IMPIEGATO FROM IMPIEGATO
WHERE STIPENDIO >= ALL WHERE STIPENDIO =
(SELECT STIPENDIO (SELECT MAX(STIPENDIO)
FROM IMPIEGATO); FROM IMPIEGATO);

• Interpretazione. L’interrogazione nidificata è eseguita


una sola volta prima di eseguire l’interrogazione esterna,
e il risultato viene salvato in una tabella temporanea.

• L’interrogazione interna può però fare riferimento a


quella esterna, rendendo questa interpretazione non più
valida. Bisogna allora reinterpretare il tutto in termini di
prodotto cartesiano di tabelle sul cui risultato si applicano
le condizioni espresse nel predicato WHERE. Poiché il
predicato WHERE è a sua volta una interrogazione, questa
dovrà essere valutata per ogni riga del prodotto stesso.
SELECT &
FROM PERSONA P1
WHERE EXISTS (SELECT &
FROM PERSONA P2
WHERE P2.NOME = P1.NOME AND
P2.COGN = P1.COGN AND
P2.CODFISC <> P1.CODFISC);

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 87

Asserzioni
Le asserzioni sono vincoli non associati a relazioni o attri-
buti specifici, ma appartengono direttamente allo schema.
CREATE ASSERTION Nome CHECK (Condizione)
CREATE ASSERTION ALMENOUNIMPIEGATO
CHECK (1 <= (SELECT COUNT(&)
FROM IMPIEGATO));

SET CONSTRAINTS [Nome] IMMEDIATE (dopo modifica)


SET CONSTRAINTS [Nome] DEFERRED (dopo transazione)

Viste (Virtuali)
In SQL le viste sono definite con:
CREATE VIEW Nome [(ListaAttributi)] AS SelectSQL
[WITH [LOCAL|CASCADED] CHECK OPTION]

È possibile utilizzare Viste nella definizione di altre Viste.


(Non sono però consentite dipendenze ricorsive né
immediate, né transitive).

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 88

CREATE VIEW IMPAMM(MATR,NOME,COGN,STIP) AS


SELECT MATR, NOME, COGNOME, STIP
FROM IMPIEGATO
WHERE DIPART = 'AMMINISTRAZIONE' AND STIP > 10;

CREATE VIEW IMPAMMPOV AS


SELECT &
FROM IMPAMM
WHERE STIP < 50
WITH LOCAL CHECK OPTION;

Le viste sono utilizzabili per scrivere interrogazioni. Tale


caratteristica è particolarmente utile quando è richiesto
l’utilizzo combinato di operatori aggregati.

Impiegato (Matr, Nome, Stip, Dip)


Trovare il dipartimento che spende il massimo in stipendi.
CREATE VIEW BUDGETSTIP(DIP; TOTALSTIP) AS
SELECT DIPART, SUM(STIP)
FROM IMPIEGATO
GROUP BY DIPART;

SELECT DIP FROM BUDGETSTIP


WHERE TOTALSTIP = (SELECT MAX(TOTALSTIP)
FROM BUDGETSTIP));

Parte IV: SQL a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 89

Ciclo di vita dei Sistemi Informativi


Definisce i costi delle possibili
Studio di fattibilità alternative e le priorità di
realizzazione dei componenti
Definisce le proprietà e le fun-
zionalità del sistema: richiede
Raccolta e analisi una interazione utente/proget-
delle specifiche tista, produce una descrizione
informale dei dati, delle opera-
zioni e i requisiti hw/sw
Definisce in modo formale la
Progettazione struttura e l’organizzazione dei
dati e le caratteristiche delle
applicazioni, con riferimento a
modelli specifici
Realizzazione del sistema
Prototipazione Implementazione progettato. Popolamento della
BD e scrittura del codice
Verifica del corretto funziona-
Validazione mento e della qualità del S.I.,
e testing
sotto tutte le condizioni opera-
tive

Operatività
Fase operativa con interventi
di gestione e manutenzione

Il processo di sviluppo non è quasi mai strettamente


sequenziale.

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 90

Progettazione guidata dai dati

Specifiche
sui dati

Progetto Progettazione concettuale


concettuale

Schema concettuale

Progetto
Progettazione logica
logico

Schema logico

Progetto Progettazione fisica


fisico

Schema fisico

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 91

Il modello E-R (Entità-Relationship)


• È il più diffuso modello concettuale

• Ne esistono varie versioni

I costrutti del modello E-R

• entità
• associazione (relazione, relationship)
• attributo
• identificatore
• generalizzazione e sottoinsieme

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 92

Entità

entità: classe di oggetti (fatti, persone, …) del frammento


di interesse del mondo reale, aventi proprietà omogenee
ed esistenza autonoma: ad es. persone, città, aziende,
fatture, ordini.

occorrenza (istanza) di entità: ciascun elemento della


classe

• nello schema concettuale sono presenti le entità e non


le singole istanze (astrazione)

• ogni entità ha un nome che la identifica univocamente


nello schema

ø nomi espressivi

ø opportune convenzioni (ad es., nomi al singolare)

Diagramma di entità: rappresentazione grafica

IMPIEGATO REGIONE

CITTÀ AZIENDA

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 93

Associazione (relationship)

relationship legame logico fra entità, di interesse per


l’applicazione; classe di fatti di interesse.

occorrenza (istanza) di relationship: n-pla (coppia, tripla,


…) di istanze di entità, una per ciascuna entità coinvolta

Diagramma di relationship: rappresentazione grafica


PERSONA AULA

N (0, n)
(0, n)
VIVE_IN CORSO LEZIONE

1 (0, n)

CITTÀ GIORNO

(a) relazione VIVE_IN (b) relazione LEZIONE

ORDINE
superiore_di

IMPIEGATO DIRIGE SPEDIZIONE

subordinato_a
BOLLA_DI_
CONSEGNA
(c) relazione DIRIGE

(d) relazione SPEDIZIONE

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 94

Attributo

attributo: proprietà elementare di una entità o di una


relationship, di interesse ai fini dell’applicazione

• un attributo associa un valore a ciascuna occorrenza


dell’entità (o relationship) su cui è definito

Denominazione
Codice Docente
Voto Data
Matricola Nome

STUDENTE ESAME CORSO

Nome
NASCE_A
Mansione Regione

CF
Nome PERSONA CITTÀ

Grado Numero
RISIEDE _Abitanti

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 95

Attributo composto: Gruppo di attributi con affinità in


termini di significato ed impiego. Sono definibili le
cardinalità minima e massima.

civico
via cap

CF nome cognome indirizzo tel (0,n)

PERSONA

Uno schema Entità-Relazione (E-R)

cognome DIREZIONE
codice telefono
età IMPIEGATO AFFERENZA DIPARTIMENTO
nome
stipendio
data afferenza

ASSEGNAZIONE UBICAZIONE

budget data inizio


città
nome
PROGETTO SEDE

data consegna indirizzo


via
civico cap

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 96

Cardinalità della relationship

• le cardinalità vanno specificate per ciascuna entità che


partecipa alla relationship
(m,M) (p,P)
E1 R E2

o ogni occorrenza di E1 partecipa ad almeno m e ad al


più M occorrenze di R

o ogni occorrenza di E2 partecipa ad almeno p e ad al più


P occorrenze di R

• di norma, si utilizza

o 0 e 1 per la cardinalità minima:


0 = “è opzionale”, 1 = “è obbligatoria”
(fare attenzione alle relationship obbligatoria-
obbligatoria poiché sono talvolta non realistiche)

o 1 e “N” per la cardinalità massima:


“N” oppure “n” non pone limite superiore

• con riferimento alle cardinalità massime, si definiscono


relationship uno-a-uno, uno-a-molti, e molti-a-molti

o fare attenzione al “verso” delle relationship uno-a-molti


poiché in genere non vale la simmetria

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 97

PERSONA AULA

(1,1) (0,40)
(1,3)
VIVE_IN CORSO LEZIONE

(0,n) (0, n)

CITTÀ GIORNO

(a) relazione VIVE_IN (b) relazione LEZIONE

ORDINE
superiore_di
(0,n) (0,1)

IMPIEGATO DIRIGE SPEDIZIONE

(1,1) (1,1)
subordinato_a
BOLLA_DI_
CONSEGNA
(c) relazione DIRIGE

(d) relazione SPEDIZIONE

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 98

Denominazione
Codice Docente
Voto Data
Matricola Nome

STUDENTE ESAME CORSO


(0,n) (0,n)

(0,1) (0,n) Nome


NASCE_A
Mansione Regione

CF
Nome PERSONA CITTÀ

Grado Numero
RISIEDE _Abitanti
(0,n) (0,n)

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 99

Tipi di relationship: molti-a-molti , uno-a-molti , uno-a-uno

(0,n) (0,n)
PERSONA AFFEZIONE ANIMALE

(0,n) (1,n)
MONTAGNA SCALATA ALPINISTA

(1,n) (0,n)
TURISTA PRENOTAZIONE VIAGGIO

(1,n) (1,n)
MACCHINISTA ABILITAZIONE LOCOMOTORE

(0,1) (0,n)
PERSONA IMPIEGO SOCIETÀ

(0,1) (1,n)
CINEMA UBICAZIONE LOCALITÀ

(1,1) (0,n)
PERSONA RESIDENZA CITTÀ

(1,1) (1,n)
COMUNE AFFERENZA PROVINCIA

(0,1) (0,1)
PROFESSORE TITOLARITÀ CATTEDRA

(0,1) (1,1)
ORDINE VENDITA FATTURA

(1,1) (0,1)
PROFESSORE DI RUOLO TITOLARITÀ CATTEDRA

(1,1) (1,1)
PROFESSORE DI RUOLO TITOLARITÀ CATTEDRA COPERTA

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 100

Cardinalità dell’attributo

Si può specificare anche per gli attributi la cardinalità (min,


max), ovvero la numerosità di valori ammessa per ciascuna
istanza di entità. Se omessa, la specifica di default è (1,1).

Solitamente, la cardinalità viene specificata per indicare

• opzionalità (in corrispondenza di valori nulli)

• attributi multivalore

Nome
(0,1)
PERSONA Numero patente

(0,n) Targa automobile

Identificatore dell’entità

• consente l’identificazione univoca delle occorrenze

• è costituito da

Š (uno o più) attributi dell’entità:


identificatore interno

Š (attributi e) entità esterne (tramite relationship):


identificatore esterno

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 101

Anno iscrizione
Targa Cognome
Modello STUDENTE
AUTOMOBILE
Colore Matricola

(1,1)

ISCRIZIONE

(1,n)
Cognome
Nome Nome
PERSONA Data nascita Città
UNIVERSITÀ
Indirizzo Indirizzo

regole e vincoli per l’identificazione

o un identificatore può coinvolgere uno o più attributi,


ognuno dei quali deve avere cardinalità (1,1);

o una identificazione esterna può coinvolgere una o più


entità, ognuna delle quali deve essere membro di una
relazione alla quale l’entità da identificare partecipa con
cardinalità (1,1);

o una identificazione esterna può coinvolgere una entità che


sia a sua volta identificata esternamente, purchè non
vengano generati cicli di identificazioni esterne;

o ogni entità deve avere almeno un identificatore (interno o


esterno), ma ne può avere più di uno; nel caso di più
identificatori, gli attributi e le entità coinvolte in alcune
identificazioni (tranne una) possono essere opzionali
(cardinalità minima uguale a zero).
Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11
ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 102

Uno schema E-R con attributi e identificatori

(1,n) (1,n)
cognome DIREZIONE
codice telefono
(1,n)
(1,n) (1,n)
età IMPIEGATO AFFERENZA DIPARTIMENTO
nome
stipendio (1,n) (1,n)
data afferenza

ASSEGNAZIONE UBICAZIONE

budget (1,n) data inizio (1,n)


città
nome
PROGETTO SEDE
(0,1)
data consegna indirizzo
via
civico cap

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 103

Generalizzazione

→ “uomo” e “donna” sono casi particolari di “persona”

→ il concetto di “dipendente” è una generalizzazione dei


concetti di “funzionario”, “impiegato”, “dirigente”, …

Generalizzazione è una astrazione di una o più entità F1, F2,


…,—dette sottoclassi o figlie—in una entità G concettual-
mente più generale—detta superclasse o genitore o padre.

Sottoinsieme è un caso particolare della generalizzazione:


per un determinato concetto sul genitore G esiste una sola
sottoclasse S, che può avere propri attributi.

Proprietà di copertura della generalizzazione

• proprietà di completezza: totale o parziale


o totale (t) se ciascun elemento di G corrisponde ad
almeno una delle sottoclassi
o parziale (p) se almeno un elemento di G è privo di
corrispondenza

• proprietà di disgiunzione: esclusiva o sovrapposta


o esclusiva (e) se ogni elemento di G corrisponde ad al
più una sola sottoclasse
o sovrapposta (o) se almeno un elemento di G ha
corrispondenza in due o più sottoclassi

• la copertura di un sottoinsieme è parziale ed esclusiva.


Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11
ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 104

PERSONA: totale, esclusiva


PERSONA
FEMMINA
(t,e)
MASCHIO

PERSONA FEMMINA MASCHIO

PERSONA: totale, sovrapposta


PERSONA
(t,o)
FEMMINA
MASCHIO
IMPIEGATO FEMMINA MASCHIO IMPIEGATO
PERSONA
PERSONA
(t,e) (p,e)

FEMMINA MASCHIO IMPIEGATO

VEICOLO: parziale, esclusiva


VEICOLO
BICI
(p,e)
AUTO
VEICOLO AUTO BICI

SPORTIVO: parziale, sovrapposta


SPORTIVO
CALCIATORE TENNISTA (p,o)

SPORTIVO CALCIATORE TENNISTA

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 105

LAVORATORE
Data di
assunzione LAVORATORE
STABILE

Codice fiscale
PERSONA Cognome
Nome

Pos_Militare
UOMO DONNA

DIPENDENTE

IMPIEGATO FUNZIONARIO DIRIGENTE

Cognome
CITTÀ NASCITA PERSONA
Nome

Dipartimento PROFESSORE STUDENTE

ogni professore è una persona


ogni studente è una persona
nessun professore è studente, e viceversa
esistono persone che non sono né studenti né professori
ogni studente ha nome, cognome e citta di nascita (ereditati)

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 106

Gerarchie di generalizzazione

Š Possono esistere gerarchie a più livelli e gerarchie


multiple allo stesso livello

Š Una classe (entità) può essere inclusa in più gerarchie,


come genitore e/o figlia

Š alcune configurazioni (combinazioni) non hanno senso

Š il genitore di una gerarchia totale può non avere un


identificatore (purchè lo abbiano tutte le classi figlie)
Codice fiscale
Cognome
PERSONA
Situazione Età
militare Stipendio Matricola

UOMO DONNA IMPIEGATO STUDENTE

Orario SEGRETARIO DIRETTORE PROGETTISTA

RESPONSABILE DI
PROGETTO

PERSONA
(t,e) (p,e)

MASCHIO FEMMINA MANAGER SEGRETARIO IMPIEGATO


(p,o) (p,o)

DIRETTORE DIRETTORE
AMMINISTRATIVO TECNICO VENDITORE PROGRAMMATORE PUBBLICITARIO

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 107

Ereditarietà
nome
PERSONA indirizzo

stato cognome
civile MASCHIO FEMMINA da nubile

indirizzo
PERSONA stato civile (0,1)
cognome da nubile (0,1)

nome MASCHIO FEMMINA nome

nome
PERSONA indirizzo

nome nome
indirizzo MASCHIO FEMMINA indirizzo
stato civile cognome da nubile

Parte V: Progettazione Concettuale dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 108

Progettazione Logica
Obiettivo: “tradurre” lo schema concettuale in uno schema
logico equivalente (corretto ed efficiente)

Input:
ƒ schema concettuale
ƒ carico applicativo
ƒ modello logico

Output:
ƒ schema logico, con vincoli
ƒ documentazione associata.

Carico Schema
applicativo E-R

Ristrutturazione
dello schema E-R

Modello Schema E-R


logico ristrutturato

Traduzione nel
modello logico
Schema
logico

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 109

Ristrutturazione EER in E-R


schema EER
A01 A02

E0 R1 E3

A11 A21

E1 E2 (k,l)
R2 E4

accorpare le sottoclassi nella superclasse (collasso in alto)


A02
A01 A21
(0,1)
A11
(0,1) E0 R1 E3
{tipo}

(0,l)
R2 E4

accorpare la superclasse nelle sottoclassi (collasso in basso)

E3

R11 R12

A11 A01 A01 A21

E1 E2 (k,l)
R2 E4
A02 A02
sostituire la generalizzazione con associazioni (mantenimento delle entità)
A01 A02

E0 R1 E3
(0,1) (0,1)
Rg1 Rg1
(1,1) (1,1)
A11 A21

E1 E2 (k,l)
R2 E4

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 110

selettore

matr. cognome matr. cognome


STUDENTE tesi STUDENTE stage
(p,e) (0,1) (0,1)
tesi stage

LAUREANDO DIPLOMANDO

(1,1) (1,1) (0,1) (0,1)

cod. denom. cod. denom.


(0,n) (0,n) (0,n) (0,n)

RELATORE AZIENDA RELATORE AZIENDA

studente (123, rossi)


studente (218, neri) studente (123, rossi, L, database, NULL)
studente (312, verdi) studente (218, neri, NULL, NULL, NULL)
studente (312, verdi, D, NULL, linguaggi)
laureando (123, database)
selettore ® {L: laur.ndo, D: dipl.ndo}
diplomando (312, linguaggi)

SINDACATO SINDACATO
(0,n) (0,n) (0,n)
(1,n)
ISCRIZ. ISCRIZ.O ISCRIZ.I ISCRIZ.D
(0,1) (0,1) (0,1) (0,1)
cognome

cognome

cognome
qualifica

CF classe
DIPENDENTE CAPO CAPO.D
job
CF

CF

CF
cognome (0,1) (1,n) (1,1)
(t,e) OPERAIO IMPIEGATO DIRIGENTE
(0,n)
qualifica classe (1,1)
job (1,1) (0,n)
CAPO.I
OPERAIO IMPIEGATO DIRIGENTE (0,n)
CAPO.O

codice PROGETTO descrizione codice PROGETTO descrizione

(0,1) (0,1)

mesi n.ro mesi SW HW n.ro


uomo schede uomo (1,1) (1,1) schede

PROG_SW PROG_HW PROG_SW PROG_HW


(1,n) (1,n)

USA USA
(0,n) (0,n)

COMP_HW COMP_HW

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 111

Attributi multivalore

nome indirizzo città


indirizzo città

nome indirizzo AGENZIA


(1,n)
(1,n)

AGENZIA UTENZA
telefono
(1,1)

TELEFONO

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 112

Traduzione ER vs Relazionale
Entità e associazioni molti-a-molti

matricola cognome stipendio data inizio codice nome budget

(0,n) (0,n)
IMPIEGATO PARTECIPAZIONE PROGETTO

IMPIEGATO (Matricola, Cognome, Stipendio)


PROGETTO (Codice, Nome, Budget)
PARTECIPAZIONE (Matricolaó, Codiceó, DataInizio)

con vincoli di integrità referenziale (ó) tra gli attributi


Matricola e Codice di PARTECIPAZIONE e le chiavi di
IMPIEGATO e PROGETTO, rispettivamente.

Š Può essere utile ridenominare gli attributi della chiave


della relazione che rappresenta l’associazione

PARTECIPAZIONE (Impiegato, Progetto, DataInizio).

Š La ridenominazione è indispensabile per le associazioni


ricorsive
componente (0,n) quantità
codice
nome
prezzo
PARTE COMPOSIZIONE
composto (0,n)

PARTE (Codice, Nome, Prezzo)


COMPOSIZIONE (Compostoó, Componenteó, Quantità)

con i due vincoli di integrità referenziale CompostoóPARTE


e ComponenteóPARTE

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 113

Associazioni ternarie (molti-a-molti)

quantità

partita IVA (0,n) (1,n) codice


nome ditta FORNITORE FORNITURA PRODOTTO genere
(1,n)
nome
telefono DIPARTIMENTO

FORNITORE (PartitaIVA, NomeDitta)


PRODOTTO (Codice, Genere)
DIPARTIMENTO (Nome, Telefono)
FORNITURA (Fornitoreó, Prodottoó, Dipartimentoó,
Quantità)

con tre vincoli di integrità referenziale.

Associazioni uno-a-molti

ingaggio
cognome (0,1) (0,n) nome
data nascita
ruolo
GIOCATORE CONTRATTO SQUADRA città
colori sociali

Š traduzione standard:

SQUADRA (Nome, Città, ColoriSociali)


GIOCATORE (Cognome, DataNascita, Ruolo)
CONTRATTO (Giocatoreó, DataNascGiocatoreó, Squadraó, Ingaggio)

Š GIOCATORE e CONTRATTO hanno la stessa chiave: è


pertanto possibile fonderle

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 114

SQUADRA (Nome, Città, ColoriSociali)


GIOCATORE (Cognome, DataNascita, Ruolo, Squadra*ó,
Ingaggio*)
(*) attributo con possibili valori nulli

Entità con identificatore esterno

Š sono coinvolte in associazioni uno-a-molti

Š si traducono con relazioni che contengono (come parte


della chiave) anche la chiave della relazione identificante;
(in tal modo si rappresenta anche l’associazione)
matricola cognome anno iscrizione nome città indirizzo

(1,1) (1,n)
STUDENTE ISCRIZIONE UNIVERSITÀ

UNIVERSITÀ (Nome, Città, Indirizzo)


STUDENTE (Matricola, NomeUniversitàó, Cognome, AnnoIscr)

con vincolo d’integrità referenziale tra l’attributo Nome-


Università e l’attributo Nome della relazione UNIVERSITÀ

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 115

Associazioni uno-a-uno

→ La traduzione dipende dalle cardinalità minime


obbligatoria-obbligatoria
codice cognome stipendio nome telefono sede
data inizio

(1,1) (1,1)
DIRETTORE DIREZIONE DIPARTIMENTO

DIRETTORE (Codice, Cognome, Stipendio)


DIPARTIMENTO (Nome, Telefono, Sede, Direttoreó, InizioDirez)
¬
DIRETTORE (Codice, Cognome, Stipendio, DipDirettoó, InizioDirez)
DIPARTIMENTO (Nome, Telefono, Sede)
¬
DIRDIP (Codice, Cognome, Stipendio, Dipart, Telefono, Sede, InizioDirez)
¬
DIRETTORE (Codice, Cognome, Stipendio)
DIPARTIMENTO (Nome, Telefono, Sede)
DIRDIP (Direttoreó, Dipartimentoó, InizioDirez)

opzionale-obbligatoria
codice cognome stipendio nome telefono sede
data inizio

(0,1) (1,1)
IMPIEGATO DIREZIONE DIPARTIMENTO

IMPIEGATO (Codice, Cognome, Stipendio)


DIPARTIMENTO (Nome, Telefono, Sede, Direttoreó, InizioDirez)

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 116

opzionale-opzionale
cognome datanascita curriculum nazione capogoverno capostato
credenziali

(0,1) (0,1)
AMBASCIATORE ASSEGNAZIONE SEDE

AMBASCIATORE (Cognome, DataNascita, Curriculum)


SEDE (Nazione, CapoGoverno, CapoStato,
Ambasc*ó, DataNascAmbasc*ó, Credenziali*)
¬
AMBASCIATORE (Cognome, DataNascita, Curriculum,
Nazione*ó, Credenziali*)
SEDE (Nazione, CapoGoverno, CapoStato)
¬
AMBASCIATORE (Cognome, DataNascita, Curriculum)
SEDE (Nazione, CapoGoverno, CapoStato)
ASSEGNAZIONE (Ambascó, DataNascAmbascó, Nazioneó, Credenziali)

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11


ezio lefons: sistemi di basi di dati (appunti), 1.2ª ed. 117

(0,1) (1,1)
DIREZIONE telefono (1,n)
codice
cognome (0,1) (1,n)
stipendio
età
IMPIEGATO AFFERENZA DIPARTIMENTO nome

(0,n) data afferenza (1,1)

ASSEGNAZIONE UBICAZIONE
data inizio
(1,n) (1,n) città
nome civico
budget
data consegna
PROGETTO SEDE indirizzo via
cap
(0,1)

1. IMPIEGATO (Codice, Cognome, Stipendio, Età)


2. PROGETTO (Nome, Budget, DataConsegna*)
3. SEDE (Città, IndCivico, IndVia, IndCap)
4. DIPARTIMENTO (CittàDóSEDE, Nome)
5. ASSEGNAZIONE (NomePóPROG, CodiceIóIMP, DataInizio)
6. AFFERENZA (I#óIMP, CittàSóDIP, NomeDóDIP, DataAffer)
1+6. IMPIEGATO (I#, Cogn, Stip, Età, Città*óDIP, Nome*óDIP,
DataAff*)
7. DIREZIONE (CittàDóDIP, NomeóDIP, DirettoreóIMP)
8. UBICAZIONE à DIPARTIMENTO
4+7. DIPARTIMENTO (CittàóSEDE, Nome, DirettoreóIMP)
8. TELEFONI (CittàóDIP, NomeDóDIP, Telefono)

Parte VI: Progettazione Logica dei Sistemi Informativi a.a. 2010-11