Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25...

33
Introduzione Basi di Dati Orazio Battaglia

Transcript of Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25...

Page 1: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione Basi di Dati

Orazio Battaglia

Page 2: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati Ogni organizzazione è dotata di un sistema informativo che

organizza e gestisce le informazioni necessarie per perseguire gli scopi dell’organizzazione stessa

Per indicare la porzione automatizzata del sistema informativo viene di solito utilizzato il termine sistema informatico

Un sistema di gestione di basi di dati (DBMS, Data Base Management System) è un sistema software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti, assicurando la loro affidabilità e privatezza. Come ogni prodotto informatico, un DBMS deve essere efficiente ed efficace. Una base di dati è una collezione di dati gestita da un DBMS

2 Tecnico di Reti Informatiche, modulo 2

Page 3: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

Un modello dei dati è un insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la struttura in modo che essa risulti comprensibile ad un elaboratore.

Il modello attualmente più diffuso è quello relazionale.

Evoluzione storica dei modelli dei dati:

Modello gerarchico: basato su strutture ad albero e quindi gerarchiche, da cui il nome (limite: uso dei puntatori e mancanza dell’indipendenza dei dati)

Modello reticolare: basato sull’uso di grafi (limite: uso dei puntatori e mancanza dell’indipendenza dei dati)

Modello relazione: basato sul concetto di relazione (primo modello che realizza l’indipendenza dei dati)

Modello a oggetti: estende alle basi di dati il paradigma di programmazione ad oggetti

3 Tecnico di Reti Informatiche, modulo 2

Page 4: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

Il modello relazionale dei dati, attualmente il più

diffuso, permette di definire tipi per mezzo del

costruttore relazione, che consente di organizzare i

dati in insiemi di record a struttura fissa.

Una relazione viene rappresentata in genere come

una tabella le cui righe rappresentano specifici record

e le cui colonne corrispondono ai campi del record.

L’ordine delle righe e delle colonne è sostanzialmente

irrilevante.

4 Tecnico di Reti Informatiche, modulo 2

Page 5: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

Esempio di base di dati relazionale

5

Matricola Cognome Nome Data di

nascita

276545 Rossi Maria 25/11/1971

485745 Neri Anna 23/04/1972

200768 Verdi Fabio 12/02/1972

587614 Rossi Luca 10/10/1971

937653 Bruni Mario 01/12/1971

Studente Voto Corso

276545 28 01

276545 27 04

937653 25 01

200768 24 04

Codice Titolo Docente

01 Analisi Giani

03 Chimica Melli

04 Chimica Belli

STUDENTI

ESAMI

CORSI

Tecnico di Reti Informatiche, modulo 2

Page 6: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati La base di dati nell’esempio mostra una delle caratteristiche fondamentali del modello relazionale, che viene spesso indicata dicendo che esso è «basato su valori»: i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei campi (domini) che compaiono nei record (tuple).

Negli altri modelli, gerarchico e reticolare, i riferimenti fra dati sono definiti in modo esplicito attraverso puntatori.

Il modello relazione presenta quindi due vantaggi rispetto agli altri modelli, gerarchico e reticolare:

1. La rappresentazione logica dei dati non fa alcun riferimento a quella fisica e così si ottiene l’indipendenza fisica dei dati

2. Essendo tutta l’informazione contenuta nei valori è relativamente semplice trasferire i dati da un contesto ad un altro. In presenza di puntatori l’operazione è più complessa poiché i puntatori hanno un significato locale al singolo sistema

6 Tecnico di Reti Informatiche, modulo 2

Page 7: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

Altro esempio base di dati (1/2).

Supponiamo di avere le ricevute e di doverle rappresentare in una base di dati.

7

«DA MARIO»

Ricevuta n. 1357

Del 5/5/92

3 Coperti 6000

2 Antipasti 12000

3 Primi 27000

2 Bistecche 36000

Totale 81000

«DA MARIO»

Ricevuta n. 2334

Del 4/7/92

2 Coperti 4000

1 Antipasti 6000

2 Primi 15000

2 Orate 50000

2 Caffè 3000

Totale 78000

Tecnico di Reti Informatiche, modulo 2

Page 8: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

Altro esempio base di dati (2/2).

Una rappresentazione può essere quella riportata.

8

Num Data Totale

1357 5/5/92 81000

2334 4/7/92 78000

Num Riga Q.Tà Descr. Importo

1357 1 3 Coperti 6000

1357 2 2 Antipasti 12000

1357 3 3 Primi 27000

1357 4 2 Bistecche 36000

2334 1 2 Coperti 4000

2334 2 1 Antipasti 6000

2334 3 2 Primi 15000

2334 4 2 Orate 50000

2334 5 2 Caffè 3000

RICEVUTE DETTAGLIO

Tecnico di Reti Informatiche, modulo 2

Page 9: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

9

Chiavi e vincoli di integrità referenziale

Una chiave è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione. Si può dimostrare che su ogni relazione si può definire almeno una chiave. Questo garantisce la accessibilità a tutti i valori di una base di dati e la loro univoca identificabilità. Inoltre permette di stabilire efficacemente le corrispondenze tra i dati contenuti nelle relazioni diverse che è proprio la caratteristica del modello relazione «basato su valori».

Un vincolo di integrità referenziale (foreign key) definito su un attributo di una tabella impone che il valore dell’attributo compaia come valore della chiave primaria in un’altra tabella.

Tecnico di Reti Informatiche, modulo 2

Page 10: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione basi di dati

10

Esempio di Chiavi e vincoli di integrità referenziale.

Codice Data Agente Articolo Prov Numero

143256 25-10-92 567 44 RM 4E5432

987554 26-10-92 456 34 RM 4E5432

987557 26-10-92 456 34 RM 2F7643

630876 15-10-92 456 53 MI 2F7643

539856 12-10-92 567 44 MI 2F7643

INFRAZIONI

Matricola CF Cognome Nome

567 RSSM... Rossi Mario

456 NREL... Neri Luigi

638 NREP... Neri Piero

AGENTI

Prov Numero Proprietari

o

Indirizzo

RM 2F7643 Verdi Piero Via Tigli

RM 1A2396 Verdi Piero Via Tigli

RM 4E5432 Bini Luca Via Aceri

MI 2F7643 Luci Gino Via Aceri

AUTO

Tecnico di Reti Informatiche, modulo 2

Page 11: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

11

SQL è l’acronimo di Structured Query Language.

SQL è un linguaggio standardizzato per l’interazione

con le basi di dati relazionali

SQL contiene al suo interno le funzionalità di

DDL (Data Definition Language): comandi per la

definizione dello schema di una base di dati

DML (Data Manipulation Language): comandi per la

modifica e l’interrogazione dell’istanza di una base di dati

Tecnico di Reti Informatiche, modulo 2

Page 12: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

12

Domini Elementari (1/2)

Si distinguono 5 tipi di dati (domini elementari):

Carattere. Il tipo carattere rappresenta un singolo carattere o una stringa. Può essere a lunghezza fissa o variabile e può limitarsi ad un determinato set di caratteri. character [varying] [(Lunghezza)] [character set NomeFamigliaCaratteri] La lunghezza indica la lunghezza della stringa. Se si usa il varying la lunghezza indica la lunghezza massima della stringa. Se omessa la lunghezza massima è quella definita nella configurazione del DBMS.

Tipi numerici esatti. Sono domini che permettono di rappresentare valori interi o decimali in virgola fissa. I tipi sono:

numeric [(precisione[, scala])]

decimal [(precisione[, scala])]

integer

smallint

Il tipo decimal differisce da numeric in quanto in base alle esigenze può scegliere una rappresentazione diversa che rispecchi di più la realtà. Sostanzialmente è più preciso. Gli ultimi 2 tipi sono interi e dipendono dalla macchina in uso. Per specificare la scala bisogna anche specificare la precisione ad esempio numeric(6,4) permette di rappresentare i valori compresi tra -99,9999 e +99,9999.

Tecnico di Reti Informatiche, modulo 2

Page 13: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

13

Domini Elementari (2/2)

Tipi numerici approssimati. Permettono di rappresentare valori in virgola mobile. A ciascun valore corrispondono una Mantissa e un Esponente. Es: 0,17E16 (= 1,7 x 1015). I valori sono:

float [(precisione)]

real

double precision

Nel dominio float può essere specificata la precisione della Mantissa. Il tipo double precision ha una rappresentazione doppia rispetto al tipo real.

Data e ora. I domini di questo tipo difficilmente riscontrabili nei linguaggi di programmazione sono:

date

time [(precisione)] [with time zone]

timestamp [(precisione)] [with time zone]

Date è formato dai campi year, month e day Time è formato dai campi hour, minute e second Timestamp è formato da tutti i campi precedenti Negli ultimi 2 se è presente l’opzione ‘with time zone’ vengono aggiunti 2 campi che sono rispettivamente ore e minuti dall’ora universale

Intervalli temporali. E’ un unico dominio che permette di rappresentare un intervallo di tempo:

interval PrimaUnitàTempo [ to UltimaUnitàTempo]

I parametri che possono essere usati sono dei 2 insiemi: da year a month

da day a second

Esempi: interval year(5) to month permette di rappresentare intervalli fino a 99.999 anni e 11 mesi

Interval day(4) to second(6) permette di rappresentare intervalli fino a 9.999 giorni, 23 ore, 59 minuti e 59,999999 secondi

Tecnico di Reti Informatiche, modulo 2

Page 14: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

14

Comandi SQL per la definizione dello schema.

La prima operazione da fare per la creazione di un database in un DBMS relazionale tramite SQL è la creazione dello schema del database.

Create schema [NomeSchema] [ [authorization] Autorizzazione]

{DefElementoSchema}

NomeSchema è il nome del database

Autorizzazione è l’utente proprietario del database, se omesso viene assegnato l’utente che sta eseguendo l’istruzione

DefElementoSchema rappresenta l’insieme delle istruzioni necessarie alla creazione degli elementi del database. Elementi del database sono:

Domini (tipi base dei dati)

Tabelle

Asserzioni (vincoli associati a nessuna tabella)

Viste

Privilegi

Tecnico di Reti Informatiche, modulo 2

Page 15: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

15

Comandi SQL per la definizione dello schema.

Le tabelle sono definite mediante l’istruzione:

create table NomeTabella

( NomeAttributo Dominio [ValoreDiDefault] [Vincoli],

……

……

AltriVincoli

)

Ad ogni attributo possono essere assegnati un valore di default e dei vincoli

AltriVincoli sono i vincoli che riguardano più attributi della tabella

ValoriDiDefault. Il valore di default predefinito è sempre NULL. Se ne possono stabilire altri. La sintassi è:

default GenericoValore | user | null

User e null sono prestabiliti e rappresentano rispettivamente il nome utente e il valore nullo. GenericoValore è quello stabilito dall’utente.

Tecnico di Reti Informatiche, modulo 2

Page 16: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

16

Comandi SQL per la definizione dello schema.

E’ possibile definire dei nuovi tipi di dati a partire da

quelli base in modo meno flessibile rispetto ai

linguaggi di programmazione tradizionali.

Create domain NomeDominio as TipoDiDato

[ValoreDiDefault]

[Vincolo]

La definizione dei domini è necessaria quando tipi

particolari di dati devono essere usati in più tabelle

Tecnico di Reti Informatiche, modulo 2

Page 17: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

17

Comandi SQL per la definizione dello schema.

Vincoli intrarelazionali

I vincoli intrarelazionali sono:

Not null: l’attributo non può assumere valore nullo.

Unique: l’attributo deve essere unico nella relazione

Primary Key: l’attributo è chiave primaria quindi unico

e non nullo

Il vincolo può essere specificato per singolo attributo o

per più attributi, in questo caso la sintassi è:

Vincolo (attributo1, attributo2, ..., attributoN)

Tecnico di Reti Informatiche, modulo 2

Page 18: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

18

Comandi SQL per la definizione dello schema.

Vincoli interrelazionali (1/2)

Il principale vincolo interrelazionale è il vincolo di integrità referenziale. Se riguarda un singolo attributo la sintassi è:

NomeAttributo Dominio [ValoreDiDefault] references Tabella(Attributo)

Se riguarda più attributi la sintassi è:

foreign key(attributo1, attributo2) references Tabella(attributo1,attributo2)

La tabella in cui definisco la foreign key è detta slave. La tabella in cui il valore della foreign key è la chiave è detta master.

Il vincolo non consente di inserire nella tabella slave delle tuple che non abbiano uno o più attributi corrispondenti nella tabella master.

Tecnico di Reti Informatiche, modulo 2

Page 19: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

19

Comandi SQL per la definizione dello schema.

Vincoli interrelazionali (2/2)

Alla modifica o cancellazione di tuple nella tabella master si può reagire in uno dei seguenti modi:

cascade: vengono modificate o cancellate tutte le tuple nella tabella slave;

set null: agli attributi della tabella slave che sono in relazione con altri attributi della tabella master viene assegnato il valore null

set default: agli attributi della tabella slave che sono in relazione con altri attributi della tabella master viene assegnato il valore di default

no action: non viene effettuata nessuna modifica

La sintassi è la seguente:

foreign key(Attributo1,Attributo2,...,AttributoN) references Tabella(Attributo1, Attributo2,..., AttributoN)

on delete set null

on update cascade

Tecnico di Reti Informatiche, modulo 2

Page 20: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

20

Comandi SQL per la modifica dello schema (1/2).

E’ possibile modificare ed eliminare elementi di un database (e il database stesso) mediante , rispettivamente , i seguenti comandi alter e drop.

Sintassi del comando alter:

alter domain NomeDominio < set default ValoreDefault |

drop default |

add constraint DefVincolo |

drop constraint NomeVincolo >

alter table NomeTabella <

alter column NomeAttributo <set default NuovoDefault |

drop default> |

add constraint DefVincolo |

drop constraint NomeVincolo |

add column DefAttributo |

drop column NomeAttributo >

Tecnico di Reti Informatiche, modulo 2

Page 21: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

21

Comandi SQL per la modifica dello schema (2/2).

Sintassi del comando drop:

drop < schema | domain | table | view | assertion>

NomeElemento [ restrict | cascade ]

L’opzione restrict elimina l’elemento solamente se è vuoto.

L’opzione cascade elimina l’elemento in ogni caso e in

modo ricorsivo cioè elimina pure gli elementi da esso

discendenti.

Quando non specificata l’opzione predefinita è restrict.

Tecnico di Reti Informatiche, modulo 2

Page 22: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

22

Interrogazioni in SQL

La sintassi dell’interrogazione è la seguente:

select AttrExpr1 [ [as] Alias1], AttrExprN [ [as] AliasN]

from Tabella1 [ [as] Alias1 ] , TabellaN [ [as] AliasN ]

[ where Condizione ]

E’ possibile definire degli alias per gli attributi e per le tabelle. I primi vengono usati come Attributi della tabella risultante dalla interrogazione.

Nelle condizioni è possibile usare i simboli =, <>, >, <, >=, <= e gli operatori and, or not. E’ possibile usare anche la clausola like che è un uguale con i caratteri jolly _ e %:

_ è l’equivalente del carattere jolly ? (cioè un carattere qualunque)

% è l’equivalente dell’* (cioè un numero qualunque di caratteri qualunque).

Il risultato di una interrogazione è un sottoinsieme del prodotto cartesiano delle tabelle che riguardano l’interrogazione. Gli insiemi sono le tabelle e gli elementi degli insiemi sono le tuple delle relazioni.

Tecnico di Reti Informatiche, modulo 2

Page 23: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

23

Interrogazioni in SQL, Join (1/2)

L’operazione di Join permette a partire da 2 tabelle di generarne una terza con tuple uguali alla combinazione di tuple della prima e tuple della seconda che hanno valori uguali in attributi con lo stesso nome.

Sintassi: select AttrExpr1[ [as] Alias1], AttrExpr2 [as] Alias2, ..., AttrExprN [as] AliasN

from Tabella [ [as] Alias ]

, TipoJoin join Tabella [ [as] Alias ] on CondizioneDiJoin

where AltraCondizione

Esistono 2 tipi di Join:

interno (inner)

esterno (outer)

Il join interno estrae un sottoinsieme del prodotto cartesiano fra le 2 tabelle di partenza che contiene solo le tuple che rispettano la condizione.

Nel join esterno invece oltre alle tuple che rispettano la condizione vengono estratte pure quelle che non hanno corrispondenti, inserendo nei valori mancanti il valore null.

Tecnico di Reti Informatiche, modulo 2

Page 24: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

24

Interrogazioni in SQL, Join (2/2)

In particolare il join esterno (outer) può essere:

left [outer] join

right [outer] join

full [outer] join

Il left include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano della tabella di sinistra

Il right include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano della tabella di destra

Il full include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano di entrambe le tabelle

Tecnico di Reti Informatiche, modulo 2

Page 25: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

25

Ordinamento

La sintassi per ordinare il risultato di na interrogazione

è la seguente:

order by AttrDiOrdinamento1 [asc|desc],

AttrDiOrdinamento2 [asc|desc], ... ,

AttrDiOrdinamentoN [asc|desc]

L’ordinamento viene effettuato prima per il rpimo

campo poi per il secondo ecc.

Tecnico di Reti Informatiche, modulo 2

Page 26: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

26

Operatori Aggregati

Servono ad effettuare dei calcoli su più tuple. Si dividono, in base alla sintassi, in due gruppi e sono:

count

sum, max, min, avg

Sintassi:

count ( * | [distinct | all] ListaAttributi )

L’opzione * restituisce il numero di righe, distinct il numero di valori diversi non nulli degli attributi specificati e all il numero di valori non nulli degli attributi specificati.

sum | max | min | avg ( [distinct | all ] AttrEspr )

L’opzione distinct esegue l’operatore aggregato su valori non duplicati degli attributi, mentre all lo esegue su tutti i valori non nulli. Gli operatori hanno il seguente significato:

sum esegue la somma dei valori dell’ attributo

max calcola il valore massimo fra quelli dell’ attributo

min calcola il valore minimo fra quelli dell’ attributo

avg calcola la media dei valori dell’ attributo

Importante: quando si usano gli operatori aggregati nella select non è possibile includere degli attributi. Quindi una interrogazione del genere:

select Nome, max(Stipendio)

from Impiegato

è errata.

Tecnico di Reti Informatiche, modulo 2

Page 27: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

27

Interrogazioni con Raggruppamento

Gli operatori aggregati visti prima permettono di eseguire calcoli su tutte le tuple di una relazione o su un sottoinsieme di esse. Per effettuare calcoli su più sottoinsiemi di tuple di una relazione è necessario usare i raggruppamenti. Es:

select Dipart, sum(Stipendio)

from Impiegato

group by Dipart

questa interrogazione permette di estrarre la somma degli stipendi elargiti per ogni dipartimento. La tabella risultante contiene tante righe quanti sono i Dipartimenti in Impiegato e per ogni riga il dipartimento e la somma degli stipendi.

Importante: quando si usano i raggruppamenti nella select possono essere messi solo gli attributi che compaiono nel group by (non necessariamente tutti) e gli operatori aggregati.

Tecnico di Reti Informatiche, modulo 2

Page 28: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

28

Predicati sui gruppi

I predicati sui gruppi permettono di effettuare delle selezioni sui raggruppamenti. Ad es:

select Dipart, sum(Stipendio)

from Impiegato

group by Dipart

having sum(Stipendio) > 100

In questo modo viene generata una tabella che per ogni riga mostra i dipartimenti (dipartimento, stipendio) che hanno elargito stipendi per un importo maggiore di 100 (milioni).

Importante: possono essere argomento della clausola having solo gli operatori aggregati

Tecnico di Reti Informatiche, modulo 2

Page 29: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione al linguaggio SQL

29

Manipolazione dei dati in SQL

Inserimento di righe

La sintassi è la seguente:

insert into NomeTabella [ListaAttributi] values ListaDiValori | SelectSQL

Cancellazione di righe

La sintassi è la seguente:

delete from NomeTabella [where Condizione]

Modifica delle righe

La sintassi è la seguente:

Update NomeTabella

set Attributo1 = Espressione | SelectSQL | null | default

set Attributo2 = Espressione | SelectSQL | null | default

...

set AttributoN = Espressione | SelectSQL | null | default

[where Condizione]

Tecnico di Reti Informatiche, modulo 2

Page 30: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione progettazione basi di dati Ciclo di vita di un sistema informativo.

30

• Studio di fattibilità: serve a definire, in maniera per quanto possibile precisa, i costi delle varie alternative possibili e a stabilire le priorità di realizzazione delle varie componenti del sistema.

• Raccolta e analisi dei requisiti: consiste nella individuazione e nello studio delle proprietà e delle funzionalità che il sistema informativo dovrà avere. Questa fase richiede una interazione con gli utenti del sistema e produce una descrizione completa, ma generalmente informale, dei dati coinvolti e delle operazioni su di essi. Vengono inoltre stabiliti i requisiti hw e sw del sistema informativo.

• Progettazione: si divide generalmente in progettazione dei dati e progettazione delle applicazioni. Nella prima si individua la struttura e l’organizzazione che i dati dovranno avere, nella seconda si definiscono le caratteristiche dei programmi applicativi. Le descrizioni dei dati e delle applicazioni prodotte in questa fase sono formali e fanno riferimento a specifici modelli.

• Implementazione: consiste nella realizzazione del sistema informativo. Viene costruita e popolata la base di dati e viene prodotto il codice dei programmi.

• Validazione e collaudo: serve a verificare il corretto funzionamento e la qualità del sistema informativo. La sperimentazione dovrebbe prevedere tutte le condizioni operative.

• Funzionamento: In questa fase il sistema informativo diventa operativo ed esegue i compiti per i quali era stato originariamente progettato

Tecnico di Reti Informatiche, modulo 2

Page 31: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione progettazione basi di dati

Fase di progettazione. Progettazione dei dati.

Nel diagramma vengono mostrare le fasi della progettazione dei dati

della fase di progettazione del ciclo di vita del sistema informativo.

31

Progettazione Logica

Progettazione Concettuale

Progettazione Fisica

Schema

Concettuale

Schema Logico

Schema Fisico

Prodotto della progettazione

Tecnico di Reti Informatiche, modulo 2

Page 32: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione progettazione basi di dati Fase di progettazione. Progettazione dei dati.

Nella progettazione concettuale viene data una descrizione formale e completa della realtà di interesse senza tenere conto del modello logico della base di dati da usare né degli aspetti di implementazione pratica (uso di un determinato DBMS software). Il prodotto di questa fase è lo schema concettuale. La creazione dello schema concettuale viene fatta tramite il modello Entità-Relazione (che è quello che si è diffuso maggiormente per questo scopo).

Nella fase della progettazione logica il risultato del passo precedente viene adattato al tipo logico di DBMS a disposizione. In genere viene adattato al modello relazionale visto che è, al momento, il modello di DBMS più diffuso. Il prodotto di questa fase è lo schema logico. In questa fase viene inoltre eseguita una ottimizzazione dello schema logico. Lo strumento di ottimizzazione che si è maggiormente diffuso (nel modello relazionale dei DBMS) è la tecnica della normalizzazione.

Infine la fase della progettazione fisica prevede la implementazione dello schema logico risultante dal passo precedente su un determinato DBMS relazionale (quale Oracle, Microsoft SQL Server, ecc.). Il risultato è lo schema fisico.

32 Tecnico di Reti Informatiche, modulo 2

Page 33: Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25 01 200768 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica

Introduzione progettazione basi di dati

Progettazione dei dati.

33 Tecnico di Reti Informatiche, modulo 2