Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di
a.a. 2010-11
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
“Cristoforo Colombo”
“125”
??????
nome valore
• semplice
città
• composto indirizzo via
civico
• dato valido
Creazione
Inserimento
Cancellazione
Aggiornamento
Interrogazione
Ordinamento
Primari
File
Secondari (Indice)
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
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
• 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.
mapping
esterno/concettuale
LIVELLO
CONCETTUALE SCHEMA LOGICO
(CONCETTUALE)
mapping interno/concettuale
LIVELLO
SCHEMA INTERNO
INTERNO
Il DBMS
Sistema Operativo
Sistema di utilità
I programmi che aiutano il DBA a gestire il sistema,
svolgono le seguenti funzioni
• Backup
I modelli di dati
• Il Modello dei Dati caratterizza il livello concettuale
(logico) e quello esterno dei DBS (DataBase System)
Modello Gerarchico
Modello Reticolare
Modello Relazionale
Modelli Object-Oriented
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à!).
Dominio
Relazione
Attributo
Schema di relazione
Vincolo di integrità.
Esempio
Esempio
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
Relazione: definizioni
Ogni relazione definita su n domini D1, …, Dn ha grado n.
card(D1*#*Dn) = card(D1)*#*card(Dn)
card(R) \ card(D1*#*Dn).
Relazione: proprietà
La relazione è un insieme di n-ple ordinate. Pertanto,
Esempio
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
Esempio
R.A, S.A
IMPIEGATO.Nome, IMPIEGATO.ID#,
DIPARTIMENTO.Nome, DIPARTIMENTO.ID#
Vincolo di dominio
Esempi
Vincolo di chiave
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
Chiavi candidate
Chiave primaria.
Integrità dell’entità
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
Inserimento
Cancellazione
Aggiornamento (Modifica)
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
Operatori Relazionali
Insieme di operatori
• su relazioni
• ridenominazione
• selezione
• proiezione
Quindi
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
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
Esempio
Esempio
PATERNITÀ MATERNITÀ
Padre Figlio Madre Figlio
Adamo Caino Eva Caino
Adamo Abele Eva Set
Abramo Isacco Sara Isacco
Abramo Ismaele 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
Selezione (s)
• operatore monadico
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
Formula proposizionale
• r(X) : relazione
• F : formula proposizionale su X:
o A e B attributi in X
Proiezione (p)
Dati
- una relazione con schema R(X) e
- un sottoinsieme di attributi Y ¥ X
la proiezione di R su Y è così definita
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
- Matricola e Cognome
- Cognome e Filiale
card(pY(R)) \ card(R)
Selezione e Proiezione
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
Prodotto (*)
Combinando selezione e proiezione, possiamo estrarre
informazioni da una relazione
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
Rl * R2 = R2 * Rl
n
R1 * R2 * … * Rn = *i=1 Ri
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
Theta-Join (äF)
Equivalentemente
R1 äF R2 = sF (R1 * R2)
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
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
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
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
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
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
Se R1 ä R2 è completo
R1 ä R2 = R2 ä R1
n
R1 ä R2 ä … ä Rn = *i=1 Ri
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
Semijoin ( , , F , F)
R S ={ taR | t[X]apX(S)}
Equivalentemente,
R S = pYX(R ä S).
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
Divisione (%, /)
Se T=R%S
Se R=S*T
allora R%S=T
e anche R%T=S
R % S ={ t su X | (ß saS) t ) saR}.
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
Divisione
Equivalentemente,
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
R%S
A B
a b
e d
RIDENOMINAZIONE Assegna/modifica il nome a una r<nome rel> / <lista attributi 2> ← <lista
relazione e/o a suoi attributi. attributi 1>(R)
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.
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 Reddito
Padre
Andrea 21
Franco
Aldo 15
Luigi
Filippo 30
VISTE
(Relazioni Derivate)
Possono esistere rappresentazioni diverse per gli stessi
dati (architettura ANSI/SPARC a tre livelli)
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
Viste
Esempio
AFFERENZA DIREZIONE
Impiegato Reparto Reparto Direttore
Rossi Vendite Acquisti Leoni
Neri Acquisti Vendite Falchi
Bruni Vendite Personale Leoni
Mori Personale
Vista
Eseguita come
Esempio
AFFERENZA DIREZIONE
Impiegato Reparto Reparto Direttore
Rossi Vendite Acquisti Leoni
Neri Acquisti Vendite Falchi
Bruni Vendite Personale Leoni
Mori Personale
Senza la vista
Con la vista
pImpiegato (SUPERVISIONE ä
rImpR ← Impiegato (sImpiegato = ‘Rossi’ (SUPERVISIONE)))
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
Come fare ?
SQL
Structured Query Language
QUERY LANGUAGE
<lista attributi>::= (& | ( <nome colonna> | <funzione> ([DISTINCT] <nome colonna> | &)))
{, ( <nome colonna> | <funzione> ([DISTINCT] <nome colonna> | &) ) }
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 (…|…|…).
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}
Tabelle
CREATE TABLE NomeTabella
( NomeAttr Dominio [ValoreDefault] [vincoli]
{, NomeAttr Dominio [ValoreDefault] [vincoli]}
[, Altri Vincoli] );
Esempio
Vincoli Intrarelazionali
Vincoli Interrelazionali
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
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.
SELECT ListaAttributi
FROM ListaTabelle
[WHERE Condizione];
Esempio
SELECT &
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';
SELECT STIPENDIO/12 AS STIPMENSILE
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI';
SELECT NOME
FROM IMPIEGATO
WHERE COGNOME = 'ROSSI' AND
(DIPART = 'PRODUZIONE' OR DIPART = 'AMMINISTRAZIONE');
Operatore LIKE
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
StipendioMensile
3.00
Ordinamento
Join
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.
Variabili (alias)
SELECT I.NOME, D.NOME, D.CITTÀ
FROM IMPIEGATO AS I, DIPARTIMENTO AS D
WHERE I.DIPART = D.NOME;
Operatori aggregati
corretta errata
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
Dipart Stip
dipl 20
dip2 26
dip3 12
SELECT UFFICIO
FROM IMPIEGATO
GROUP BY DIPART;
Dipart Stip
dip1 20
dip2 26
Interrogazioni Insiemistiche
SelectSQL {UNION|INTERSECT|EXCEPT> [ALL] SelectSQL}
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';
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);
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));
Viste (Virtuali)
In SQL le viste sono definite con:
CREATE VIEW Nome [(ListaAttributi)] AS SelectSQL
[WITH [LOCAL|CASCADED] CHECK OPTION]
Operatività
Fase operativa con interventi
di gestione e manutenzione
Specifiche
sui dati
Schema concettuale
Progetto
Progettazione logica
logico
Schema logico
Schema fisico
• entità
• associazione (relazione, relationship)
• attributo
• identificatore
• generalizzazione e sottoinsieme
Entità
ø nomi espressivi
IMPIEGATO REGIONE
CITTÀ AZIENDA
Associazione (relationship)
N (0, n)
(0, n)
VIVE_IN CORSO LEZIONE
1 (0, n)
CITTÀ GIORNO
ORDINE
superiore_di
subordinato_a
BOLLA_DI_
CONSEGNA
(c) relazione DIRIGE
Attributo
Denominazione
Codice Docente
Voto Data
Matricola Nome
Nome
NASCE_A
Mansione Regione
CF
Nome PERSONA CITTÀ
Grado Numero
RISIEDE _Abitanti
civico
via cap
PERSONA
cognome DIREZIONE
codice telefono
età IMPIEGATO AFFERENZA DIPARTIMENTO
nome
stipendio
data afferenza
ASSEGNAZIONE UBICAZIONE
• di norma, si utilizza
PERSONA AULA
(1,1) (0,40)
(1,3)
VIVE_IN CORSO LEZIONE
(0,n) (0, n)
CITTÀ GIORNO
ORDINE
superiore_di
(0,n) (0,1)
(1,1) (1,1)
subordinato_a
BOLLA_DI_
CONSEGNA
(c) relazione DIRIGE
Denominazione
Codice Docente
Voto Data
Matricola Nome
CF
Nome PERSONA CITTÀ
Grado Numero
RISIEDE _Abitanti
(0,n) (0,n)
(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
Cardinalità dell’attributo
• attributi multivalore
Nome
(0,1)
PERSONA Numero patente
Identificatore dell’entità
• è costituito da
Anno iscrizione
Targa Cognome
Modello STUDENTE
AUTOMOBILE
Colore Matricola
(1,1)
ISCRIZIONE
(1,n)
Cognome
Nome Nome
PERSONA Data nascita Città
UNIVERSITÀ
Indirizzo Indirizzo
(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
Generalizzazione
LAVORATORE
Data di
assunzione LAVORATORE
STABILE
Codice fiscale
PERSONA Cognome
Nome
Pos_Militare
UOMO DONNA
DIPENDENTE
Cognome
CITTÀ NASCITA PERSONA
Nome
Gerarchie di generalizzazione
RESPONSABILE DI
PROGETTO
PERSONA
(t,e) (p,e)
DIRETTORE DIRETTORE
AMMINISTRATIVO TECNICO VENDITORE PROGRAMMATORE PUBBLICITARIO
Ereditarietà
nome
PERSONA indirizzo
stato cognome
civile MASCHIO FEMMINA da nubile
indirizzo
PERSONA stato civile (0,1)
cognome da nubile (0,1)
nome
PERSONA indirizzo
nome nome
indirizzo MASCHIO FEMMINA indirizzo
stato civile cognome da nubile
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
Traduzione nel
modello logico
Schema
logico
E0 R1 E3
A11 A21
E1 E2 (k,l)
R2 E4
(0,l)
R2 E4
E3
R11 R12
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
selettore
LAUREANDO DIPLOMANDO
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
(0,1) (0,1)
USA USA
(0,n) (0,n)
COMP_HW COMP_HW
Attributi multivalore
AGENZIA UTENZA
telefono
(1,1)
TELEFONO
Traduzione ER vs Relazionale
Entità e associazioni molti-a-molti
(0,n) (0,n)
IMPIEGATO PARTECIPAZIONE PROGETTO
quantità
Associazioni uno-a-molti
ingaggio
cognome (0,1) (0,n) nome
data nascita
ruolo
GIOCATORE CONTRATTO SQUADRA città
colori sociali
traduzione standard:
(1,1) (1,n)
STUDENTE ISCRIZIONE UNIVERSITÀ
Associazioni uno-a-uno
(1,1) (1,1)
DIRETTORE DIREZIONE DIPARTIMENTO
opzionale-obbligatoria
codice cognome stipendio nome telefono sede
data inizio
(0,1) (1,1)
IMPIEGATO DIREZIONE DIPARTIMENTO
opzionale-opzionale
cognome datanascita curriculum nazione capogoverno capostato
credenziali
(0,1) (0,1)
AMBASCIATORE ASSEGNAZIONE SEDE
(0,1) (1,1)
DIREZIONE telefono (1,n)
codice
cognome (0,1) (1,n)
stipendio
età
IMPIEGATO AFFERENZA DIPARTIMENTO nome
ASSEGNAZIONE UBICAZIONE
data inizio
(1,n) (1,n) città
nome civico
budget
data consegna
PROGETTO SEDE indirizzo via
cap
(0,1)