Introduzione ai database
parte seconda
Ernesto Damiani
Database Management Systems
Management System
Utente
o programma applicativo
database
Management
System
database
Commenti
Utente
o programma applicativo
– Dati integrati in un unico sistema: il database
– Indipendenza del formato dei dati dall’ambiente
applicativo - è il Management System ad
accedere ai dati e non i programmi applicativi
– Meno duplicazioni - un’unica memorizzazione
fisica dei dati
– Gli utenti e i programmi accedono ai dati
facilmente, attraverso una tecnica standard
Management
System
Utente
o programma applicativo
database
Cosa sono i database?
• File strutturati che contengono collezioni di
record
• Informazioni ausiliarie e metadati
– Schema - descrizione della struttura del
database. Rende possibile l’indipendenza dei
dati dai programmi
– Indici, report, moduli..
Cosa rappresentano i database?
• Il database costituisce un modello
dell’informazione d’interesse dell’utente
– il livello di dettaglio o granularita’ dipende
dall’applicazione
– il modello è dinamico
– transazioni: rappresentazioni di eventi atomici
che riguardano il database
Transazioni
• Programmi che realizzano attività frequenti
e predefinite, con poche eccezioni, previste
a priori.
• Esempi:
– versamento presso uno presso sportello
bancario
– emissione di certificato anagrafico
– dichiarazione presso l’ufficio di stato civile
– prenotazione aerea
Un po’ di storia
– 1960 - Gestione dei file su disco
• Sviluppo del supporto hardware
– 1970 - Il Modello Relazionale - E.F. Codd
• I dati organizzati in tabelle viste come relazioni tra le righe
• Granularita’ controllata: si specificano le righe da processare
• Svantaggi - carico computazionale. Hardware sufficientemente
potente solo a partire dagli anni ‘80
– 1979 - I Micro DBMS
• dBase II
• Access e Paradox
– Fine anni ‘80 - Architetture Database Client-Server
– Anni ‘90 - DBMS a oggetti
– Oggi - Database Multimediali e Distribuiti
Componenti di un DB
• Quattro componenti principali:
– Dati utente - rappresentati da piu’ tabelle o relazioni
• relazione - una tabella di dati composta da righe e colonne. Le
colonne sono chiavi (o attributi) e le righe sono record.
– Metadati - descrizioni della struttura del DB.
• Schema: definisce i nomi delle tabelle e delle chiavi
• Tabelle di sistema - contengono i nomi delle tabelle utente, # e
nomi delle chiavi, e per ciascuna tabella la chiave primaria
(per cui non sono ammesse ripetizioni)
Componenti di un DB (2)
– Indici - usati per l’accesso rapido ai dati.
– Permettono di esaminare un numero ridotto di righe e non
tutta la tabella
– Gli indici hanno un costo: devono essere aggiornati ad
ogni modifica dei dati
– Metadati applicativi - struttura e formato dei
moduli, interrogazioni e report associati al
database
Esempio
• Schema: Clienti (p.iva, ragione sociale, telefono)
• Tabella (clienti.dbf)
p.iva (primaria)
011034565656
012393939393
012246446464
ragionesociale
Rossi srl
Bianchi sas
Verdi snc
• Indici
piva.ndx:
ragionesociale.ndx:
011034565656 1
012246446464 3
Bianchi sas 2
Rossi srl 1
012393939393 2
Verdi snc 3
telefono
02345678536
038235363
037393838
Esercizio:
• Definire un formato binario per i file .dbf e .ndx
• Scrivere un programma mydb.exe (nel linguaggio che
preferite) che:
– carica in memoria i file in apposite matrici
– risponde a interrogazioni della forma (chiave, valore)
• Esempio di interazione con mydb.exe:
loading database and indices…
Ready>(ragionesociale,”Rossi srl”)
011034565656
Rossi srl
02345678536
Ready>
Domande e risposte
• D. Possiamo rendere mydb.exe parametrico rispetto alla struttura della
tabella?
• R. Si’. Possiamo creare una tabella delle tabelle che contiene i nomi
delle colonne..
• Possiamo aggiungere un ambiente di design?
• R. Si’. Bastera’ scrivere un altro programma (design.exe) che permetta
di specificare nome e numero delle colonne e di inserire I dati. Il
programma design.exe deve anche creare gli indici.
• D. Cosi’ completato, mydb.exe e’ un DBMS?
• R. No. Permette di creare e gestire una sola tabella per database..
Relazioni tra tabelle
• Le relazioni tra tabelle (relationships) non
c’entrano niente con il nome di relazioni
(relations) dato alle tabelle
• Ad esempio, una relazione tra due tabelle A
e B si stabilisce riportando in B la chiave
primaria di A (foreign key)
Nel nostro esempio:
p.iva (primaria)
011034565656
012393939393
012246446464
ragionesociale
Rossi srl
Bianchi sas
Verdi snc
telefono
02345678536
038235363
037393838
p.iva (foreign)
011034565656
011034565656
012393939393
012246446464
n.fattura(primaria)
1
2
3
4
imponibile
5.000.000
25.000.000
250.000
7.000.000
Commenti: le interrogazioni attributo-valore non bastano
piu’. Come esprimere “dammi gli imponibili delle fatture
della ditta Rossi” ? Serve un linguaggio..
Linguaggi per basi di dati
• L’accesso ai dati può avvenire
1. con linguaggi testuali interattivi
2. con comandi (come quelli del linguaggio interattivo)
immersi in un linguaggio ospite (Pascal, C, Cobol, etc.)
3. con comandi (come quelli del linguaggio interattivo)
immersi in un linguaggio ad hoc, con anche altre
funzionalità (p.es. per grafici o stampe strutturate),
anche con l’ausilio di strumenti di sviluppo (p. es. per
la gestione di maschere)
4. con interfacce amichevoli (senza linguaggio testuale)
SQL, un linguaggio interattivo
SELECT Corso, Aula,
Piano
FROM Aule, Corsi
WHERE Nome = Aula
Corso
Reti
Sistemi
Aula
N3
N3
AND Piano="Terra"
Lo studieremo in dettaglio...
Piano
Terra
Terra
SQL immerso in Pascal
(o altro linguaggio ad alto livello)
write('nome della citta''?'); readln(citta);
EXEC SQL DECLARE P CURSOR FOR
SELECT NOME, REDDITO
FROM PERSONE
WHERE CITTA = :citta ;
EXEC SQL OPEN P ;
EXEC SQL FETCH P INTO :nome, :reddito ;
while SQLCODE = 0 do begin
write('nome della persona:', nome, 'aumento?');
readln(aumento);
EXEC SQL UPDATE PERSONE SET REDDITO = REDDITO + :aumento
WHERE CURRENT OF P
EXEC SQL FETCH P INTO :nome, :reddito
end;
EXEC SQL CLOSE CURSOR P
SQL immerso in linguaggio ad hoc
(Oracle PL/SQL)
declare Stip number;
begin
select Stipendio into Stip
from Impiegato
where Matricola = '575488'
for update of Stipendio;
if Stip > 30 then
update Impiegato set Stipendio = Stipendio * 1.1 where
Matricola = '575488';
else
update Impiegato set Stipendio = Stipendio * 1.15 where
Matricola = '575488';
end if;
commit;
exception
when no_data_found then
insert into Errori
values('Non esiste la matricola specificata',sysdate);
end;
Interazione non testuale (in Access)
Una distinzione terminologica
data definition language (DDL) :
per la definizione di schemi (logici, esterni,
fisici) e altre operazioni generali;
data manipulation language (DML) :
per l’interrogazione e l’aggiornamento di
(istanze di) basi di dati.
Management
System
Utente
o programma applicativo
database
Componenti del
Management
System
• Tre sottosistemi
• Progettazione - strumenti per creare tabelle, interrogazioni,
moduli, report. Basato su un linguaggio.
• Run-time - esegue le richieste di creazione ed estrazione dati
espresse attraverso il linguaggio
• Engine - riceve le richieste dal Run Time in termini di tabelle,
righe e colonne e le traduce in comandi al sistema operativo o
all’hardware del computer.
La MS engine gestisce anche l’esecuzione delle transazioni.
Lo schema
• Database Schema - definisce la struttura
delle tabelle, le relazioni tra di loro, i
domini degli attributi.
• Rappresenta tutte le informazioni di
interesse per un dominio applicativo
– dominio - insieme dei valori che un attributo
puo’ assumere
Cosa dobbiamo imparare a fare
• Creare lo schema
• Creare le tabelle
• Definire le relazioni tra tabelle attraverso le
foreign key
• Popolare le tabelle di dati
• Estrarre le informazioni di interesse dalle
tabelle attraverso le interrogazioni.
Altre attivita’ utili
– Definire moduli (form) per aggiornare e
consultare le tabelle
– Definire report - visualizzazioni formattate del
contenuto delle tabelle e/o del risultato delle
interrogazioni
– Scrivere programmi che interrogano il database
Architettura standard (ANSI/SPARC)
a tre livelli per DBMS
utente
utente
Schema
esterno
utente
Schema
esterno
Schema logico
Schema interno
BD
utente
Schema
esterno
utente
Architettura ANSI/SPARC: tipi di
schemi
schema logico: descrizione dell’intera base
di dati nel modello logico “principale” del
DBMS
schema esterno: descrizione di parte della
base di dati in un modello logico (“viste”
parziali, derivate, anche in modelli diversi)
schema fisico: rappresentazione dello
schema logico per mezzo di strutture fisiche
di memorizzazione.
Zoom sul DBMS
database
administrator
programmatore
applicativo
processore
DDL
processore
DML
utente
casuale
utente
finale
applicazione
piano di
esecuzione
query
supporto
esecuzione
dizionario
dati
dati
DBMS
DBMS in un contesto di rete
utenti
utenti
processo
client
middleware
processo
client
rete
database
management
system
data
base
database
server
Progettazione di schemi
“Il database rappresenta il dominio informativo che interessa
a un utente/applicazione”
• Due modi di definire lo schema:
– Top Down development - dal generale allo specifico
• analizzare i bisogni informativi di un’organizzazione (es. Un sistema
contabile completo)
• stabilire come raggiungerli
• definire lo schema del database
• sviluppare le applicazioni che devono interrogarlo o aggiornarlo (es.
fatturazione, gestione clienti, fornitori, magazzino, etc.)
– Bottom Up development - soluzione a uno specifico problema
• creare uno schema per una specifica attivita’ (es. fatturazione)
• sviluppare l’applicazione
Introduzione al
Modello Entity - Relationship
Entity - Relationship Model
• Il modello E-R (Peter Chen - 1976)
e’ il piu’ usato per interpretare,
specificare e documentare i
requisiti di un DB
• Il modello E-R permette di
generare automaticamente lo
schema
Entity - Relationship Model
• Istanza di un’entita’ - oggetto di interesse per l’utente
(e.g., una fattura)
– Classi di entita’ - insiemi di istanze di entita’ dello stesso tipo
– Intuitivamente, una classe di entita’ corrisponde a una tabella,
un’istanza di entita’ a una riga
– Per brevita’, nella progettazione di database spesso chiamiamo
entita’ quello che rigorosamente andrebbe chiamato classe di
entita’
• Attributi- (Proprieta’) - descrivono le caratteristiche di
un’entita’
– tutte le entita’ di una classe hanno le stesse proprieta’
– I valori di un attributo possono essere semplici o composti
Entity - Relationship Model
• Identificatori - attributi che identificano
univocamente un’entita’
– intuitivamente, corrispondono alla chiave primaria
• Relazioni: collegamenti tra entita’
– relazioni binarie: 3 tipi
• 1:1
• 1:N
• N:M
• Cardinalita’ massima - massimo numero di istanze
di un’entita’ che possono trovarsi su un lato della
relazione
Entity - Relationship Model
• Sintassi:
–
–
–
–
–
–
Classi di entita’:rettangoli
relazioni: rombi
massima cardinalita’ all’interno del rombo
nome entita’ all’interno del rettangolo
nome della relazione accanto al rombo
attributi: ellissi connesse all’entita’ o alla relazione a
cui si riferiscono
• non esagerare con gli attributi per preservare la leggibilita’
– cardinalita’ minima - ovale sulla linea che rappresenta
una relazione
Esempio
Entity - Relationship Model.
• Concetti avanzati (la prossima volta..)
– Relazioni ricorsive - relazioni tra istanze della
stessa classe
– Entita’ deboli - esistenza dipende da quella di
un’altra entita’
• sintassi: rettangolo con angoli smussati
– Sottotipi - insiemi complessi di attributi
Scarica

Basi Dati, lezione 2