Quinta lezione - Server users.dimi.uniud.it

Cenni sui DATABASE
Cos'e' un database



Un database puo' essere definito come una
collezione strutturata di record (dati)
I dati sono memorizzati su un computer in
modo opportuno e possono essere recuperati
attraverso delle interrogazioni (queries)
L'insieme dei software per gestire e
organizzare un database si chiama ”database
management system” (DBMS)
Schemi




Lo scopo di un database e' collezionare
informazione
Bisogna dare una struttura al database per
poter catalogare e poi recuperare
l'informazione
La struttura di un particolare database (o parte
di esso) viene descritta da uno ”schema”.
Lo schema descrive gli oggetti che
compongono il database e le loro relazioni
Modelli relazionali


Esistono diversi modi di modellare un database

modelli gerarchici

modelli di rete
Il modello piu' usato al momento e' il modello
relazionale

Le informazioni sono organizzate in tabelle

Le relazioni fra tabelle sono organizzate in tabelle

Ogni colonna rappresenta un tipo di informazione

L'insieme delle informazioni per un singolo record e'
rappresentato da una riga
Alcuni database system

Il modello relazionale fu proposto da E. F. Codd
nel 1970

Oracle (1980)

DB2 (1980)

dBase (1980)

Mysql (1990)

PostgreSQL (1990)
Database Relazionali

Relazioni


Attributi


Sono i ”nomi” delle colonne delle tabelle
Domini


sono le tabelle (array bidimensionali)
per ogni attributo deve essere specificato un
domino, cioe' l'insieme dei valori che puo' assumere
Record (o tupla)

sono le singole righe: ogni cella della tupla contiene
un valore in base al dominio dell'attributo
Caratteristiche

una base di dati deve servire più utenti

gli accessi devono essere concorrenti



i dati devono essere disponibili in ogni
momento
integrità dei dati: i dati non devono essere
corrotto da un uso inappropirato della base di
dati
sicurezza dei dati: l'accesso deve essere
garantito solo agli utenti abilitato e nelle forme
consentite
Obiettivo

L'obiettivo di un DBMS è quello di garantire
l'indipendenza dei dati, ossia il fatto che
diverse applicazioni possono accedere agli
stessi dati senza dover conoscere
l'implementazione fisica della base di dati. Si
utilizza una struttura a 3 livelli:



schema logico: i dati sono descritti da un modello
schema fisico (o interno): fornisce le
implementazioni per le strutture del livello logico
schema esterno: definisce le viste parziali per
diverse classi di utenti
Relazione

Una relazione

nome

un insieme finito di tuple e di domini associati

il numero di attributi viene detto ”grado”

esempi:



R(Attributo1:Dominio1,Attributo2:Dominio2,...)
R(Attributo1,Attributo2,...)
Studente(nome, cognome, matricola)
Istanza


Un'istanza è un insieme finito di tuple per una
relazione
Il numero di tuple è dettà ”cardinalità”

esempio:
{
( (nome, ”Mario”), (cognome, ”Rossi”), (matricola,
12345) ),
( (nome, ”Lucia”), (cognome, ”Verdi”), (matricola,
54321) )
}
Visione tabellare
nome
Mario
Lucia
STUDENTE
cognome matricola
Rossi
12345
Verdi
54321
Concetto relazionale
relazione
attributo
grado
tupla
cardinalità
Equivalente informale
tabella
colonna
numero di colonne
riga
numero di righe
Chiave


Per poter garantire l'unicità delle tuple si deve
dichiarare un attributo (o più attributi) come
chiave

servono per fare ”collegamenti” fra tabelle

permettono ricerche più veloci
se un attributo è dichiarato come chiave per
una relazione, non può esistere un'istanza che
abbia due tuple uguali per quell'attributo

ad es. per la relazione STUDENTE si può usare o
la chiave ”matricola” o la chiave ”nome,cognome”
Un esempio
nome
Mario
Lucia
STUDENTE
cognome matricola
Rossi
12345
Verdi
54321
CORSO
codice
titolo
123 informatica
345
biologia
333
inglese
IS CRIZ IONE
codice
matricola
123
12345
345
12345
333
12345
345
54321
333
54321
Join


Quando si vuole avere l'informazione completa
delle tabelle si fà un'operazione di
concatenazione (join)
Le tre tabelle dell'esempio diventano:
nome
Mario
Mario
Mario
Lucia
Lucia

RISULTATO
cognome matricola
Rossi
12345
Rossi
12345
Rossi
12345
Verdi
54321
Verdi
54321
codice
123
345
333
345
333
titolo
informatica
biologia
inglese
biologia
inglese
Problema: i dati sono ripetuti più volte, quindi
aggiornare questo tipo di tabelle è difficile
Algebra relazionale

Una volta che uno schema e' stato definito e
istanziato, si possono fare delle interrogazioni
sulla BD


Operazioni insiemistiche
unione, intersezione, differenza, prodotto cartesiano
Operatori relazionali
ridenominazione, selezione, proiezione,
concatenazione (join), divisione
Gli operatori insiemistici




Unione: produce una relazione che contiene
una delle relazioni o entrambe (R1 U R2)
Intersezione: produce una relazione che
contiene le tuple che appartengono a entrambe
le relazioni (R1 ∩ R2)
Differenza: produce una relazione che
contiene le tuple che appartengono alla prima
relazione ma non alla seconda (R1 \ R2)
Prodotto cartesiano: produce una relazione
formata da tutte le tuple che è possibile
ottenere unendo le tuple (R1 × R2)
Operatori relazionali




Ridenominazione: rinomina uno o piu' attributi di
una relazione ( σoldname → newname(R) )
Selezione: consente di selezionare le tuple di una
relazione che soddisfano una determinata
condizione (combinazioni booleane di confronti)
( σcondizione(R) )
Proiezione: produce una relazione con i soli
attributi presenti nell'operazione ( πattr1,attr2(R) )
Divisione: produce una relazione le cui tuple, se
estese con una qualunque tupla della seconda
relazione, producono una tupla della prima
relazione ( R1 Ö R2 )
Contatenazione naturale

L’operatore di concatenazione naturale (natural
join) produce una relazione che le cui tuple
sono ottenute “componendo” le tuple di r1 e r2
che hanno gli stessi valori sugli attributi comuni
( R1 ᛞ R2)



la concatenazione è associativa e commutativa;
Se R1 e R2 non hanno attributi comuni, allora
R1ᛞR2 = R1 × R2 (altrimenti R1ᛞR2 = { } )
Se R1 e R2 sono compatibili (hanno gli stessi
attributi), allora R1ᛞR2 = R1 ∩ R2
Vincoli sulle relazioni

Esistono 4 tipi di vincoli sulle relazioni fra due
tabelle R1 e R2 (cioe' sugli attributi comuni)




uno a uno: ad ogni chiave di R1 corrisponde una e
una sola chiave di R2
uno a molti: per ogni chiave di R1 possono
corrispondere molte chiavi di R2 ma per ogni chiave
di R2 vi e' una sola chiave di R1
molti a uno: per ogni chiave di R2 possono
corrispondere molte chiavi di R1 ma per ogni chiave
di R1 vi e' una sola chiave di R2
molti a molti: per ogni chiave di R1 possono
corrispondere molte chiavi di R2
SQL


Per fare le interrogazioni non si usa l'algebra
relazionale ma un linguaggio piu' ”evoluto”:
l'SQL (Structured Query Language)
La query e' divisa in 6 clausole:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Clausole



SELECT: equivale alla proiezione (e consente
la ridenominazione)
FROM: quali tabelle sono interessate nella
query ed eventualmente in che modo vengono
concatenate (join)
WHERE: una o piu' condizioni che ogni tupla
del risultato deve soddisfare (equivale alla
selezione)
Clausole (2)



GROUP BY: serve per raggruppare i risultati in
base a qualche attributo
HAVING: serve per specificare delle condizioni
sul risultato di GROUP BY
ORDER BY: serve per ordinare il risultato
Esempi
SELECT *
FROM books
WHERE price > 100
ORDER BY title;
SELECT count(*)
FROM authors
WHERE surname = ”Codd”
SELECT books.title, count(*) AS Authors
FROM books NATURAL JOIN book_authors
GROUP BY books.title;
Fogli di calcolo
Cos'e' un foglio di calcolo



E' una tabella che permette di fare operazioni
complesse sui dati
Diversamente dal database lo scopo e' la
manipolazione e la correlazione dei dati nella
singola tabella
Un database puo' essere ”simulato” da un
foglio di calcolo con piu' tabelle ma
l'implementazione e' inefficiente
Programmi

EXCEL (commerciale)

WORKS (commerciale)

Openoffice CALC (libero)

GoogleCALC (gratuito)
Celle




Ogni tabella di un foglio di calcolo e' formata da
celle
Le celle hanno due coordinate

ascissa: lettere dell'alfabeto (da sinistra a destra)

ordinata: numeri (dall'alto in basso)
In ogni cella si possono inserire: valori e
formule, ...
Ogni cella puo' avere uno o piu' bordi, un tipo di
carattere, colori, ...
Potenzialita'

Un foglio di calcolo permette:


eseguire operazioni sulle singole celle (somme,
sottrazioni, moltiplicazioni, ...)
eseguire operazioni su gruppi di celle (totali, medie,
max, min, ...)

ordinare valori

espressioni condizionate

creare grafici sulla base dei dati
OpenOffice CALC
Manipolazione dei dati

Utilizzando la finestra video si inseriscono nelle
celle valori:

Numerici (interi, frazionari, percentuali, valute)

Date

Strighe di caratteri


Formule - possono contenere operandi numerici e/o
le coordinate delle celle (indicate simbolicamente,
ad esempio B1, F9, A25, AA50, ...).
Le formule vengono ricalcolate ogni volta che
una delle celle interessate viene modificata.
Funzionalità

Attraverso menù e tasti funzione è possibile:

inserire, cancellare, spostare righe/colonne

ridefinire l’ampiezza di una colonna

fissare righe e colonne di intestazione

contornare celle con bordi

dividere il video in più parti (finestre), che si
possono far scorrere una sull’altra per avvicinare
righe o colonne non contigue

salvare il foglio di lavoro su disco

...
Riferimenti


I riferimenti sono dati attraverso l’indicazione di
riga e di colonna (es. A1, B3+B4)
L’indirizzamento delle caselle può essere
assoluto o relativo.


Assoluto: ogni casella viene individuata attraverso
la sua posizione nella matrice, con la riga (numero)
e la colonna (lettera o numero) che la
contraddistinguono.
Relativo: una casella può anche essere individuata
attraverso la sua posizione relativa rispetto alla
casella attiva (su cui si è posizionati).
Riferimento assoluto

Un riferimento (parzialmente) assoluto si ha
utilizzando il carattere speciale ”$” nella
costruzione di un riferimento:



$C$5
Colonna e riga sono fissati
$C5
Solo la colonna è fissata
C$5
Solo la riga è fissata
Riferimento relativo



Il riferimento relativo viene calcolato solo
quando si copiano le formule.
Ad esempio se nella casella D4 c'è scritto
”=B4”, quindi uno spostamento relativo di 2,1
caselle (D-B=2, 4-3=1), e si copia la formula in
D5, la formula nella nuova cella sarà ”=B5”
perché ci si è di un sola riga (5-4) ma la
colonna è rimasta invariata
Se in D4 c'era scritto ”=$B$4”, D5 sarebbe
stato uguale a D4
Formule




Sono espressioni che iniziano con il carattere =
Formule aritmetiche (a valore numerico) o
logiche (vero o falso):

= 34*5.6 + B2

Vero ---> 1

Falso ---> 0
Gli operatori aritmetici disponibili sono: +, -, *, /,
^
Gli operatori logici sono: =, <, >, <>, <=, >=
Funzioni


Si può selezionare una funzione tra quelle
presentate.
Funzioni statistiche, finanziarie, matematiche,
trigonometriche, logiche, etc.



SOMMA(D2;D8;D10) (somma serie)
----->D2+D8+D10
SOMMA(D2:D8) (somma intervallo)
----->D2+D3+...+D8
MEDIA(D1:D10)
-----> media di 10 caselle
Formato delle celle

Con Formato Celle si possono definire:


formati per date, orari, numeri.
l’allineamento nelle caselle: centrato, a sinistra, a
destra.

tipi e stili dei caratteri.

bordi

colori
Grafici

Selezionando un'area del foglio di calcolo si
può dire al programma di generare un grafico




Di solito bisogna specificare l'asse X, l'asse Y,
eventualmente righe e colonne per le etichette, tipo
del grafico, ...
Nel grafico di solito è presente una legenda per
capire il significato dei diversi colori
I grafici sono altamente personalizzabili
Se si modifica una delle celle il grafico viene
modificato di conseguenza
Grafico
1100
1000
900
800
700
600
500
lunghezza
400
# di CG
300
200
100
0
AN001
AN002
AN003
Tipi di grafico

Linee

Linee 3D

Aree

Aree 3D

Colonne

Barre 3D

Barre

Colonne 3D

Torta

Torta 3D

Diagramma XY

Rete

Diagramma quotazioni