Volume = numero delle occorrenze dell` Entita` o Asso

Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005




A.A. 2005

Appunti su data base
di:


Anna Maria Carminelli Gregori
Parte 2
Progettazione logica: Modello E-R
“
“
Fasi
1a Sez. Schema logico E-R & Relazionale
Progettazione applicazioni Web (cenni)
Cenni su: OOBD
Progettazione fisica & Schema Fisico
Basi di Dati Distribuite e Architetture possibili
2a Sez. Agganci col Web ed Applicazioni Web:
esempi.
Oracle: caratteristiche essenziali
Cenni su: Modelli Reticol-Gerarch.
Appendice

1
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
La Parte2 e’ rivolta alla progettazione del d.b. E’gia’ stato
detto che le Fasi di progettazione di una Base di dati
comprendenti progetto concettuale, progetto logico,
progetto fisico, devono partire da un progetto concettuale
ben fatto. Quindi occorrere presentare il progetto
concettuale per primo, poi quello logico e per ultimo quello
fisico.
Il tema della Progettazione logica riprende dalla
normalizzazione che permette controllo e verifica della
progettazione concettuale e logica di una Base di dati,
mettendo in luce possibili errori. Ecco un esempio (Atzeni):
si suppone che l’ analisi effettuata abbia evidenziato l’
Entita’ Prodotto (fornito da una ditta) considerando come
suoi attributi Codice, Nome_Prodotto, Nome_Fornitore,
Indirizzo, Partita_Iva dove gli ultimi 2 attributi sono
correlati al Nome_Fornitore, mentre tutti dipendono dal
Prodotto ossia dal suo Codice. Dopo quel che si e’ detto
sulle FD dalla chiave si vede subito che non e’ adeguata la
rappresentazione seguente:
Prodotto
Codice (*)
Nome_Prodotto
Indirizzo
Partita_Iva
Nome_Fornitore
(*) Qui e’ seguita la rappresentazione grafica tipica del
Modello Entity-Relationship: per es. Codice indica l’
attributo candidato chiave e per questo e’ collegato a
Prodotto con una linea che termina con un circoletto nero,
gli altri sono attributi semplici e dovrebbero essere collegati
a Prodotto con una linea che termina con un circoletto
bianco che per semplicita’ e’ omesso.
2
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Anche se lo schema rappresentato risulta inadeguato in quanto si
evidenziano le seguenti dipendenze funzionali:
CodiceNome_Prodotto,Indirizzo, Partita_Iva, Nome_Fornitore
Partita_IvaNome_Fornitore, Indirizzo
e dovra’ essere modificato (qui di seguito) occorre tener conto
della situazione che rappresenta ossia: il Codice e’ chiave primaria
 identifica quindi anche il Nome_Fornitore.
L’ esigenza di avere le 3 relations seguenti deriva dunque
dalla violazione di … quale NF ?
PR(Codice, Nome_Prodotto)
FORN(Partita_Iva, Nome_Fornitore, Indirizzo)
PR_FORN(Codice, Partita_Iva)
Nello schema originario Partita_Iva dipende da Codice, ma non
viceversa !
Nel Modello Entity-Relationship questa situazione
puo’ essere cosi’ rappresentata:
Codice
Partita_Iva
Prodotto
Nome_Prodotto
(1,1)
Fornitura
(0,N)
Indirizzo
Fornitore
Nome_Fornitore
(Domande:
perche’ associazione 1:1 tra Prodotto e Fornitura ?
“
“
0:N “ Fornitore e Fornitura ?
quale potra’ essere la chiave nella relation relativa a Fornitura ?
Domanda: va bene la chiave in PR_FORN ? Perche’ ?)
In questa rappresentazione si evidenzia subito la semantica
delle 3 relations delle quali 2 rappresentano Entita’ ed una
rappresenta l’ Inter-relazione (=associazione) tra le 2 Entita’
3
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Le Entita’ sono rappresentate da rettangoli;
le Inter-relazioni sono rappresentate da rombi;
i valori numerici che appaiono rappresentano il tipo di
associazione ossia 1 a 1; 1 a molti; molti a molti (cfr.+oltre).
D’ altronde e’gia’ stato detto che le Fasi di progettazione di
una Base di dati comprendenti progetto concettuale,
progetto logico, progetto fisico devono partire da un
progetto concettuale ben fatto.
Come si ottiene? Tramite la Progettazione Concettuale che
usa un modello concettuale dei dati in grado di permettere
la descrizione completa dei dati col loro significato
informativo ad un livello di astrazione alto.
Il modello concettuale dei dati che permette la descrizione
dei dati col loro significato informativo ad un livello di
astrazione alto e’ il Modello Entity - Relationship (Chen,
ACM “Transactions on Data Base System”, vol.1, pag.936) i cui costrutti fondamentali sono forniti di seguito (2
pagine da Date e Atzeni & …).
4
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
5
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
6
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Recentemente nel contesto dell’ Ingegneria del Software ha
acquistato importanza il modello UML acronimo di Unified
Modelling Language. Si tratta di un formalismo che
permette la modellazione completa di Applicazioni
Software specialmente di tipo O.O. E’ “ricco” essendo
dotato di 9 tipi di diagrammi per la rappresentazione degli
aspetti (come classi, moduli, attività, loro sequenzialità …)
di un’ applicazione sotto prospettive o “viste” diverse.
Tra i tipi di diagrammi, il diagramma delle classi e delle
relazioni che le legano è anche talvolta preso in prestito per
la rappresentazione di una base di dati, anche se secondo
Atzeni & … il modello E-R “costituisce uno strumento
appositamente pensato per il progetto concettuale dei dati
ed è funzionale a questo uso”.
Nel modello UML invece i diagrammi delle classi di un’
applicazione sono pensati per un uso diverso.
La conclusione è che il modello UML può diventare utile
quando si vuole integrare: descrizione concettuale dei dati
con progetto delle classi di un’ applicazione.
Entity-Relationship Model: distinzione e importanza Ruoli
Attributi rappresentati nel modo gia’ indicato.
Segue l’ esempio di un Diagramma Entity-Relationship per
un d.b. che risponda a ricerche su spostamenti di persone.
7
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Esempio:
PNome
Codice
Persona
Residenza
Nascita
Attivita’
Citta’
CNome
Diagramma Entity-Relationship per un d.b. che risponda a
ricerche su spostamenti di persone.
Nelle Relazioni che legano tra loro Entita’, ai verbi si
preferiscono Nomi in modo da evitare le forme attive e
passive.
La Persona x ha la Residenza nella Citta’ y
Es. Residenza
La Citta’ y e’ il luogo di Residenza di x
Altro Esempio:
numero
Giocatore
Nome Posizione
App
arte
ne.
Squadra
Coi
nvol
g.
Partita
Nome Citta’ Allenator. Casalingo Data
Entita’ e Relazioni possono avere attributi !
La realizzazione? Sempre col Modello Relazionale la
semantica delle Relazioni e’ evidenziata dalla grafica !
La cardinalita’ delle Entita’, delle Inter-relazioni e quella
degli attributi seguono le stesse regole ed esprimono quante
volte 1 occorrenza di una delle Entita’ coinvolte puo’
essere associata a occorrenze delle altre Entita’.
8
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Nell’ esempio qui sotto:
un Impiegato puo’ avere da 1 a 5 Incarichi,
un Incarico puo’ o non essere assegnato o essere assegnato
ad un numero di Impiegati  50 (*).
Impiegato
(1, 5)
Assegn
amento
(0, 50)
Incarico
0  Coinvolgimento opzionale
Cardinalita’ MInima {
1  Coinvolgimento obbligatorio
1 Associazione 1 a 1 parziale se MI.=0
Cardinalita’ massima{
NAssociazione 1 a N “
“ “ ““
Associazioni N a M (molti a molti) tra 2 Entita’ si hanno in casi
come:
Turista
(1, N)
(0, N)
Prenot
azione
Viaggio
dove si nota: N per entrambe le Entita’ coinvolte (M  N) ,
un Viaggio puo’ non essere assegnato, un Turista viaggia
per definizione !
(*) Se l’Impiegato potesse avere un solo Incarico e l’
Incarico potesse essere assegnato:
 al piu’ ad 1 Impiegato  Associazione 1 a 1;
 ad N Impiegati Associazione 1 a N.
9
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Le Generalizzazioni si indicano col nome di Gerarchie
I.S.A.
Codice Fiscale
Es. Man IS A Person.
Person
Man
Cognome e Nome
Eta’
Woman
Rappresentano sempre legami logici tra Entita’, ma di tipo
gerarchico nel senso che un’ Entita’ (a livello superiore) e’
detta Padre e le altre (a livello inferiore) figlie o
Specializzaioni: in questo caso l’ Entita’ Padre e’ detta
proprio Generalizzazione.
Proprieta’:
 ogni occorrenza di un’ Entita’ figlia e’ anche occorrenza
dell’ Entita’ Padre; (+1 Man = +1 Person);
 ogni proprieta’ di un’ Entita’ Padre e’ anche proprieta’
delle figlie (es. attributi !)
Una Generalizzazione puo’ essere:
 totale  freccia piena (es. Person)
 parziale  “
bianca (es. Entita’ Padre = Veicoli ed
Entita’ Figli = Auto e Biciclette  queste due non
esauriscono tutti i veicoli !)
 parziale e sovrapposta  freccia bianca (es. Entita’ Padre
= Persona, Entita’ Figli = Studente e Lavoratore 
esistono Studenti-Lavoratori !)
Un Entita’ puo’ essere coinvolta in +Generalizzazioni;
Possono esserci Generalizzazioni su +livelli  gerarchie di
Generalizzazioni.
10
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Esempi in appunti da Atzeni (2pagine Esempi & Diagramma
Costrutti E-R).
11
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
12
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Le Gerarchie evidenziate nel modello E-R mettono in luce
un aspetto non ottimale del modello relazionale ossia la
“piattezza” delle relations. (E’ questa una critica degli oppositori di
Codd. In realta’ un accenno di gerarchia c’e’ nel Relational Model, per es.
si pensi alle relation Master Supplier e Part ed alla relation Slave SP).
Per superare gli aspetti non ottimali del suo modello Codd
nel 1979 ne presenta una “estensione” col nome di RM/T
(Relational Model Tasmania). Questa sua “revisione” si
inserisce nella ricerca degli anni `80-90 che presta
maggiore attenzione all’ analisi dei dati, al ‘design’, e,
tramite il Modello Entity-Relationship, alla modellazione
ed allo sviluppo pianificato del sistema informativo
utilizzando anche gli strumenti software di Information
Engineering. (Tipico esempio di tali ‘tools’ e’ il CASE
Computer Assisted Software Engineering che permette la
rappresentazione dei vari E-R schemi o diagrammi).
Nel Relational Model Tasmania RM/T si sente l’ influsso di
Chen e del Modello Entity-Relationship. Sono introdotte
gerarchie con la distinzione tra 2 tipi di relations:
E-Relations  kernel Relations = tipi Entita’ in senso
esteso anche alle Inter-relazioni = Relations
unarie contenenti superchiavi o surrogati
chiave (identificatori unici) di tutti gli
elementi presenti nel DBMS)
P-Relations  tipi Proprieta’ = Relazioni di grado >1 , ma
qualunque con tuple contenenti le
superchiavi definite e gli attributi standard.
Cio’ fornisce maggiore integrita’ e gerarchia al modello
risultante che non ha esemplari in commercio, ma le cui
idee possono trasferirsi ed essere utili nel progettare i data
base relazionali.
13
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Supplier & Part D.B. in RM/T con 2 Suppliers, 3parti
e 5 forniture.
E-Relations:
S
P
SP
------------
---------------------
S%
-------------------|
P%
-------------
----------------------
alfa
beta
gamma
delta
epsilon
SP% |
------------------|
zeta
eta
theta
iota
kappa
, , , …  = superchiavi assegnate e controllate
automaticamente dal Sistema.
P-Relations:
Sn
St
Sc
--------------------------------------------------------
S%
S#
Sname
--------------------------------------------------------
alfa S1
beta S2
Smith
Jones
----------------------------------------
S%
Status
----------------------------------------
alfa
beta
20
10
----------------------------------------------
S% City
----------------------------------------------
alfa London
beta Paris
Analogamente per P e per SP (SP%, S%, P%, Qty)
I surrogati chiave sono in effetti le chiavi primarie e le chiavi
esterne: al Sistema sono necessari e sufficienti per identificare tutti
gli oggetti presenti
… Superindici ?
… estensioni dei TID a livello concettuale ?
D’ altronde anche il Modello Entity-Relationship ha qualche
insufficenza: per es. non e’ quasi mai sufficiente a rappresentare
tutti gli aspetti di un’ Applicazione.
14
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Occorrono Dizionario (GLOSSARIO) dei dati e vincoli di
integrita’ … come appare da Atzeni & …)
15
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Esempio di progetto di D.B.
Atzeni & … ripresentano il ciclo di vita del software (simile a
quello presentato in db2005p1), però preceduto da uno Studio di
Fattibilità per definire costi e priorità delle possibili
componenti del sistema informativo. Poi per fissare alcune
regole da seguire nell’ analisi dei requisiti ed esigenze raccolte
fanno un esempio relativo al progetto di un d.b. per una Societa’
di formazione. Le specifiche sui dati (dedotte da: interviste,
regolamenti interni, documentazioni /applicazioni … buon
senso!) sono in linguaggio naturale e contengono anche info. sul
carico dei dati. Esempio di Requisiti
Si vuole realizzare un d.b. per una Societa’ di formazione
che eroga corsi di cui si vogliono rappresentare i dati dei
Partecipanti e dei Docenti. Per i Partecipanti ( 5000)
identificati da un codice si vuole memorizzare il codice fiscale,
il cognome, l’eta’, il sesso, il luogo di nascita, il nome della
Societa’ per cui stanno lavorando, i Posti dove hanno gia’
lavorato, insieme al periodo, indirizzo e #tel., i Corsi che
hanno frequentato (#corsi  200), il Giudizio finale e il
periodo. Rappresentiamo anche i Seminari che stanno
attualmente frequentando e, per ogni giorno, i Luoghi e le
ore dove sono tenute le lezioni. I Corsi hanno un codice, un
titolo, e possono avere varie edizioni con un certo numero
di Partecipanti. Se gli studenti sono liberi professionisti si
vuole conoscere l’area di interesse e se lo possiedono il titolo. Di
quelli che lavorano per un ente dello Stato si vuole conoscere il
loro livello e posizione ricoperta. Per gli insegnanti ( 300)
rappresentiamo il nome, l’eta’, il posto dove sono nati, il nome del
Corso che insegnano, quelli che hanno gia’ insegnato e quelli che
possono insegnare. Rappresentiamo anche i loro recapiti
telefonici. I Docenti possono essere dipendenti dalla Societa’ o
collaboratori esterni.
16
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Ambiguita’ e Imprecisioni:
Posto: usato col significato di citta’ e di Societa’;
Partecipanti = studenti ?
Docenti = insegnanti ?
Corsi = Seminari ?
titolo = ? Meglio titolo professionale
Giudizio =? Meglio Valutazione in decimi
Altre inesattezze ?!
17
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
5 Regole per ottenere specifiche sui dati precise e non
ambigue facendo riferimento alle specifiche generiche del
progetto di D.B. per una Societa’ di formazione (da Atzeni
…):
1) Evitare termini generici ...(per es. Giudizio!);
2) “
frasi contorte (per es. SOSTITUIRE la
frase “quelli che lavorano per un ente dello Stato”
CON “dipendenti statali”);
3) Individuare sinonimi/omonimi e sostituirli con un
appropriato sostantivo (per es. docente/insegnante
USARE docente, posto/luogo USARE societa’,
oppure aula secondo il contesto …);
4) Nessuna ambiguita’ nel riferimento tra termini
(come accade nelle 2 prime frasi dell’ esempio);
5) Costruire un Glossario dei termini normalizzati
(cfr. +avanti).
Con le modifiche indicate da queste regole si possono
riscrivere le specifiche raggruppandole in gruppi di
frasi relative agli stessi concetti.
18
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Si ottengono le specifiche strutturate indicate di seguito (1 pagina
da Atzeni & …).
19
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Si raccolgono poi le specifiche sulle operazioni ed il
loro volume (informazioni determinanti per il
Progetto Logico successivo).
Specifiche sulle operazioni e loro volume relative all’
esempio:
1) inserimento di un nuovo partecipante (40 volte al
giorno);
2) assegnazione di un nuovo partecipante ad una
edizione di corso (50 volte al giorno);
3) inserimento di un nuovo docente (2 volte al
giorno);
4) assegnazione di un nuovo docente ad una edizione
di corso (15 volte al giorno);
5) stampa informazioni sulle edizioni di un corso con
orario lezioni, # partecipanti (10 volte al giorno);
6) stampa totale (tutti i corsi con informazioni sui
docenti che possono insegnarli: 20 volte al
giorno… NON tutti i partecipanti la richiedono!);
7) per ogni docente trovare tutti i partecipanti ai
corsi in cui insegna (5 volte alla settimana);
8) Statistiche sui partecipanti
Quindi avvio alla costruzione dello schema
concettuale …
… ma come si fa ad ipotizzare questi valori?...
tenendo presenti i volumi dei dati (5000 partecipanti/120giorni che è
un periodo di iscrizione equo; 200 corsi con mediamente 2 ediz./anno
fanno 400 ediz. che rapportate ai 300 docenti darebbero 1.3 assegnazioni
in un arco di tempo di X (?) giorni con possibilità di scambi tra i docenti…
 Regole aziendali
20
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Trasformazione delle specifiche sui dati in un
progetto concettuale con costrutti E-R .
Partendo dal presupposto fondamnetale che non ci sono
rappresentazioni univoche ossia:
1 Realta’ – N Rappresentazioni,
la trasformazione comporta:
1. Definizione di criteri base di rappresentazione;
2. Scelta di una strategia.
1. Criteri base sono:
CONCETTO con proprieta’ significative  Entita’
altrimenti  Attributo;
“
che associa +Entita’  Associazione;
CONCETTI che siano particolarita’ di un altro 
 Gerarchie.
2. Strategie sono: top - down, bottom-up, inside-out, mista.
La strategia top - down ha il vantaggio principale dell’
astrazione. Produce lo schema concettuale per raffinamenti
successivi a partire da uno schema iniziale completo (lo
schema scheletro) con pochi concetti astratti.
Nell’ esempio potrebbe essere:
Partecipan
te
Parte
cipaz.
Corso
Doce
nza
Docente
I raffinamenti avvengono considerando le specifiche e le
primitive di trasformazione.
130
21
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Strategie di trasformazione e primitive di trasformazione: 1 pagina
da Atzeni &.….
22
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Della strategia Top-Down sono state indicate le
primitive di trasformazione usate nel procedimento.
Delle altre 2 strategie Bottom-Up e Inside-Out si
dira’ solo cio’ che e’ usato nel tipo di strategia piu’
comune: la strategia mista.
Bottom-Up: delle specifiche iniziali sono considerate
quelle che descrivono un frammento elementare (componente) delle realta’
considerata (caso piu’ semplice: uno dei tipi Entita’, per es. Lezione). Le componenti
vengono rappresentate da schemi concettuali elementari poi fusi in schemi
concettuali piu’ complessi fino allo schema concettuale finale con un’ integrazione
totale delle componenti.
Fase di decomposizione
Specifiche
Componente1
…….……..
Componente2
ComponenteN
Rappresentazioni elementari
Componente11
…
Componente1n
Componente21
…….…………
Component.Nn
Fase di fusione (integrazione)
Uso di Primitive di Trasformazione (con Generazione di Entita’, Associazioni,
Generalizzazioni) e Integrazione degli schemi delle varie componenti.
Schema Finale
Vantaggi Strategia Bottom-Up: gli schemi delle varie componenti
sono effettuabili da progettisti diversi  lavoro collaborativo 
Svantaggi: l’integrazione puo’ avere grosse difficolta’.
23
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Strategia Inside-Out:
e’ un caso particolare della Strategia Bottom-Up.
Si individuano inizialmente alcuni concetti importanti, si
procede poi trovando i concetti vicini agli iniziali e così via
andando a trovare quelli meno vicini fino a quelli lontani
navigando tra le specifiche.
Si procede insomma a macchia d’ olio.
Es.
Afferenz
Impiegato
(0,1)
((
(1,N
)
Dipartimento
(0,N)
Partec.
(1,N)
Progetto
Vantaggi  No integrazioni difficili;
Svantaggi  “avanti piano”!  NO Astrazione.
Strategia mista:
ha l’ obiettivo di combinare i vantaggi delle Strategie TopDown e Bottom-Up.
Si suddividono le specifiche in componenti separate, ma si
definisce contemporaneamente lo Schema Scheletro
(rappresentazione immediata tratta dalle specifiche) contenente i
concetti principali dell’ applicazione in una visione unitaria,
astratta della realta’ di interesse favorendo l’ integrazione degli
schemi separati. Es. Schema Scheletro Soc. di Formazione:
Partecipante
Partec
ipaz.
Corso
Doce
nza
Docente
24
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Dallo Schema Scheletro per la Societa’ di Formazione si
puo’ proseguire per raffinamenti successivi dei concetti
rappresentati, con Strategie Bottom-Up e/o Inside-Out.
E’ questo il tipico modo di procedere della strategia mista
che ha come vantaggi: flessibilita’ ed usabilita’ anche
quando e’ necessario iniziare la progettazione senza la
conoscenza dei dettagli o con conoscenza non omogenea
della realta’ di interesse.
Secondo Atzeni una metodologia e’ la seguente:
1) Analisi dei requisiti  NO ambiguita’,
SI omogeneizzazione,
SI Glossario dei termini.
2) Passo Base  Schema Scheletro con i concetti piu’
rilevanti
3) (*) Passo di decomposizione: decomporre i requisiti (le
Specifiche sui dati) in base ai concetti presenti nello
Schema Scheletro
4) passo iterativo per ogni sottoschema cosi’ ottenuto:
_ raffinare i concetti presenti con le Specifiche inerenti,
_ aggiungere nuovi concetti per rappresentare
Specifiche non ancora rappresentate
5) (*) Passo di Integrazione: riferendosi allo Schema
Scheletro integrare i sottoschemi in uno Schema
Generale
6) Analisi di qualita’: dello Schema Generale ottenuto
verificare: Correttezza, Completezza, Leggibilita’,
Minimalita’ (= se le specifiche sono rappresentate una
volta soltanto)
(*) da effettuare se:
passo 3: e’ opportuno o necessario;
passo 5: sono presenti diversi sottoschemi.
25
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
L’ esempio ! e il relativo Schema E-R
Riferendosi allo schema scheletro si analizzano
separatamente (passo 3) le Specifiche relative ai
Partecipanti, Corsi, Docenti e si procede a macchia d’ olio.
Passo iterativo 4) Per Partecipanti e Docenti 
si tratta semplicemente di considerare i loro tipi e di
collegarli con una Associazione apposita. Per esempio: il
Partecipante che e’ Dipendente Privato e attualmente lavora
in una Societa’ pur avendo lavorato in un’ altra nel passato
… come viene trattato ? cfr. da Atzeni & … schema 2o pag.
seguente.
Passo iterativo 4) per Docenti 
si tratta semplicemente di considerare la generalizzazione
rappresentata nello schema 3o (pag. seguente).
Entrambi gli schemi si pongono nello schema scheletro
immediatamente.
Passo iterativo 4) per i Corsi:
si devono considerare 2 concetti: Corso astratto ed Edizione
del Corso che inizia alla data x e termina alla data y. Il
legame tra i 2 concetti puo’ essere una associazione
Tipologia mentre l’ Edizione del Corso, che si compone di
z ore di lezione, puo’ essere legata alla Lezione da una
associazione Composizione. Si ottiene il primo schema di
pag. seguente.
Integrando i 3 (sotto)schemi cosi’ ottenuti e corredandoli
sempre con cardinalita’ e attributi si ottiene lo schema
finale su cui si possono effettuare le analisi di qualita’.
26
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
27
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
28
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Ottenuto lo Schema E-R si passa alla Progettazione
Logica il cui obbiettivo e’ lo Schema Logico
ottimale.
Come si passa dallo Schema E-R allo Schema
Logico ?
NON si fa una semplice traduzione !
Come esempi:
1. Entita’ di E-R  Relation in R.D.B.M.S,
 Record di un certo tipo in
D.B.M.S Reticolari e/o Gerarchici,
ma le Generalizzazioni ??
2. La Progettazione logica deve tener conto delle
prestazioni delle applicazioni con il fine della loro
EFFICIENZA

 Ristrutturazione dello Schema E-R con
ottimizzazione dell’ efficienza;
 Traduzione verso lo Schema Logico includendo
ulteriori eventuali ottimizzazioni basate sulle
caratteristiche del Modello usato. (Per es. col
modello
relazionale
si
puo’
usare
la
Normalizzazione
per verificare se ci sono
dipendenza o multidipendenze “nascoste”)

Il prodotto finale della Progettazione Logica e’: lo
Schema Logico, i vincoli di integrita’ definiti su di
esso, ogni possibile documentazione aggiuntiva.
29
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Ottimizzazione dell’ efficienza  Prestazioni delle
applicazioni e loro valutazione: difficolta’ dovute anche alle
caratteristiche fisiche del Sistema di calcolo ed a quelle del
DBMS usato.
Con riferimento a quanto detto in DB2005P1 in
merito alla Complessita’, si valutano come indicatori
delle prestazioni i seguenti parametri:
 Costo di un’ operazione = # di occorrenze medio di
Entita’ e Relationship da visitare per effettuare l’
operazione,
 Occupazione di memoria = # di byte necessario per
memorizzaare i dati descritti nello schema.
La definizione di questi parametri (Costo e Memoria)
richiede oltre alle informazioni dello Schema le
seguenti altre informazioni:
a) Volume dei dati: _ n.o medio di E e R dello Schema,
_ dimensione di ogni loro attributo.
b) Caratteristiche delle operazioni:
_ tipo (interattivo/batch),
_ frequenza (n.o medio di esecuzioni
in un certo tempo T),
_ E e R coinvolte (“accedute”!).
Sia a) che b) possono essere descritti tramite tabelline di 3
tipi diversi qui indicate col loro schema relazionale:
 Tavola_dei _volumi(Concetto, Tipo, Volume)
 Tavola_delle_Operazioni(Operazione, Tipo, Frequenza)
 Tavola_degli_accessi(Concetto, Costrutto, Accessi, Tipo)
Pag. seg. +in dettaglio
30
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Tavola_dei _volumi(Concetto, Tipo, Volume)
dove Concetto = Nome di Entita’ o Associa- Relazione,
Tipo = E / R,
Volume = numero delle occorrenze dell’ Entita’ o Asso-ciazione calcolato (per l’Assoc.) in base alle sue
cardinalita’ (1:1 - 0:1 - 1:N o N:M) come appare
dagli esempi (dove sono omessi i vari attributi ):
(0,1)
Impiegato
(1,N)
Affer
enza
(1,1)
Dipartim
ento
(1,N)
Com
posiz
Sede
N.o composizioni = N.odipartimenti, data la cardin. (1,1)
N.o afferenze = N.o impiegati - 5%
in quanto una percentuale di Impiegati non afferisce ad alcun
dipartimento, data la cardin. (0,1)
Invece le associazioni molti a molti come la seguente:
Impiegato (0,N)
Parte
cipaz
(1,N) Progetto
hanno un numero che dipende dal N.o medio delle Entita’
coinvolte. Se un Impiegato Partecipa in media a 3 Progetti:
N.o Partecipazioni = N.o Impiegati * 3
(Media (Impiegati/progetti) = N.o Partecipazioni/ N.o Progetti  12 )
Extension della Tavola_dei _volumi: |Concetto
Tipo Volume
|
|---------------------------------------------------------|
|Sede
E
|Dipartimen. E
|Impiegato E
|Progetto
E
|Composizio. R
|Afferenza
R
|Partecipaz. R
10
|
80
|
2000 |
500
|
80
|
2000-100 |
6000
|
31
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Tavola_delle_Operazioni(Operazione, Tipo, Frequenza)
dove: Operazione = Interrogazione/Modifica di Entita’
(accedute! per es. Trovare i dati di un impiegato e del
Dipartimento ove lavora);
Tipo = Operazione Interattiva/Batch;
Frequenza = # volte che l’ Operazione deve essere
eseguita.
Tavola_degli_accessi(Concetto, Costrutto, Accessi, Tipo)
dove: Concetto = Nome di Entita’ o di Relazione;
Costrutto = E/R;
Accessi = # accessi alla b.d. necessario per l’
esecuzione di ogni operazione;
Tipo = Lettura/Scrittura.
Quest’ ultima tavola si ottiene dalle precedenti e si ha una
Tavola_degli_accessi per ogni operazione  serve nella
stima (approssimata!) del Costo (cfr. Parte1 & pag.30)
dell’ Operazione..
Utilizzo delle Tavole viste nella Ristrutturazione dello
Schema E-R.
Fasi di ristrutturazione: sono 4 indicate con appunti da
Atzeni &…a pagina seguente.
La valutazione del N.o di Accessi serve nelle prime 3 Fasi,
ma in particolare le Tavole viste intervengono nella Fase 1
ossia nell’ Analisi delle Ridondanze per esaminare la
minimalita’ delle E/R, attributi usati nello Schema E-R.
In uno Schema E-R come Ridondanza e’ intesa la
presenza di un dato derivabile da altri.
Si parte con la prima fase di ristrutturazione analizzando
le…
32
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
… Forme di ridondanza.
…
33
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Forme di ridondanza:
1. attributi derivabili da altri. Es.
Importo_netto
“
lordo
IVA
Uno degli attributi e’ deducibile dagli altri (sommando o
sottraendo)
2. attributi derivabili da altri di altre Entita’ con
aggregazioni. Es.
Fattura
Importo_Totale
Acquisti
(1,N)
Prezzo
Composizi
one
(1,N)
Prodotto
L’ Importo_Totale si puo’ derivare attraverso la Relazione
Composizione sommando i prezzi dei Prodotti componenti.
3. attributi derivabili da operazioni di conteggio di
occorrenze di Entita’ e/o Relazioni (variante es.
precedente e N. abitanti Citta’ dello Schema Lucido seg.)
4. attributi derivabili dalla composizione di altre
associazioni in presenza di cicli. Es.
(0,N)
(1,N)
Docenza
(0,N)
Studente
(1,N)
Frequ
enza
(1,1)
Corso
(1,1)
Insegn
amento
Prof
.
Si nota subito che qui c’e’ ridondanza ! L’ associazione
Docenza puo’ essere derivata da Frequenza e
Insegnamento. Se l’ associazione Docenza fosse sostituita
da un’ altra (per es. Tesi) NON derivabile da Frequenza e
Insegnamento, il ciclo non genererebbe ridondanze !
34
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Vantaggi &
Svantaggi delle ridondanze:
Il dato derivato e’ calcolato
con un numero minore di
accessi
Maggior occcupazione di
memoria e maggior numero
di operazioni per tenere il
dato aggiornato.
ESEMPIO
Persona
Numero_Abitanti
(1,1)
Residen
za
(1,N)
Citta’
In questo schema il Numero_Abitanti di Citta’ e’
ridondante perche’ il suo valore si puo’ valutare contando le
occorenze di Residenza. Si suppone poi che sia definita un’
applicazione anagrafica con le operazioni seguenti:
Oper.1 inserisci una nuova Persona con la relativa citta’ di
Residenza;
Oper. 2 stampa tutti i dati di una citta’ compreso il
Numero_Abitanti.
I dati di carico sono:
Tavola_dei _volumi(Concetto, Tipo, Volume)
Citta’
E
200
Persona
E 1000000
Residenza R 1000000
Tavola_delle_Operazioni(Operazione, Tipo, Frequenza)
Oper.1
I
500/di’
Oper.2
I
2/di’
a) con dato ridon.
Si valutano gli indicatori di prestazione
b) senza “ “
35
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Caso a) Il Numero_Abitanti di una Citta’ richiede 4 byte: il
Numero_Abitanti per le 200 Citta’ richiedono
quindi 800 byte ossia meno di 1KB.
Per Oper. 1 si ha:
Tavola_degli_accessi(Concetto,Costrutto,Accessi, Tipo) Commenti
Persona
E
1
Scr. Per inseirire 1
Residenza
R
1
Scr.
Citta’
E
1
Lett.
Citta’
E
1
Scr.
Persona
Per inseirire 1
Persona_Citta
Per cercare la
Citta’
per increment.
il N.o abitanti
Per Oper. 2 si ha:
Tavola_degli_accessi(Concetto,Costrutto,Accessi, Tipo) Commenti
Citta’
E
1
Lett. Per accedere
alla Citta’ da
stampare
Totale Accessi al di’ per Oper. 1 (Oper. 2 trascurabile) 
 500 in Lettura
3 * 500 in Scrittura = 1500
Se si pone 1 Accesso in Scrittura = 2 Accessi in Lettura (#)
risulta: Totale Accessi = 3500/di’
Caso b) Il Numero_Abitanti di una Citta’ non e’ salvato
risparmio di circa 1KB di memoria.
Per Oper. 1 si ha:
Tavola_degli_accessi(Concetto,Costrutto,Accessi, Tipo) Commenti
Persona
E
1
Scr. Per inseirire 1
Residenza
R
1
Scr.
Persona
Per inseirire 1
Persona_Citta
Non e’ necessario altro non dovendo aggiornare il dato derivato !!
36
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Per Oper. 2 si ha:
Tavola_degli_accessi(Concetto,Costrutto,Accessi, Tipo) Commenti
Citta’
E
1
Lett. Per accedere
Residenza
R
5000 Lett.
(*)
alla Citta’ da
stampare
Per calcolare
N.o abit. Citta
(*) 5000 valore della Media = Vol.Residenza/ Vol.Citta’
calcolato dai valori in Tavola_dei _volumi (=1000000/200)
Totale Accessi al di’ per Oper. 1
2 * 500 = 1000 in Scrittura = 2000 in Lettura (per (#))
Totale Accessi al di’ per Oper. 2
5001 in Lettura * 2/di’  10000 in Lettura
Totale Accessi = 12000/di’
Quindi 8500 in piu’ che nel caso a) contro il risparmio di
solo 1KB di memoria.
CONCLUSIONI:
in questo ESEMPIO conviene tenere il dato ridondante !
Se l’ Oper.2 fosse stata meno frequente (per es.
2 volte /settimana) in Totale su 6 giorni si sarebbero avuti:
3500*6=21000 accessi settimanali con il dato ridondante e
2000*6 + 5001*2  22000 senza di quello.
DEDUZIONE LOGICA:
Importanza della Frequenza Operativa e Importanza dei
Volumi di Dati !!
Eliminate (o no) le ridondanze si passa alla seconda fase di
ristrutturazione con l’ Eliminazione delle Gerarchie =
Generalizzazioni
37
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
(Una rappresentazione diretta di questo costrutto non e’
prevista nei Modelli logici Relazionale e Reticolare; nel
Gerarchico si puo’ realizzare con proliferazione di chiavi
composte.)
E’ bene trasformare le Generalizzazioni in altri costrutti
traducibili in Inter-relazioni (o Set per il Modello Reticolare).
Esistono varie alternative possibili: per evidenziarle si parte
con una Schema E-R generico con una Generalizzazione
(qui ipotizzata totale) ed alcune Inter-relazioni tra Entita’.
.
A02
A01 .
R1
E0
E3
(x,y)
E1
A11
E2
R2
E4
A21
Figura 7.10 di Basi di Dati
Le ristrutturazioni presentate nel lucido seguente estratto
sempre da Atzeni &… sono:
a) Accorpamento delle Figlie della Generalizzazione del
Padre E0 (cfr. Figura 7.11 a) dove e’ stato aggiunto l’
attributo ATIPO per distinguere se l’ occorrenza di E0
apparteneva a E1 o a E2.
b) Accorpamento del Padre della Generalizzazione delle
Figlie E1 e E2 (cfr. Figura 7.11 b): qui l’ entita’ E0 e’
stata eliminata ed i suoi attributi ereditati dalle Figlie. Le
Inter-relazioni R11 e R12 sono le “restrizioni” di R1 su E1 e
E2 rispettivamente.
38
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
c) Sostituzione della Generalizzazione che (come in Figura
7.11 c) e’ trasformata in due Inter-relazioni RG1 e RG2 di
tipo 1:1. Nessun trasferimento di attributi, cardinalita’
inalterate, ma nello Schema che si ottiene occorrono
vincoli per verificare che:
per E1 , E2 occorrenza  E0 occorrenza e
per E0 occorrenza  una occorrenza in E1 o E2
ed anche che a RG1 non partecipino occorrenze di E2 (e
analogamente per R G2).
Altre trasformazioni sono possibili: un esempio e’ in Figura
7.12 nella seconda pagina degli appunti tratti da
Atzeni&…Convenienza ristrutturazioni appunti successivi.
39
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
40
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
41
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Terza Fase: Partizionamenti & Accorpamenti di concetti
 si possono realizzare Decomposizioni (Partizionamenti)
verticali e orizzontali.
Es. Decomposizione Verticale
Livello
Stipendio
Data_Nascita
Ritenute
Indirizzo
Impiegato
Codice
Cognome
Da interpretare come insegnamenti …
Cognome
Indirizzo Codice
Dati
Anagrafici
Lavoro
Data_Nascita
Livello Stipendio
Codice
Dati Impiegato
(1,1)
(1,1)
Dati
Lavoro
Lavoro
Ritenute
Decomposizione Orizzontale si ha invece sulle occorrenze,
per esempio quando si distinguono all’ interno dell’
Impiegato Venditori e Analisti, entrambi con gli stessi
attributi di Impiegato, ma usati da operazioni differenti.
Anche qui la migliore alternativa NON si puo’ dedurre
contando gli accessi, perche’ anche se con le
decomposizioni questi aumentano, le Entita’ generate
hanno meno attributi e con un solo accesso al disco si
possono recuperare molte occorrenze. Altro tipo di
decomposizione e’ l’ Eliminazione di Attributi multivalore
(es. Telefono) che diventano Entita’ legate da Relaz. (1,N)
Accorpamenti: si hanno Eliminando Entita’ legate da
Relazioni (1,1) o (0,1) che diventano Attributi, anche se per
Relazioni (0,1) occorre controllare se ci sono valori NULL!
In molti casi e’ possibile rinviare i Partizionamenti & Accorpamenti
alla Progettazione fisica in specie con DBMS che permettono Cluster
di relazioni da specificare a livello fisico per Ottimizzare gli accessi !!
Lavoro dell’ Ottimizzatore !
42
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Quarta Fase: Scelta degli Identificatori Principali
E’ necessaria in tutti i modelli di dati per determinare le
chiavi primarie.
Criteri di scelta tra le chiavi candidate:
1) identificatore mai NULL; 2) identificatore atomico;
3) “
interno;
4) “
usato da
molte operazioni  un indice creato su di esso
rendera’ efficienti molte operazioni. COMUNQUE
tener presente le superchiavi ed i concetti di RM/T Model !!
(perche’ se tra le candidate nessuna soddisfa i criteri 1-4 si puo’
introdurre un nuovo attributo con funzione di codice-identificatore.
Per gli identificatori non scelti si potranno definire indici secondari anche
in sede di programmazione fisica.)
Al completamento delle 4 fasi della Ristrutturazione 
 Traduzione verso il modello del DBMS disponibile
 se DBMS = RDBMS allora Traduz. verso il Relational model
che prevede:
1. ogni entita’  Relation (con le specifiche indicate piu’ oltre)
2. “ Inter-relazione  Relation ?
La risposta alla domanda dipende dal tipo di Inter-relazione ed e’:
SI se si tratta di un’ associazione N:M (specie se a chiave composta);
NI “ “ “
“ “ “
1:N;
Ni “ “ “
“ “ “
0:1 ( pure in questo caso
puo’ far comodo una relation di
collegamento purche’ a piccola cardinalita’ per evitare tanti Null .
NI quando la cardinalita’minima di un’ Inter-relazione
puo’ essere 0: in questo caso e’ preferibile avere una relation di
collegamento perche’ altrimenti la relation che implementa l’
Entita’ “opzionale” puo’ avere molti valori NULL sugli attributi
di collegamento con l’ altra Entita’ (es. Impiegati-Dipartimenti).
Att. ne ai VINCOLI DI INTEGRITA’ ! E RICORDARE:
il DB con Supplier, Part, SP ed i 2 possibili Schemi Logici.
43
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Specifiche sulle relazioni che implementano Entita’:
gli attributi utilizzati possono essere ribattezzati.
Es. Avendo: Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
si puo’ ridefinire Partecipazione nel modo seguente:
Partecipazione(Impiegato, Progetto, DataInizio)
dove Impiegato e’ definito su un Dominio costituito da
Matricola, Progetto su un Dominio costituito da Codici di
Progetti. I vincoli di Integrita’ restano inalterati.
Perche’ un nuovo nome ? Qui solo per comprensibilita’
piu’ immediata, ma nello schema seguente (Relazione
ricorsiva) e’ inevitabile usarli.
(0,N)
Quantita’
(0,N)
Composi
zione
Prodotto
Composto
Componente
Codice Costo Nome
Traduzione:
Prodotto (Codice, Nome, Costo)
Composizione (Composto, Componente, Quantita’)
dove Composto e Componente contengono Codici di
Prodotti che in Composizione hanno ruolo di composto e di
componente. (In SQL per nuovi nomi si possono usare
alias).
Inter-Relazioni che associano Entita’ con Identificatore
esterno possono essere rappresentate dalle Relation che
implementano le Entita’. Esempio pag. seguente.
44
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Se si vuole ottenere uno schema con un numero minimo di
tabelle occorre accorpare quanto si puo’ anche se cosi’
facendo si incorre nella possibilita’ di introdurre valori
NULL. Nello Schema Logico qui sotto l’ accorpamento si
attua con le “estensioni” introducendo tra gli attributi di una
tabella quelli che identificano l’ altra tabella associata (l’
identificatore esterno Codice).
Quindi seguono lucidi con la ristrutturazione dello schema
E_R per la Societa’ di Formazione e il relativo schema
logico ottenuto: RIFLETTERE SULLE MODIFICHE !!
45
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Esempio: Operazioni ….
46
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
….
e schema E-R da ristrutturare (appunti 1 pag. da Atzeni &…)
47
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Esempio: Dati di carico (appunti 1 pag. da Atzeni &…)
Segue: Progetto E-R ristrutturato e Schema logico relazionale
1 pag. da Atzeni &…
48
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
49
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Basi di dati a oggetti (cenni)
Tra le attuali tendenza dei DBMS e’ interessante quella che
accentua l’ aspetto dell’ astrazione dei tipi di dati ossia
considera le modalita’ del paradigma Object Oriented.
Negli anni ‘80 Ian Brasnley (Information Builder …Focus)
indicava gli RDBMS come tappa transitoria verso gli
OOMS per la gestione di dati di tipo complesso.
Il paradigma O.O. si basa sulla definizione dei tipi di dati
astratti e delle classi di Oggetti.
Come si definisce un Tipo di dato astratto ? per esempio il
tipo pila? La definizione del tipo pila si chiarisce con
l’indicazione dell’ algoritmo LIFO di gestione tipico della
pila 
 per un Tipo di dato astratto e’ importante definire:
 la struttura dati (proprietà statiche);
 le proprietà dinamiche (gli algoritmi usati per la relativa
gestione) ossia gli operatori associati al tipo detti metodi.
Quindi  il Tipo astratto e’ definito sia in senso statico
con la sua struttura che dinamico con i suoi metodi. Al
Tipo astratto è associata una classe di Oggetti ciascuno con
il proprio Valore.
Un OODBMS ha funzionalita’ e caratteristiche di:
 un sistema di programmazione O.O.
 “ “
“ gestione di basi di dati.
OODBMS risulta +complesso dei DBMS.
Perche’ ? Come esempio si puo’ pensare ad un OORDBMS
 il Tid = OID puo’ riferirsi al singolo oggetto, ma anche
alla classe che deve essere identificata come classe di
appartenenza dell’ oggetto. La classe individua anche i
metodi relativi all’ oggetto.
50
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
OORDBMS deve controllare che l’ oggetto sia usato solo
con i metodi definiti nella sua classe di appartenenza e che
la sua mobilita’ sia relativa alle sole classi che lo possono
condividere  Sicurezza maggiore
In realta’ nella definizione O.O. di un DBMS ci sono state 2
impostazioni diverse che pero’ hanno prodotto strumenti
non tanto diversi.
La prima e’ partita dalle caratteristiche dei linguaggi di
programmazione O.O. per arrivare a produrre OODBMS.
Questi, come O2 della Societa’ Tecnology, seguono le
specifiche e le proprieta’ definite come obbligatorie ed
opzionali dal consorzio Object Data Base Management
Group gia’ negli anni ’80. I relativi linguaggi di definizione
ed interrogazione contengono costrutti come interface,
attribute, select, … desunti sia da linguaggi O.O. sia da
SQL.
La seconda impostazione e’ partita dagli RDBMS per
arrivare a ORDBMS ossia Sistemi Relazionali ad Oggetti
come SQL:1999. Questo e’ simile alle versioni precedenti
di SQL con estensioni alla creazione di tipi, di riferimenti
anche gerarchici, di insiemi, … e poi con la frase select
opportunamente potenziata.
Questa linea e’ seguita anche da Oracle con la sua
estensione a Oggetti. In Oracle esistono anche Strumenti
per gestire Oggetti che possono essere distribuiti. Si tratta
di CORBA ed EJB componenti implementate in Java ed
eseguibili entro il d.b. Oracle. CORBA e’ l’ acronimo di
Common Object Request Broker Architecture ossia
Architettura per la gestione di richieste a Oggetti condivisi.
51
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
L’ obiettivo e’ garantire l’accesso ad ogni Oggetto da parte
di Client remoti che devono conoscerne solo il nome e l’
interfaccia.
Un altro esempio di OODBMS e’ GemStone presentato
negli anni ‘80 ad un convegno dell’Associazione Italiana
Calcolo Automatico (AICA).
52
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Progettazione in ambiente Web (cenni)
La progettazione di applicazioni & siti dinamici Web è
presentata da Atzeni & …in modo generale ripartendo dal
ciclo di vita del software. L’ accento è posto sull’
interazione con gli utenti che sono suddivisi in classi così
come coloro che operano sull’ Applicazione Web.
Si noti che qui “Applicazione Web” ha il significato della
Web Application (ossia gestione di informazioni estratte
da d.b. tramite l’ uso del Web) di cui si parlerà nella
seconda sessione (progettazione fisica). Mentre qui il punto
di vista è la rappresentazione delle informazioni del d.b. e
dei loro legami, nella seconda sessione l’ accento è sull’
architettura necessaria per utilizzarle e presentarle al meglio
(cfr. pag. 85-86)
Per la progettazione logica di applicazioni & siti Web
occorre identificare i tipi di utenti che possono essere
interni alla Società che richiede l’ applicazione (ossia gli
impiegati) ed esterni come i clienti di detta Società che a
loro volta possono essere casuali o registrati.
Vengono definite classi di impiegati con permessi diversi di
scrittura sugli oggetti dell’ applicazione e classi di clienti
che avranno viste diverse del sito in progettazione.
(Evidente l’ analogia con le view del d.b.)
Anche l’ analisi dei requisiti dell’ applicazione è
influenzata dall’ ambiente Web per cui le specifche sui dati
si arricchiscono di quei concetti che siano d’ aiuto alla loro
pubblicazione in pagine Web. La progettazione prosegue
con la progettazione concettuale dei dati utili all’
applicazione Web estendendo ed integrando la
progettazione concettuale classica usata nei d.b.
53
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Vale la seguente espressione:
Applicazione Web = Dati + Ipertesto + Presentazione
I Dati rappresentano il contenuto dell’ Applicazione Web
strutturato in Entità e Relazioni;
l’ Ipertesto deve effettuare la composizione delle Entità e
Relazioni e permetterne l’ accesso e la navigazione;
la Presentazione visualizza le Entità e Relazioni secondo
lo stile scelto e le personalizzazioni preferite.
Anche per la “progettazione di siti Web” è bene basarsi su
una modellazione concettuale, ma i modelli concettuali non
abbondano e i Modelli di ipertesto non sono adeguati.
Uno strumento più incisivo é il Web Modeling Language
che usa il Modello E_R per il contenuto e primitive di
visualizzazione per l’ Ipertesto (Web Modeling Language
– WebML - 1998). Inoltre è supportato da WebRatio®,
(http://www.webratio.com)
uno
strumento
CASE
(Computer Aided Software Engineering) che aiuta a
sviluppare applicazioni per il Web, passando dall’analisi
dei requisiti direttamente alla generazione automatica del
codice.
La “progettazione di applicazioni Web” consiste nel
progettare sia un documento ipertestuale relativo al sito da
presentare in Internet (organizzandone la struttura in pagine
consultabili a partire da una home_page), sia la base di dati
che deve fornire le informazioni richieste.
Occorre aver presente: la struttura del contenuto, la sua
composizione ed il tipo di navigazione necessaria con la
personalizzazione voluta e la presentazione.
54
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
L’ ipertesto realizza l’ interfaccia dell’ applicazione che
utilizza il d.b. con le informazioni tipiche integrate con
concetti utili per la pubblicazione in Internet.
Le tipiche domande per la progettazione dell’ applicazione
sono simili alle domande per la progettazione dei D.B.
ossia:
 Quali sono gli oggetti informativi da pubblicare e le
proprietà che li caratterizzano?
 Quale correlazione esiste tra tali oggetti ?
Lo schema concettuale dell’ applicazione Web deve
contenere oltre alle:
Entità e Relazioni Tipiche del relativo D.B. anche:
“
“ “
che permettano l’ Accesso alle precedenti,
“
“ “
per effettuare Connessioni (navigazione)
“
“ “
per Collegare l’ utente alle Entità e
Relazioni relative alla sua Vista.
Lo Schema concettuale é così divisibile in 4 sottoschemi
ciascuno contenente i concetti che servono a rappresentare
le Entità e Relazioni Tipiche, a permetterne l’ Accesso, le
Connessioni, le Personalizzazioni.
Se si considera il solito d.b. Supplier-Part (con le Table S,
P, SP), la pubblicazione in Internet del Catalogo delle
Parti, richiederà uno Schema Scheletro formato da Parti
(P) e Notizie(N) collegate tra loro da una Relazione
Riferimento che avrà la funzione di Sottoschema di
Connessione. Il Sottoschema di accesso potrà essere
formato da Notizie e Espressione (E) collegate da una
Relazione Stile. Il Sottoschema Applicativo conterrà le
Entità e Relazioni Tipiche ossia Supplier (S) collegata a P
da SP (Parti fornite), le Viste dei Cliente sono in Offerta.
55
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Tra i Sottoschemi di Personalizzazione, uno potrà riferirsi a
Classi di Clienti collegate a Parti da una Relazione Offerta.
Notizie
Riferi
Parti
ment
o.
Stile
Espressione
Offer
ta
Clienti
SP
Supplier
In definitiva, la realizzazione dell’ applicazione Web
richiede una base di dati su cui appoggiarsi (back-end),
“integrata” con le informazioni necessarie per la relativa
composizione e pubblicazione delle pagine Web.
Per il d.b. si possono riscontrare casi diversi con:
_ creazione ex-novo del d.b.
_ uso di d.b. replicati se i dati esistono in d.b. locali e deve
esserne creata una copia per l’ applicazione o copie
periodiche per gli aggiornamenti
_ accesso diretto ai d.b. centrali con opportune interfacce.
La costruzione delle pagine Web passa per la progettazione
di un ipermedia/ipertesto relativo al sito dell’ applicazione e
puo’ essere simile a quella del d.b. relativo allo stesso sito.
La differenza è che il documento ipertestuale é di natura
gerarchica e spesso unidirezionale. Dalla home_page del
sito si deve passare alle pagine delle sue componenti e
delle sottocomponenti … con tutti i rispettivi attributi.
Quindi occorre un modello concettuale per la sua
progettazione diverso da E_R che non è gerarchico. Però
mentre il modello E_R per la progettazione concettuale del d.b. è
ormai uno standard, per la progettazione concettuale degli
ipertesti non c’è uno standard.
56
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Gli obiettivi di un modello di ipertesto si possono
sintetizzare nei due seguenti.
E’ richiesta:
sia la Modellazione ad alto livello del front-end (client) di
una applicazione Web dinamica e delle interazioni con la
logica e i dati del back-end,
sia l’ utilizzo di una notazione visuale semplice ma formale
con generazione (automatica ?!) di template di pagine
dinamiche e di interrogazioni per l’accesso e la
manipolazione dei dati.
Per la modellazione dell’ ipertesto le Domande tipiche
diventano:
 Come fa l’utente a usare il contenuto pubblicato
tramite il sito?
 Quali sono le pagine nell’ipertesto, che l’utente può
usare per accedere ai contenuti?
 Come devono essere divise le informazioni per pagina?
 In che modo i nodi dell’ipertesto sono collegati tra
loro?
Per rispondere a queste domande il Sottoschema di accesso
e quello di Personalizzazione (già indicati) diventano
fondamentali, mentre, a valle, le Primitive del modello di
Ipertesto sono:
 la Vista del Sito considerata in modo gerarchico ossia
suddivisa in Aree (sottoaree),
 Pagine contenenti le
 Unità di contenuto (Unit) collegabili con insiemi di
 Link che connettono Unit e/o Pagine.
57
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Una Unit in WebML è l’elemento atomico per la
pubblicazione dell’informazione e corrisponde ad una
“vista” definita su di un insieme di oggetti.
Questi possono essere: tutte le istanze di un’entità sorgente
(tutti i fornitori) o le istanze di una entità che soddisfano a
una condizione di scelta detta selettore (i fornitori in
London). Ogni Unit può avere parametri di input e
output, per esempio quelli di input possono essere richiesti
dal selettore della Unit, mentre quelli di output possono
essere il risultato di qualche calcolo.
Le Unit sono collegate dai link. Esistono i link contestuali
e non contestuali. Questi ultimi non trasportano
informazioni, ma connettono pagine. I primi permettono le
connessioni orientate tra due Unit (sorgente e destinazione),
presentandosi per es. come bottoni “submit”, e mentre
consentono all’utente di navigare tra nodi diversi
dell’ipertesto, trasportano anche informazione di contesto
tramite l’ uso di parametri. Come effetto collaterale
possono attivare computazioni.
Esistono anche link automatici che passano il contesto alla
unit di destinazione (target) immediatamente dopo la
visualizzazione della source unit, senza la necessità di un
intevento dell’utente.
WebML definisce vari tipi di Unit come:
le entry Unit per l’inserimento di dati;
le data Unit per la pubblicazione di un singolo oggetto;
le Multidata Unit per la pubblicazione di un insieme di
oggetti;
le Index Unit per la pubblicazione di un elenco di oggetti
tra cui sceglirene uno …
58
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Importanti sono anche la Set Unit e la Get Unit che
permettono rispettivamente di memorizzare nella sessione
di navigazione dell’utente il valore di un parametro globale
per es. la lingua dell’utente) e di ricuperarlo al bisogno.
(Per esempio il ricupero del parametro globale ‘lingua
dell’utente’ sarà necessario nelle pagine della siteview,
senza doverlo trasportare con i link.)
Una pagina è un contenitore di una o più Unit mostrate
all’utente contemporaneamente: tra le pagine è importante
la home_page che viene mostrata come prima all’ utente.
Ogni vista del sito deve contenere una “Home Page”.
E’ evidente che si deve individuare la corrispondenza tra i
dati del d.b. del sito e la struttura logica del documento
ipertestuale. Procedendo in parallelo nel progetto del
documento e del d.b. la corrispondenza logica tra le entita’
presenti nel d.b. e nel documento non dovrebbe porre
problemi essendo riconoscibili le Entita’ presenti cui si
possono associare Unit e/o pagine di presentazione.
La deduzione è che avendo un progetto del sito consistente
col progetto E_R del relativo d.b. da gestire, l’ integrazione
sara’ piu’ facile.
Una volta specificato l’ ipertesto a livello concettuale, per
esempio con WebMail, resta il problema della sua
costruzione: quale meccanismo usare? L’ ipertesto può
essere realizzato usando per esempio la tecnica piu’
elementare ossia la costruzione di un programma che
funzioni da CGI (Common Gateway Interface) arricchendolo
con opportune procedure (script) e/o ricorrendo ai sistemi di
sviluppo (per es. in Java JSP) e ad altre tecniche analoghe
di cui si vedranno alcuni esempi nelle applicazioni Web
delle Sez. 2.
59
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
E la Grafica ? Con la Realizzazione & Personalizzazione si
pone anche il problema della rappresentazione grafica: linee
guida per lo stile grafico sono sempre chiarezza ed
eleganza.
Mai mescolare troppi motivi o colori che finiscono per
disperdere l’ attenzione.
… comunque le regole di presentazione seguono come
sempre il buon senso. Segue un esempio.
Considerata una pagina sul display ed un suo schizzo
abbozzato, occorre:
 suddividere la griglia di pagina sul display definendo le
dimensioni delle parti (in Pixel ?) in modo che il
formato sia quello dello schizzo;
 evidenziare il Titolo, il logo, i menu con margini e
bordi ben definiti;
 scegliere colori non dissonanti e stile di caratteri
univoco;
e poi come per il d.b. era necessario un prototipo, anche in
questo caso è bene fare “Mock-ups” ossia una
rappresentazione di esempio per alcune pagine tipiche
dell’applicazione, per es. per la Home-Page.
Segue un esempio di un Mock-up tratto da Internet.
Comunque per maggiori informazioni e dettagli consultare
il testo di Atzeni & ….
60
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Stile grafico – esempi
Posizionamento dei Contenuti
Progettazione di dati e applicazioni per il Web
S. Ceri, P. Fraternali, A. Bongio, M. Brambilla, S. Comai, M. Matera
Copyright © 2003 - The McGraw-Hill Companies, srl
Contenuto per concessione del Politecnico di Milano
61
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
2a Sez.
Progettazione fisica & Schema Fisico
Basi di Dati Distribuite e Architetture possibili
Agganci col Web ed Applicazioni Web: esempi.
Oracle: caratteristiche essenziali
Cenni su: Modelli Reticol-Gerarch.
62
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
A questo punto si può introdurre l’ organizzazione fisica degli
archivi dipendente dalla relativa “distribuzione” per dare una
bozza di
progetto fisico chiarendo subito che una sua
impostazione precisa richiede la conoscenza dello specifico
sistema di gestione utilizzato. Si noti:
1. che non si sta parlando di DBMS con architettura
Standard (centralizzato), ma di sistema di gestione in
generale, nel senso che occorre porsi nella nuova
prospettiva distribuita qui di seguito tratteggiata;
2. che in tale prospettiva l’ operazione di join dell’ Algebra
relazionale puo’ risultare piu’ pesante rispetto alla
situazione standard.
Si indicano come DBS ossia Data Base System i sistemi
comprendenti oltre ai d.b. e DBMS anche altre applicazioni
(per es. realizzate in Java o in altri linguaggi) per una
gestione personalizzata delle informazioni che “migliori”
la gestione amichevole propria dei DBMS e dei loro
strumenti e/o “meccanismi”. Con l’ utilizzo delle reti di
elaboratori, molti di questi “meccanismi” o componenti tipiche
dei DBMS, da prodotti interni diventano esterni, disponibili
come servizi da usare in rete e interessanti anche per effettuare la
progettazione fisica dei d.b. E’ quindi opportuno conoscere
almeno a grandi linee il funzionamento dei relativi DBS.
Ancora: con l’ utilizzo delle reti cambiano le Architetture di
sistemi dedicati alla gestione dei dati, dei DBS, che si
possono considerare attualmente anche da un altro punto di
vista ossia in base al grado di decentralizzazione dei DB
gestiti. Si evidenziano almeno 3 categorie di DBS:
centralizzato, Client-Server, Distribuito. I DB considerati
finora con le caratteristiche evidenziate erano di tipo
centralizzato.
63
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Si passa adesso ad una nuova prospettiva distribuendo le
funzioni dei DBS su sistemi diversi indicati come Server e
Client che nel contesto d.b.sono: D.B. Client
e
D.B.Server.
D.B. Client = Sistema dedicato all’ interazione utenteapplicazione con una composizione del tipo: query language,
graphics, 4GL, strumenti di dialogo, logica dell’ applicazione …
Il D.B. Client e’ collegabile al D.B. Server (un’ interfaccia
A.P.I.=Application Program Interface può essere un semplice
esempio di collegamento)
D.B.Server = Sistema dedicato alla gestione dei dati.
Composizione del D.B. Server:
 Gestore delle interrogazioni & Ottimizzatore 
decide la strategia di accesso_dati,
 Gestore delle transazioni & Controllore della
concorrenza  coordina gli accessi,
 Controllore della affidabilita’ di funzionamento (per es.
in presenza di guasti per garantire il completamento delle Transazioni),
 Gestore dei metodi di accesso ai dati  sceglie un
metodo di accesso ai dati per trasferirli da/a C.M.,
 Buffer-Manager  gestisce i trasferimenti dei blocchi
(pagine) del disco,
 Gestore della Memoria Secondaria secondo la sua
organizzazione.
Queste sono le componenti del D.B. Server piu’ interessanti
per la progettazione fisica. Si dovrebbe tener conto del loro
funzionamento per definire in modo ottimale i tipi di
strutture dati usabili ed i relativi parametri come le
dimensioni (dei record, di pagina o buffer…) e poi # MAX.
applicazioni concorrenti… time-out .
64
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
(Time-out Intervallo max. di attesa temporale da
concedere alle operazioni di Lettura/Aggiornamento dati
per ottenere l’ accesso ad un dato usato da altre applicazioni
concorrenti) … Atzeni e … dedicano 2 capitoli a questi
temi: qui solo poche indicazioni di massima (da
approfondire sul Sistema usato al momento dell’ utilizzo)
considerando le componenti del d.b.Server a partire dall’
accesso ai dati. (Poche indicazioni dato il tempo limitato e
per l’ analogia con le caratteristiche simile dei S.O. )
Le componenti relative all’ accesso (trasferimento
lettura, scrittura) controllato e ottimizzato delle
informazioni riguardano in generale la gestione delle
transazioni.
Si sono introdotte le transazioni parlando di Integrità logica =
Integrità operazionale + Integrità Semantica che deve garantire
correttezza e consistenza logica delle informazioni.
L' affidabilita’ dipende dall’ Integrità ed il relativo Controllore,
per garantire l’ Integrità operazionale usa un LOG o Journal su cui
(come gia’ accennato in Parte1) sono registrate tutte le operazioni e
gli stati del d.b. (i valori dei dati!). Se in una data transazione capita
un malfunzionamento il sistema puo' riprendere con lo stato (i valori
dei dati) precedente la transazione. Transazione si era indicata
come una sequenza di operazioni sul data-base che trasforma uno
stato del d.b. in un altro consistente col precedente. Sintatticamente
questa unita’ elementare di lavoro e’ incapsulata tra 2 comandi:
bot = begin transaction
eot = end “
Tra i 2 comandi: codice operativo (per es. X:= X+1;) ed anche 2
istruzioni particolari: commit work; rollback work.
65
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
L’ istr. commit work; manda la transazione a buon fine; l’ istr.
Rollback esegue l’ abort della transazione (commit, rollback =
comandi tipici del D.M.L.).
Esempio di transazione in PL/SQL per trasferire 10 € dal conto
98145 al conto 11111 :
begin transaction;
update ContoCorrente
set ammontare = ammontare +10 where numconto = 11111;
update ContoCorrente
set ammontare = ammontare -10 where (numconto = 98145
and ammontare >=10); commit work;
if ammontare <10 rollback work ;
end transaction;
ACID properties of transaction:
 Atomicita’ = indivisibilita’ di esecuzione: o si conclude
felicemente o il DB torna allo stato precedente;
 Consistenza (con i vincoli di integrita’ del DB: NO violazioni !);
 Isolamento = Indipendenza dalla contemporanea esecuzione di
altre transazioni;
 Durability = Persistenza ( le informazioni modificate con un
commit NON devono essere PERSE ).
Ogni DBS usato da diversi utenti e/o applicazioni e’ caratterizzato
dal suo carico applicativo espresso in tps = #transazioni al secondo.
Per es. un DBS per la prenotazione di posti aerei puo’ presentare
carichi che vanno dall’ ordine di decine di tps, a migliaia di tps  e’
indispensabile la concorrenza delle transazioni.
Parlando di transazioni, sembra giusto accennare subito al
controllore della concorrenza, per riprendere il discorso all’ indietro
successivamente.
66
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Il controllore della concorrenza (detto anche genericamente
Scheduler) segue la teoria che tratta i vari problemi posti
dall’esecuzione concorrente e per risolverli usa specifici
strumenti/meccanismi. Tipici meccanismi di controllo di
concorrenza sono: il locking (di cui si parlera’ insieme allo
Scheduler a proposito dei b*-tree usati da piu’ utenti simultanei in
Parte 3) e il timestamp (= indicatore associato ad ogni transazione
che indica l’ istante iniziale della transazione e quindi ne permette un
ordinamento e controllo temporale  un esempio: lo Scheduler
NON puo’ accettare una transazione (con timestamp x) che voglia
leggere informazioni “modificate” da transazioni con timestamp
superiori a x o che voglia aggiornare informazioni già lette da
transazioni con timestamp superiori a x.
Il gestore dei metodi di accesso ai dati trasforma le
richieste prodotte dall’ ottimizzatore (basate sulla strategia
scelta) in sequenze di lettura/scrittura di tuple nelle pagine
(=blocchi_disco) del D.B. La trasformazione dipende dal
metodo di accesso disponibile e, come la struttura delle
pagine (sequenziale, sequenziale ordinata e/o ad array, con
accesso calcolato, ad albero…), dipende dal DBS usato …
 dall’ organizzazione dei trasferimenti e dalla struttura
del Buffer Manager ed anche dai tipi di accesso dedotti
dalla politica di gestione del DBS ( … simile a quella dei
S.O. dedotta da principi classici come quello di localita’. Si
ricordino i collegamenti col S.O. e lo schema relativo
riportato in Parte1).
L’ ottimizzatore e’ il responsabile delle strategie di
accesso: in ambito RDBMS, riceve in input un’
interrogazione che dalla forma origine in SQL, dopo le
varie analisi (lessicale, sintattica, semantica) e’ tradotta in
un formato interno di tipo algebrico (algebra relazionale!)
67
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Su questa viene effettuata l’ ottimizzazione tenendo conto:
 della convenienza di trasformazioni (= proiezioni e/o
selezioni) convenienza desunta dalla cardinalita’ delle
relation coinvolte,
 dei metodi di accesso (tipici del gestore, ma anche
dipendenti dalla presenza di indici),
 del modello dei costi assunto nel DBMS usato.
L’ ottimizzazione dipendente dai costi usa informazioni
quantitative - che i DBMS conservano nei Data Dictionary
- relative alle caratteristiche delle relation (per es. la
cardinalita’) dette profili delle relation. In sostanza l’
utente (nella veste di DBA) deve formulare ipotesi
(dedotte da valutazioni statistiche) sui valori di cardinalita’
e grado delle selezioni, proiezioni e join effettuabili.
Un tipo di scelta elementare effettuabile dall’
ottimizzatore tra 2 espressioni algebriche è riportato nel
seguito.
68
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Per lo Schema del Software di Sistema: cfr. Parte1 lucido5
Altro schema Parte2 lucido finale qui riportato
Appendice parte 2
A
L
T
R
I
M
O
D
U
L
I (*)
Gestore
Metodi di
Accesso
Sc
an
Ma
na
ger
B+
Tree
Man
ager
Buffer
Manager
Scheduler
Primitive
del File_
System e/o
del
D.B.M.S.
d.b.
DBS
Tab.dei
lock
LOG
Schema di architettura dei DBS relativa all’ accesso al d.b. estendibile
anche al contesto client-sever (da Atzeni &… Fig. 9.1 - 10.1 ed. 1999).
Nell’ ultima ed. 2003 gli schemi di Atzeni &… sono in una forma diversa,
sullo stile di quello riportato a pag. 10 di DB2005P1. Ho preferito questo
tipo di rappresentazione (arricchendola con la Tabella dei Lock), per la sua
completezza nella schematicità.
( * ) Tra gli ALTRI MODULI ci sono l’ Ottimizzatore, a monte del
Gestore dei Metodi di accesso, ed (a valle) il Controllore dell’ affidabilita’
con costruzione ed uso del file LOG (un archivio persistente dove sono
registrate tutte le operazioni svolte dal DBS) che permette il ripristino
dello stato precedente un malfunzionamento.
69
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Le ipotesi sui valori di cardinalita’ e grado delle selezioni,
proiezioni e join effettuabili sono utilizzate dall’
ottimizzatore per scegliere la sua strategia di accesso
usando strutture dati come alberi binari di decisione o alberi
a +rami per le alternative.
Per un esempio del lavoro (SEMPLIFICATO) dell’
ottimizzatore in codice SQL-like cfr. uso di SQL come DML
+oltre.
…da queste brevissime note si intuisce la pesantezza del lavoro
richiesto all’ utente ( DBA !) in fase di taratura del DBS ed il
collegamento di tale lavoro con la progettazione fisica che
riceve in input:
 schema logico;
 caratteristiche del DBMS usato;
 previsioni sul carico applicativo (Tavole dei: Volumi,
Operazioni, Accessi)
e produce in output:
 schema fisico con le
 strutture dati usate ed
 i relativi parametri (tipi record, dimensioni ...)
La scelta dei parametri non e’ facile: alcuni DBMS
presentano decine di possibilita’ per i parametri delle
strutture che condizionano l’ efficacia delle applicazioni. Le
soluzioni standard sono una possibile via d’ uscita, anche
se sarebbe meglio specificarne valori ottimali ... Ma per
questo occorre conoscere i DBMS, o almeno il
funzionamento delle componenti del Server.
70
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Seguono alcune linee fondamentali per basi di dati di medie
dimensioni con carichi di lavoro non superiori a decine di
tps.
Operazioni piu’ delicate in un RDBMS:
selezioni e join
che diventano piu’ efficienti se sugli attributi interessati
vengono definiti indici che ne permettono l’ accesso diretto.
Nelle operazioni di join e’ quasi sempre coinvolta la chiave
primaria delle relation o di una delle 2 relation su cui si
opera 
 E’ corretto definire su ogni relazione un indice
relativo alla chiave primaria.
… e per gli altri attributi ?
Una semplice strategia per produrre lo schema fisico
consiste nell’ usare analisi e considerazioni del tipo
indicato per definire un primo insieme di indici e porre i
fondamenti dello schema fisico.
Con lo schema fisico ottenuto si possono eseguire
esperienze sul comportamento di un’ applicazione in
esame
scegliendola
opportunamente:
se
tale
comportamento non da’ prestazioni soddisfacenti si puo’
procedere ad aggiungere altri indici su altri attributi, uno
per volta in modo da poter capire se il comportamento
globale del sistema trae vantaggio o risulta perturbato dal
nuovo indice.
 SI tratta di una strategia di tipo empirico
 con impostazione a tentativi,
 che permette di TARARE, regolare l’ accesso ai dati
per un miglioramento delle prestazioni del DBS.
71
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Si e’ visto che tra le componenti relative al D.B. Client
figurano:
query language, graphics, 4G, strumenti
di dialogo, logica dell’ applicazione …
Riguardo al query language le caratteristiche di base di
SQL sono state fornite con appunti ... schematici !
Qui di seguito e’ presentato un esempio d’ uso di SQL per
mostrare un possibile tipo di scelta effettuabile dall’
ottimizzatore tra 2 espressioni algebriche. Con riferimento
al d.b. Supplier, Part, SP, si consideri la seguente
espressione:
Select Sname
from S, SP
where S.S# = SP.S# and SP.P# = ‘P2’
che richiede la relation unaria ottenuta come proiezione del
join tra S ed SP sull’ attributo Sname.
L’ ottimizzatore deve fare una scelta tra:
((S join SP) where P# =’P2’) [Sname] che implementa pari
pari la frase Select e:
(S join (SP where P# =’P2’)) [Sname] che
implementersebbe la frase:
Select Sname
from S
where S.S# in Select S#
from SP
where SP.P# = ‘P2’
La seconda espressione appare piu’ conveniente della prima
perche’ la cardinalita della relation estratta da SP con P# =
P2 risulta inferiore a quella di SP: qui facile scelta per
ottimizzatore!
72
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
(Non e’ vero quel che e’ vero , ma e’ vero quel che
appare. Pirandello)
La struttura di un DBMS non e’ sempre rispondente
alle apparenze: un DBMS (e qui si tratta proprio di
DBMS con modello reticolare o gerarchico !) puo’
presentarsi sotto diversi aspetti…  Mascheramento
ottenibile col linguaggio di utilizzo disponibile.
Importanza ed evoluzione del Linguaggio 
Strumento
I 4GL danno anche tale possibilita’ e permettono:
 la realizzazione delle specifiche richieste ad un
DBMS con lo schema logico che dovrebbe indicare
tutti i vincoli di Integrita’: sopperiscono alle
possibili mancanze;
 la possibilita’ di collegare sistemi diversi;
 … e l’ integrazione totale anche con archivi
tradizionali? Negli anni 90 c’ erano grandi
aspettative per Focus (Information Builder Software Tecnology
Italia: in Fig. luc. seguente il suo Schema di presentazione) un
prodotto che permette l’ integrazione di archivi e
d.b. realizzati con vari DBMS: e’ una soluzione
tradizionale per ambienti Main-Frame. Una soluzione
alternativa si puo’ ottenere con un D.B.Distribuito (cfr.
+oltre) ed anche con d.b. remoti e accessibili con l’uso di
Internet (cfr. +oltre) e dei relativi linguaggi usabili …
che possono cosi’ inquadrarsi in speciali 4GL mentre i
browser (ormai notissimi)
possono diventare un’
interfaccia uniforme…
73
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
74
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Con l’ utilizzo delle reti, nelle Architetture dei DBS si
distinguono le situazioni qui sotto schematizzate:
Architettura Client/Server con funzioni distribuite tra Frontends = Client e
Backend= Server le cui componenti sono quelle viste.
Livello di decentralizzazione 1: prima figura, ma con Client
e Server anche su macchine diverse e collegabili in rete.
Livello di decentralizzazione 2: seconda figura con N
Clients ed 1 Server che sopporta accessi concorrenti.
Livello di decentralizzazione 3: seconda figura, ma
con M Server e N Clients (N, M >1).
Quando la collezione di dati e’ sparpagliata su macchine differenti
collegate in rete e con DBMS differenti si parla di Distribuited Data Base.
75
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Vari motivi spingono verso l’ architettura Client-Server:
 le funzioni di Client e Server sono ben identificate nel
contesto d.b. e corrispondono ad una decomposizione
ideale delle competenze e … professionilita’ 
programmatori applicativi sul Client, D.B.A. sul Server;
 l’ uso di Elaboratori diversi per Client e Server puo’
essere conveniente nel contesto d.b.  Personal Comp.
Per il Client, Elaboratore con notevole memoria di
massa per il Server;
 ogni interrogazione (per es. in SQL) del Client si
concretizza nell’ attivazione di un servizio del Server che
restituisce al Client le risposte desiderate con uso della
rete limitato alla frazione di informazioni coinvolte. Il
processo che costruisce le risposte e’ sempre attivo e
multi-thread  unico processo, ma composto da tante
unita’ esecutive, per es. una per transazione. (Questo
modello, tipico dei moderni sistemi operativi, e’
conveniente per il risparmio su allocazioni e
deallocazioni relative ai sistemi multi-processo.)
 l’ architettura Client-Server si puo’ estendere da 2 a 3
livelli (ed anche a N livelli …!) con un Client +semplice
(thin Client) con la sola funzione di interfacciare l’ utente
e inviarne le richieste ad un Server applicativo
Application Server che contiene la logica delle
applicazioni comuni a piu’ client (operando
analogamente ad un Web Server cfr. +oltre): esso dialoga
con il d.b. Server che gestisce le informazioni con la
modalita’ indicata sopra. Questa architettura consente
anche l’ attuazione pratica dei Client tramite i browser
(cfr. +oltre) usati dal Web su Internet.
76
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Distribuited Data Base D.D.B.
Concetti introduttivi su Data Base Distribuito = specie di
oggetto "virtuale" (C. J. Date) le cui parti componenti
sono fisicamente posti in D.B. reali in siti distribuiti. (fig.
2.7 da Date)
77
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
78
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Un Sistema di D.D.B. si puo' considerare come una sorta di
Societa' a Partecipazione Controllata di individuali e
locali DBMS posti in siti locali di una rete locale o
geografica e quindi geograficamente sparsi .... (anche se,
CONCETTUALMENTE, basterebbe pensarli logicamente
sparsi !) Il Sistema e' omogeneo se in ogni sito e' attiva una
copia dello stesso DBMS, altrimenti eterogeneo.
Principio base: un Sistema Distribuito dovrebbe
apparire all' utente come un Sistema non Distribuito.
Trasparenza totale.
Da questo principio derivano altre regole che definiscono
gli
obiettivi
dei
DDBS
(per
es.
locale
autonomia/indipendenza da hard. e soft. locali e/o di rete,
trasparenza parziale … ).
Tutto cio' distingue un vero DDB dai tipi di "remote data
access" spesso detti sistemi di elaborazione distribuita o
sistemi di rete.
Per questi ultimi esistono diversi prodotti soft. di
interfacciamento (cfr. + oltre).
Differenza tra architetture C/S e DDB.
In architetture C/S c’e’ un solo Server a gestire una
singola transazione; in DDB possono gestirla N
Server con N>1.
… ma una transazione puo’ essere gestita da N DataBaseM.S.
dislocati in rete, con N>1? Si, se tra i DBMS esiste l’
interoperabilita’ attuata tramite interfacce standard relative ai
protocolli di accesso ai dati.
79
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
DDB: N Server con N>1 possono gestire una
singola transazione. Cio’ permette di gestire dati
posti fisicamente in siti distanti tra loro, ma collegati
in rete locale/geografica (LAN/WAN= Local/Wide
Area Network). Tipico esempio: applicazioni
finanziarie di sistemi interbancari.
Distribuzione dei dati sugli N Server: significato 
 sulle informazioni strutturate (per es. Relations di
RDBMS) si puo’ applicare frammentazione orizzontale
e verticale (uso di selection e projection);
 ogni frammentazione puo’ essere realizzata a diversi
livelli di trasparenza per l’ utente;
 le transazioni sul D.B. possono riguardare 1 o piu’
server e sono classificate in: locali (se rivolte al
server locale), remote (se rivolte ad un Server
collegato in rete, come in C/S), distribuite (se
rivolte a N Server con N>1);
 problemi per le 2 proprieta’ delle transazioni
indicate come: Atomicità e Isolamento =>
 Atomicità: i controlli sul compimento di ogni
transazione vanno effettuati in ambiente distribuito
con protocolli speciali detti protocolli di commit;
 Isolamento: il controllo di concorrenza con
locking e timestamp deve essere effettuato in
ambiente distribuito.
Si NOTI che ciascun server ha una sua identita’ e
controlla i dati che gli sono funzionalmente associati.
80
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
In pratica attualmente questi aspetti che distinguono un
vero DDB dai sistemi di elaborazione distribuita o
sistemi di rete sono implementati in ambienti omogenei
per singoli DBMS. In ogni sistema sono comunque
essenziali la trasportabilita’ (livello di compilazione) e l’
interoperabilita’ (livello di esecuzione).
A livello logico l’ interoperabilita’  capacita’di operare
in un sistema eterogeneo facendo interagire sistemi
eterogenei, comporta che DBMS differenti (?) supportino
la stessa interfaccia. La trasportabilita’ indica la
possibilita’ di far “girare” applicazioni in ambienti diversi.
A livello applicativo si presentano alcuni problemi
implementativi come:
 protocollo per lo scambio di dati tra DBMS diversi;
 traduzione di frasi in linguaggi e dialetti diversi;
 interazione tra servers relazionali e di altro tipo per l’
esecuzione di transazioni su D.B. con differenti
modelli_dati;
 controlli di transazioni concorrenti in ambienti diversi;
 …
Inoltre col diffondersi delle reti entra in gioco anche il
problema dell’ integrazione di sistemi Informatici
raggiungibili con la rete legato al concetto di cooperazione
 capacita’ delle applicazioni di un sistema di utilizzare
quelle di altri sistemi.
Il tipo di cooperazione interessante nel contesto d.b. e’
basata sui dati  i dati di un sistema devono essere usabili
da altri sistemi eterogenei. Eterogeneita’, autonomia,
distribuzione e cooperazione sono spesso in conflitto con
problemi di:
1. trasparenza, 2. complessita’, 3. attualita’ dei dati.
81
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
1. Il livello di trasparenza misura quanto i d.b. cooperanti
appaiono all’ esterno come un unico d.b.
2. la complessita’ delle operazioni distribuite misura il
lavoro di coordinamento da effettuare sui d.b. cooperanti,
3. il livello di attualita’ dei dati misura la necessita’ di
accedere a dati recenti che possono essere anche
“derivati” da dati originali (repliche, copie) non sempre
allineati con i dati originali, ma +facili da raggiungere.
Questi problemi si analizzeranno dopo qualche
premessa.
Si NOTI subito il concetto della replicazione di dati: anche
se il controllo a timestamp ipotizza (come rimedio) eventuali copie
di dati per non uccidere troppe transazioni concorrenti sugli stessi
dati, la replicazione “ufficiale” interviene proprio con i
DDB e con le “basi di dati parallele” dove il parallelismo
e’ introdotto con macchine multiprocessore per garantire
prestazioni migliori. La possibilita’ di usare i d.b. in rete
provoca la necessita’ di 2 tipi di architettura per i DBMS o
+semplicemente di 2 funzionalita’ dei db-Server: la prima
e’ quella tradizionale ossia la gestione di migliaia di tps e
l’altra e’ l’ analisi dei dati. Col primo tipo di funzione o di
dbS (detto OLTP On-Line Transaction Processing) sono
generati i dati che si possono esportare in Data Warehouse
o magazzino di dati provenienti da siti diversi per esempio
corrispondenti a Societa’ che si fondono. Tali dati (storici!)
una volta inseriti non vengono più modificati, ma saranno
analizzati dal secondo tipo di funzione o di dbS (detto
OLAP On-Line Analitical Processing dove On-Line indica
che si tratta di processi interattivi). L’ OLAP e’ definito
come “un importante strumento di “business intelligence”
che ipotizza e verifica possibili legami tra i dati.
82
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Questi legami sono ipotizzati dall’ utente ed occorre
scoprire quali possono essere veri e quali no. (P. Giudici:
“Data Mining” McGrawHill 2001).
Importanti per un Data Warehouse (DW) sono:
 i dati in ingresso che non si esauriscono nelle
informazioni provenienti dai d.b. dei vari siti o dalle
società che intendono fondersi, ma devono contenere
(per es. in forma di Vincoli) i requisiti delle analisi
che si vogliono effettuare sui dati e le eventuali
informazioni statistiche necessarie per effettuare tali
analisi provenienti da altre fonti come l’ ISTAT;
 l’ integrazione e fusione di tutte queste informazioni
risolvendo possibili conflitti strutturali, di codifica, di
terminologia;
 la progettazione e costruzione del DW stesso. Per farlo
viene utilizzata frequentemente la strategia botton-up
partendo dalla realizzazione di Viste “materializzate”
(ossia non virtuali, ma effettive) dette “data mart”.
Atzeni & … sottolineano che in tal modo si costruisce
il DW in modo incrementale “collezionando” l’
insieme dei data mart sviluppati. E’ un approccio
“settoriale” ma efficace e con possibili estensioni.
In un DW sono anche fondamentali le tecniche di analisi
che vanno sotto il nome di Data Mining .
Si differenzia dall’ OLAP il processo di Data Mining nel
senso indicato dallo schema seguente (P. Giudici):
Query(&reporting)DATA RETRIEVALOLAPDATA MINING
Si tratta di un campo di indagini molto attuale (nato proprio dalle nuove
tendenze di cooperazione e/o fusione in campo economico-finanziario).
83
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Il Data Mining si avvale di sofisticati strumenti di
indagine statistica e/o di strutture dati (talune presentate
in Parte3). Lo schema di Giudici sta a sintetizzare proprio la
differenza tra i tradizionali strumenti di interrogazione di un
d.b. e l’ OLAP con il processo di Data Mining ancora piu’
“potente”. (Letteralmente: Scavare per estrarre nuove
informazioni dai dati.)
La differenza tra OLAP e Data Mining sta nel fatto che
nell’ OLAP le ipotesi di ricerca (per es. di interrelazione
tra i dati) sono fatte dall’ utente e non scoperte nei dati
come avviene col Data Mining. Paolo Giudici lo definisce
come “il processo di selezione, esplorazione e modellazione
di grandi masse di dati al fine di scoprire regolarita’ o
relazioni non note a priori e allo scopo di ottenere un
risultato chiaro ed utile” per gli utenti del d.b. In altre
parole si tratta di scoprire interrelazioni (anche le –
evidenti) tra dati della stessa natura, ma di varia
provenienza per indagare le loro analogie, trovare un
modello descrittivo sia per presentarli (per es. raggruppati
in base a tali analogie), sia per previsioni comportamentali
(trend, diagnosi…)
Fondamentale e’ che i risultati devono produrre un utile per
l’ utente specie se si tratta di un’ Azienda Commerciale:
quindi l’ indagine non e’ solo di tipo statistico, ma integrata
con le conoscenze dell’ economia aziendale, di A.I. e
naturalmente del d.b.
In questo contesto Atzeni & … indicano problemi classici
risolti dal Data Mining usando regole di probabili
associazioni ed anche algoritmi di classificazione realizzati
con uso di alberi decisionali.
84
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Le regole di associazioni si basano su A.I. (Artificial
Intelligence) nel senso che sono costituite da una premessa
ed una conseguenza.
Un loro esempio è:
sci bastoncini
dove la premessa acquisto degli sci è seguita dalla
conseguenza acquisto dei bastoncini.
Tali regole si deducono dalle tuple delle relation presenti
che sono analizzate per evidenziare i probabili elementi di
una regola associativa contenuti “tra le righe!” Ogni regola
deve essere comunque caratterizzata da valori di
probabilità e frequenza superiori a determinate soglie.
Tra gli strumenti statistici usati dal Data Mining
importante è la riduzione della dimensionalità con l’
individuazione delle componenti principali di un insieme di
dati, (per esempio tra gli attributi di una relation scegliere
quelli più significativi per l’ ambiente in esame). Il fine di
ciò è semplificare analisi, descrizione e rappresentazione
dei dati per esempio con grafici bi- o tri-dimensionali.
Si torna ora a trattare i problemi lasciati in sospeso, ossia
1.trasparenza, 2.complessita’, 3.attualita’ dei dati
in sistemi eterogenei che possono operare sia
autonomamente, sia cooperando in un contesto di DDB.
Riguardo alla cooperazione esistono diversi tipi di
architetture che producono forme di cooperazione
differenti:
Sistemi multi-d.b. con elevati 1 & 3, ma anche alta 2 si
tratta di d.b. a cui possono accedere (con un gestore locale)
utenti locali e utenti remoti tramite un Gestore Globale.
85
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
La struttura e’ di tipo gerarchico con capostipite il Gestore
globale (G.G.) detto anche Multidatabase che interroga i
singoli d.b. tramite la rete, i gestori locali (g.l.) ed i
“mediatori” (filtri) che richiedono di estrarre le porzioni
dei dati desiderate (forniti dai gestori locali), poi integrate
dal Gestore globale in una visione unitaria per gli utenti
remoti. Le modifiche sono per lo piu’ realizzate a livello
locale.
Client
Client …………………….Client
G.G. (Multidatabase)
Mediatore
Mediatore Mediatore
g.l.
g.l.
g.l.
D.B.
D.B.
D.B.
Sistemi con dati replicati in Data Warehouse con elevati 1
& 2, ma basso 3  sempre in una struttura gerarchica il
Gestore globale diventa un Gestore della Warehouse
collegato ai d.b. da 2 livelli di filtri (integratore e
mediatori) che sono collegati ai gestori locali. E’ una
soluzione utile soltanto se i dati hanno dinamicita’ limitata
e/o sono usati per analisi di tipo statistico su lunghi periodi
di tempo.
86
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Sistemi con d.b. accessibili direttamente da Client remoti
che effettuano le integrazioni dei dati estratti dai singoli
d.b. (tramite eventuali mediatori e gestori locali) e/o da
Data Warehouse (tramite apposito gestore)  bassi 1 & 2,
variabile 3.
87
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Interoperabilita’: in pratica si puo’ ottenere utilizzando
una interfaccia API (= Application Programming Interface)
con Architettura di rete a 2 strati (o livelli = tier) del tipo seguente:
Client
Server
Presentazione
Logica Applic.
D.B.S.
D.B.
API
ODBC = Open Data Base Connectivity interfaccia della
Microsoft
API JDBC = Java Data Base Connectivity interfaccia della
Sun
…
Per esempio con un’ applicazione scritta per Access, usando ODBC si
puo’ lavorare con un d.b. creato con SQL_Server (cfr +oltre).
Con questo tipo di Architetttura a 2 tier ogni Client deve
contenere e gestire le proprie Applicazioni con problemi
di dimensione, replicazione e manutenzione dei programmi.
Per svincolarsi dalle Applicazioni si passa ad una
Architetttura a 3 tier col Client +semplice del tipo seguente:
Thin Client Middle Tier o Ware DB_Server
Presentazi
one
Logica Applicaz.
Controlli di:
comunicazione,
sicurezza, servizi,
transazioni …
Accesso
ai dati
D.B.
La presentazione e’ svincolata dall’ Applicazione: comunicazioni
ai d.b.Server e controlli sono gestiti nella infrastruttura detta
Middle_Ware svincolando l’ utente anche dai dettagli di
comunicazione. La presentazione puo’ essere fatta anche con
Servlet Java (cfr +oltre) e nel Middle_Ware si puo’ introdurre
J2EE=Java2EntrepriseEdition la piattaforma della Sun con tutti i
servizi, compreso il Java_mail, e programmi in Java di tutti i tipi.
88
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Riguardo all’ eterogeneita’ e interoperabilita’ seguono alcuni
esempi 
 il primo restringe l’ eterogeneita’ a RDBMS usando un’
interfaccia A.P.I. (Application Program Interface) tra RDBMS
diversi, ma sempre Relazionali !
 il secondo utilizza Internet e WWW considerando un’
architettura Client-Server a 3 livelli del tipo seguente:
Str.Sviluppo
Web_Client
Web_Ser
ver
D.B.Server
D.B.
Gateway
In figura si nota che l’accesso al d.b. passa per:
 Web_Client dotato di un browser  Uniforme
interfaccia utente;
 Web_Server: dotato di vari tipi di interfaccia effettua i
servizi richiestigli dal Web_Client come per es. il lancio
di programmi esterni (CGI) e/o di applicazioni;
 Gateway: è un “nodo intermedio" che può agire solo da
server. Analizza le richieste del Web_Client e se
ammesse le traduce anche richiedendo programmi (i CGI
= Common Gateway Interface, e/o “script” CGI che
girano sul Web_Server) e passando i relativi parametri.
Il Gateway interfaccia il D.B.Server, per suo tramite apre
la connessione con il d.b. e passa al D.B.Server le
richieste tradotte per il d.b.
 Uso di strumenti di sviluppo (tipici di prodotti
commerciali) che sono interconnessi al Web_Server e
possono connettersi direttamente al d.b.
 D.B.Server: accede al d.b.
89
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Gli altri esempi si possono considerare come estensioni piu’
efficienti del secondo basati su un’ architettura potenziata
rispetto a quella sopra indicata.
 Nell’ architettura seguente, che fa parte delle
architetture multi_tier ed è mostrata come esempio, c’è
un Sistema dedicato all’ esecuzione di applicazioni
(con script e/o procedure) scritte in svariati linguaggi
(C++, VisualBasic.Net, Java …). Il Sistema è chiamato
Application Server e permette l’ esecuzione di varie
applicazioni che vanno dalla creazione di template
(scheletri) di pagina fino all’ aggiornamento del loro
contenuto. Avendo già più volte menzionato gli script si
ricorda che il contesto in cui sono nati e dove si inseriscono i
cosìdetti linguaggi di scripting è il Sistema Operativo dove
sono usati per potenziarne le possibilità.
Segue lo schema dell’ architettura tipica dei WIS (Web
Information System cfr. + oltre) con applicazioni Web
aperte a tutti gli utenti di Internet, che devono rispondere a
carichi di lavoro a volte molto intensi.
(Nello schema compare anche un processor script che libera
l’ application server dal compito di interpretare il codice.)
Web_Client
Web_Ser
ver
Processor
script
Application
Server
D.B.
Server
D.B.
Tab.dei lock
90
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
1. Utilizzo di ODBC (Open Data Base Connectivity) che e’:
 un’ interfaccia software (a standard API = Application
Programming Interface della MicroSoft) tra due tipi di
programmi, uno applicativo su Client e l' altro che
gestisce un D.B. con uso di SQL;
 consente di accedere ai dati in RDBMS “qualunque”;
 "supporta" un linguaggio che e' un sottoinsieme di SQL;
 utilizza un insieme di librerie dette drivers (che lavorano
nell' ambito di alcuni RDBMS e O.S.) e sono controllati
da un Driver_Manager: la guida di Access fornisce indicazioni
impostando “driver ODBC”). Si tratta del tipo di librerie CLI di cui si
è accennato in db2005p1 luc129 parlando di SQL nei linguaggi di
programmazione.
 Il programma applicativo richiede un driver gestito dal
Driver_Manager di ODBC che con gli altri e'
disponibile nell' O.S. usato (per es. i driver per Access
sono disponibile in WINDOWS95, NT…) Il driver
attivato trasmette i desiderata dell’ applicazione al
d.b.Server nel formato voluto da questo e in modo
trasparente per l’ applicazione 
Prioritariamente (con ODBC installato col S.O. del Client p.e.
Windows95-NT), e’ necessario:
 indicare il nome della Fonte_Dati (Data Source) usata nel
collegamento (per es. un d.b. con SQL_Server in un sito
collegato in rete), e accertare che la configurazione del Server
(SQL_Server) sia completa: e’ compito dell’ Amministratore
del Sistema installare le procedure utili su ogni Server perche’
siano eseguite tutte le richieste dell’ utente;
 Con ODBC si possono usare le frasi Commit e Rollback che
garantiscono l’ atomicita’ delle transazioni ed effettuare
interrogazioni sia statiche (per es. compilate) che dinamiche (per
es. specificate in stringhe di output incluse in programmi eseguibili
dinamicamente come mostrato negli esempi +oltre).
91
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
…ma l’ interoperabilita’ e’ in evoluzione continua e con gli
RDBMS piu’ moderni (per es. Access2003) anche alcune
delle necessita’ sopra indicate diventano ridondanti.
Quello che segue è un esempio “storico” dell’utilizzo di
ODBC solo accennato per indicare le fasi di passaggio tra i
sistemi di connessione. Si consideri un Server con un D.B.
ed un sistema Relazionale (SQL_Server) che sia un nodo di
una rete Intranet collegata ad Internet: per accedere ai dati
del D.B. da vari RDBMS, localmente posti nei siti della
rete, si puo’ usare ODBC. Al primo collegamento
(necessari nome e password forniti dal D.B.A. di
SQL_Server)) occorre rendere disponibili in rete i dati
locali. Se e’ stato usato Access, per costruire un D.B.
locale, occorre trasformare le tabelle locali Access in
Relations SQL_Server: per questo e' anche necessario uno
strumento di trasformazione UPSIZING_Tool delle Tabelle
costruite in Access in SQL_Server_Relation, strumento che
deve essere disponibile su ogni Client. Praticamente si
ottiene una replicazione del D.B. locale. Questo, una volta
trasferito, puo’ essere eliminato.
ATTENZIONE! Primo utilizzo della Replicazione di D.B.
Se ne riparlerà!
Con questi strumenti e' possibile operare su un D.B. remoto con
applicazioni scritte (o tradotte) in SQL e rendere il D.B. costruito
localmente utilizzabile da applicazioni remote scritte in SQL
anche con altri RDBMS.
L’ utente abilitato a letture e scritture sul D.B. puo’ connettersi al
D.B. di rete. Come? Già in n Access95-97 la connessione si
otteneva tramite Apertura del D.B. esterno o Collegamento alle
Tabelle desiderate dal menu’ File. Si puo’ quindi operare sul D.B.
esterno o sulle tabelle Attached riconoscibili per un simbolo
iniziale particolare (mondo, freccia) come se fossero locali.
92
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Da qui appare chiaro che l’ utilizzo di ODBC non è di tipo
friendly né generale, ma Microsoft ha presentato altre
soluzioni per ampliare i tipi di “Data Source” da trattare:
queste sono OLE DB e ADO. OLE DB si basa sulla
tecnologia integrativa OLE (Object Linking and Embedding che
già in Access95-97 permetteva di condividere informazioni tra programmi
Office, utilizzando oggetti collegati o incorporati). OLE DB è un’
interfaccia che permette l’ accesso a dati di vario tipo:
dalle caselle di posta elettronica ai sistemi CAD/CAM.
Utilizza il modello a oggetti COM tipico dell’ architettura
Microsoft. ADO (ActiveX Data Object) estende i servizi
offerti da OLE DB presentandosi come una ricca interfaccia
dotata di varie funzionalità e caratteristiche. Fondamentali
sono: la Connessione a DB tramite User_Name e Psw (in
evidenza possibili Errori), uso di Comandi SQL sotto forma
di stringa, individuazione di una tupla e di un insieme di
tuple ossia un “recordset”  struttura che contiene i
risultati delle interrogazioni inviate al DB e permette di
scandire le tuple che contiene, una alla volta come con i
cursori. Tutto questo è realizzabile tramite l’utilizzo di
moduli come ADODB che ne facilitano l’ uso (per esempio
in programmi scritti in Visual Basic Script come verrà
indicato nel seguito.)
Ma ancora più facilmente in Access 2000-2003 sono forniti
altri strumenti:
Il primo permette la costruzione guidata di pagine Web per
accedere a dati, similmente a come sono costruite le query.
Si può così realizzare l’ accesso ad un D.B. remoto che può
essere consultato e modificato, anche se spesso per motivi
di sicurezza è consigliato il blocco delle modifiche ai dati
via web.
93
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Il secondo permette l’ aggancio ad un D.B. Access remoto
tramite la costruzione di un suo “progetto” che nella Guida
di Access 2003 è così definito.
Definizione di un progetto di Microsoft Access
Un progetto di Microsoft Access (adp) è un file dati di Access che consente di accedere in modo
efficiente e nativo a un database di Microsoft SQL Server mediante l'architettura dei componenti
OLE DB. Grazie a un progetto di Access è possibile creare un'applicazione client/server tanto
facilmente quanto un'applicazione file server. L'applicazione client/server può essere una soluzione
tradizionale basata su maschere e report, una soluzione basata sul Web che prevede l'utilizzo di
pagine di accesso ai dati oppure una combinazione di entrambe. È possibile connettere il progetto di
Access a un database di SQL Server remoto, a un database di SQL Server locale o a un'installazione
locale di SQL Server 2000 Desktop Engine.
OLE DB: Connette il progetto di Access al database di SQL Server
Tabelle, query, Viste, Funzioni, Schemi: Oggetti di d.b. memorizzati nel database di SQL Server
Maschere, Report, Pagine, Moduli: Oggetti di database memorizzati nel progetto di Access
Un progetto di Access è definito progetto perché contiene unicamente oggetti di database basati su
codice o su HTML: maschere, report, nome e percorso di pagine di accesso ai dati, macro e moduli.
Questi sono gli oggetti di database utilizzati per creare un'applicazione. A differenza di un database
di Microsoft Access, un progetto non contiene oggetti basati su dati o su definizioni di dati: tabelle,
viste, diagrammi di database, stored procedure o funzioni definite dall'utente. Tutti questi oggetti di
database sono archiviati nel database di SQL Server.
Per creare un'applicazione e accedere ai dati, è necessario connettere il progetto di Access al
database di SQL Server tramite il comando Nuovo del menu File che consente di visualizzare la
finestra di dialogo Proprietà di Data Link oppure tramite la Creazione guidata Database.
Database di Microsoft SQL Server supportati
È possibile connettersi a uno dei seguenti database di SQL Server:

Microsoft SQL Server 2000 in Microsoft Windows 2000 o versioni successive

Microsoft SQL Server 2000 Desktop Engine in Windows 2000 o versioni successive
Nota Se ci si connette a un'istanza denominata di un server SQL Server 2000, nel computer client
del progetto di Access deve essere installato Microsoft Data Access Components (MDAC) versione
2.6. Per installare MDAC 2.6 è possibile installare Microsoft SQL Server 2000 Personal Desktop
Edition dalla cartella \MSDE2000 disponibile nel CD di Microsoft Office 2003.
Utilizzo di un progetto di Access
Lavorare con un progetto di Access è molto simile a lavorare con un database di Access. Il processo
di creazione di maschere, report, pagine di accesso ai dati, macro e moduli è praticamente identico a
quello utilizzato per creare un database di Access.
94
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Dopo essersi connessi a un database di SQL Server, è possibile visualizzare, creare, modificare ed
eliminare tabelle, viste, stored procedure, funzioni definite dall'utente e diagrammi di database
utilizzando gli strumenti Progettazione database, Progettazione tabelle, Progettazione query,
Generatore di query e Editor di testo. Benché l'interfaccia utente per l'utilizzo di questi oggetti di
database sia diversa da quella per gli oggetti di database equivalenti in un database di Access, la
semplicità di utilizzo è praticamente la stessa. Un progetto di Access contiene inoltre molte delle
stesse procedure guidate di un database di Access, ad esempio la Creazione guidata Maschera, la
Creazione guidata Report, la Creazione guidata Pagina e la Creazione guidata Maschera di input,
che consentono di creare rapidamente un prototipo o una semplice applicazione e semplificano
inoltre la creazione di applicazioni avanzate.
Informazioni sulle proprietà estese
Se il progetto di Access è connesso a un database di SQL Server 2000, è possibile sfruttare i
vantaggi offerti dalle proprietà estese. Tali proprietà consentono di memorizzare informazioni
aggiuntive sugli attributi degli oggetti di database di SQL Server memorizzati nel database di SQL
Server e rendono disponibili funzionalità aggiuntive per un progetto di Access, ad esempio:

Creazione di un criterio di ricerca all'interno di una colonna.

Visualizzazione di testo di convalida di facile utilizzo.

Formattazione di dati e definizione delle maschere di input.

Utilizzo di fogli dati secondari, salvataggio di criteri di ordinamento e di filtri e salvataggio della
visualizzazione Foglio dati per tabelle, viste, stored procedure e funzioni inline definite dall'utente.
Alcune proprietà estese vengono utilizzate da Access e non sono visibili in un progetto di Access,
ad esempio una proprietà che imposta le larghezze di colonna nel foglio dati di una tabella. Altre
proprietà estese sono disponibili nelle finestre delle proprietà di database, tabelle e utilità di
progettazione query per le viste, le stored procedure a istruzione singola (ad eccezione delle
proprietà di colonna) e le funzioni inline. Le stored procedure a istruzioni multiple e le funzioni
tabella e scalari definite dall'utente vengono modificate nell'Editor di testo e pertanto non
supportano le proprietà estese.
Per impostazione predefinita, SQL Server non supporta l'ereditarietà delle proprietà estese. Una
colonna di una vista non eredita automaticamente le stesse proprietà della tabella di base. Un
progetto di Access supporta tuttavia l'ereditarietà, tramite la copia delle proprietà estese dalle
colonne delle tabelle nelle colonne delle viste e delle funzioni al momento della creazione e tramite
la copia delle proprietà estese dalle colonne delle tabelle nelle proprietà dei controlli di maschere e
report.
Nota Le modifiche alle proprietà estese di tabelle, viste, stored procedure e funzioni inline sono
visibili per tutti gli utenti del database, poiché tali proprietà sono memorizzate nel database di SQL
Server. Ciò significa, ad esempio, che le modifiche apportate al formato del foglio dati di una
tabella saranno visibili per tutti gli utenti che apriranno il foglio dati della tabella in un momento
successivo.
Questo per Microsoft Access, ma …
95
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
passando a SUN Microsystem, il linguaggio Java ed il suo
ambiente offrono altre soluzioni che si basano sul modulointerfaccia API Java Data Base Connectivity. JDBC
(analogo a ODBC, con cui puo’ interagire) permette l’
accesso e lo scambio di informazioni tra programmi Java e
RDBMS. Utilizzando JDBC si possono scrivere classi Java
per accedere a D.B. Se per esempio si usa il metodo
executeQuery si ottiene un insieme di tuple in un oggetto
Result della classe ResultSet la quale permette di
scandire le tuple che contiene, una alla volta come
avveniva con i cursori. (Esempio in Atzeni &… Vol.1
pag. 178.)
2. Utilizzo di W.W.W. = World Wide Web 
la “ragnatela tessuta” sulla rete Internet che indica e
realizza la gestione di informazioni testuali collegate tra
loro (ipertesti) e dati multimediali ossia di documenti
ipermediali (ipermedia). Sistema Client-Server con contatti
col mondo dei d. b. anche a livello concettuale poichè:
 a) un ipermedia puo’ contenere anche informazioni
estratte da/inseribili in un Data Base;
 b) i DBMS stanno evolvendo verso la gestione di
oggetti = dati complessi o multimediali.
Come detto, le Web Application ossia la gestione di
informazioni estratte da d.b. tramite l’ uso del Web sono
iniziate negli anni ’90 con estensioni del Web Server (http
non é predisposto per questo fine) per la creazione di
interfacce utente formate da pagine Web costruite
partendo dalle informazioni del d.b. La prima di queste
estensioni consisteva nell’ attivazione di brevi
programmi CGI.
96
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Questi effettuavano le elaborazioni richieste e restituivano
come output pagine HTML (Hyper Text Markup Language)
interpretate dal browser e generate dinamicamente
contenenti i risultati delle elaborazioni… ma ormai il Web è
una piattaforma per lo sviluppo di Sistemi Informativi su
WEB (WIS). I WIS si possono considerare un sottotipo dei MIS
(Managemant Information System) di cui si è detto in “db2005parte1”.
Si parte con le CGI e HTML che trae le sue origini dal
linguaggio SGML (Standard Generalized Markup
Language) un meta-linguaggio IBM usato dai ricercatori
del Cern (anni ’90) per definire i linguaggi di markup
(marcatura) composti da testo e da tag. HTML fu il primo
di questi linguaggi, uno più recente è XML (eXtensible
Markup Language). Tra questi 2 linguaggi ci sono analogie
(per es. i tag sono scritti nello stesso modo, ma le relative
regole sintattiche di XML sono più rigide) e differenze.
HTML serve per costruire e visualizzare pagine Web,
XML per descrivere e inviare informazioni (documenti)
usabili non solo con il Web, ma anche in ambienti
applicativi diversi (motori di ricerca, word-processor, basi
di dati …) Il pregio di HTML ossia la semplicità dei suoi
documenti é anche il suo limite: non c’è un controllo
semantico dei costrutti, ma solo sintattico. Un browser deve
talvolta “indovinare” la struttura del documento che non è
sempre ben definita con i Tag: ne segue che alcune pagine
sono illeggibili.
XML ha più controlli, si può definire come un metalinguaggio perchè permette la definizione di Tag
personalizzati e fornisce un’ uscita (layout) indipendente
dal browser usato, attraverso l’ Extensible Stylesheet
Language (XSL) che definisce lo stile del foglio di out.
97
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Un esempio di uso di XML in d.b. è in Access dove per es.
un report può essere esportato in formato XML provocando
la pubblicazione del contenuto per Internet e la
registrazione del file XML e del relativo Foglio di Stile che
deve contenere istruzioni perché la pubblicazione
avvenga con l’ aspetto e la presentazione tipica di Access.
Un foglio di stile XSL (Extensible Stylesheet Language) é
molto flessibile e consente di selezionare con estrema
precisione i dati che verranno visualizzati, di specificarne
l'ordinamento o la disposizione e di modificare o
aggiungere informazioni. È inoltre scritto in uno stile
simile a quello di un documento XML, (utilizza una
combinazione di tag XML e HTML per creare un modello
di stile di output specifico). Cambiando il foglio di stile si
può ottenere una pubblicazione del tutto diversa (per es. in
braille). E’ giusto comunque sottolineare che dalla versione
4.0 anche HTML è dotato di un linguaggio Cascading Style
Sheet (CSS) che permette la separazione della
formattazione dal contenuto del testo. Il foglio di stile
CSS (parte di pagina Web che definisce gli stili per
controllare la visualizzazione delle pagine Web da parte del
browser), è spesso utilizzato per applicare velocemente una
formattazione a più pagine.
I documenti Web sono scritti generalmente in HTML … e
allora perché XML ? La guida di Access indica quanto
segue:
In genere, la raccolta dei dati, la conversione in informazioni
utilizzabili e la condivisione di tali informazioni influiscono
sull'esito della propria attività. La difficoltà consiste
essenzialmente nel fatto che la maggior parte dei dati proviene
da numerose origini dati interne ed esterne ed è disponibile in
numerosi formati differenti.
98
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Di seguito sono riportate alcune possibili origini dati.

Server Microsoft SQL interni

Server AS400 interni

Fogli di lavoro di Microsoft Excel

Altri provider di dati esterni, come SAP

File di testo

Applicazioni con formati di dati proprietari
Molte di queste origini supportano l'utilizzo dell' XML come
formato di interscambio dei dati, così che risulta relativamente
facile adattare le informazioni alle proprie esigenze.
Periodicamente, sarà necessario consolidare i dati delle varie
origini per creare un report da sottoporre a responsabili e
collaboratori per la revisione.
Per effettuare questa operazione utilizzando l'XML, è possibile:
1.
Collaborare con gli amministratori delle varie origini dati
per esportare i dati in un gruppo di file XML situato su un
server remoto.
2.
Importare i dati dai file di origine XML nel database di
Microsoft SQL Server. È anche possibile importare questi dati
in un database di Access o in una copia locale di Microsoft
SQL Server 2000 Desktop Engine che supporta l'importazione
di dati XML. Questo processo potrebbe anche essere
automatizzato scrivendo del codice di Visual Basic,
Applications Edition in Access in modo da implementare un
timer che esegua il metodo ImportXML.
3.
Utilizzare il front end di un progetto di Microsoft Access
connesso a SQL Server per creare una serie di query di
aggregazione sulla base dei dati importati.
99
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
4.
Utilizzare tali visualizzazioni per progettare report o pagine
di accesso ai dati appropriate.
5.
Stampare il report, fornire un'anteprima del report o
pubblicare una pagina sul sito Web di una rete Intranet.
Il vantaggio principale nell'utilizzo dell'XML in questo scenario
è che, diversamente dalla creazione delle query, non è richiesta
alcuna altra manipolazione dei dati per raccogliere tutti i dati
provenienti dalle varie origini dati in SQL Server o in Access.
Senza l'XML questa attività potrebbe implicare l'esportazione
dei dati in un file di testo (se supportata dalle diverse origini
dati), la manipolazione dei file di dati aggiungendo delimitatori
per separare i dati in parti distinte, l'importazione di dati in SQL
Server o in Access e infine l'eliminazione dei dati, che richiede
una gran quantità di tempo. L'utilizzo dell'XML consentirebbe
di ridurre il tempo impiegato per riformattare ed eliminare i dati
L'importazione e l'utilizzo di dati memorizzati in formato XML
fornisce un'indicazione sulla struttura dei dati e sul modo in cui
essi vengono memorizzati nella tabella di destinazione del
database.
In Acccess e’ dunque possibile l'importazione di dati da un
file XML. Per chiarirne l’ uso è bene tener presente quanto
esposto in Atzeni & … proprio sul suo uso. In Atzeni &…
ed. 2003 cap.6, Vol.2 è presentato l’ esempio di uno
“Schema XML per la rappresentazione di indici di libri”, il
documento XML contenente la descrizione del Primo Vol.
di “Basi di Dati” e la XQuery per estrarre gli autori del
libro fatta nel Linguaggio Xquery con riferimento allo
Schema XML.
C’ è anche la pagina Web prodotta usando il linguaggio XSL (eXstensible
Stylesheet Language) col quale si costruisce il file chiamato Foglio di Stile
(stylesheet) fatto di regole per selezionare una parte o tutto un documento XML
e trasformarlo in un altro documento di output con struttura diversa.
100
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
I vantaggi di XML rispetto a HTML si possono sintetizzare
in tre maggiori aspetti:

Possono essere definiti nuovi tag ed attributi.

La struttura di un documento può essere vista in modo
gerarchico nidificando i tag in ogni livello di
complessità.

Ogni documento XML può contenere una opzionale
descrizione della sua grammatica, in modo che possa
essere utilizzata da applicazioni che richiedono una
validazione della struttura del documento.
Si è già visto un esempio di uso di XML in d.b. Access
dove si é esportato un report in formato XML. E’ stata
realizzata la pubblicazione del report per Internet e la
registrazione del relativo file XML e del relativo Foglio di
Stile con le istruzioni necessarie per ottenerne la
pubblicazione uguale a quella tipica di Access.
Relativamente all' importazione di dati da un file XML, la
compilazione di una tabella segue alcune regole. Le
istruzioni di elaborazione (che iniziano con < e il simbolo
?) e i commenti (che iniziano con < e il simbolo !) non
vengono importati. Il nome della tabella è ricavato
dall'elemento Documento del file XML, ovvero l'elemento
principale in un file XML che contiene tutti gli altri
elementi. Si noti che vengono importati solo i dati
dell'elemento. Qualsiasi dato di attributo viene ignorato.
I nomi dei campi nella tabella sono ricavati dai nomi dei
tag dell'elemento.
101
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Ad esempio, per il successivo file di dati XML
<?xml version="1.0" encoding="UTF-8" ?>
<dataroot>
<EMPLOYEES>
<LASTNAME type="client">Davolio</LASTNAME>
</EMPLOYEES>
<ADDRESS>
<HOME>123 Anywhere Avenue</HOME>
</ADDRESS>
</dataroot>
vengono fatte le seguenti assegnazioni quando i dati
vengono importati in una tabella di Access:
Tipo di oggetto XML ed Esempio Assegnazione di Access
Dichiarazione XML <?xml version="1.0" ?> Ignorato
Elemento documento <dataroot> Ignorato
Elemento dati <EMPLOYEES> Nome tabella
Elemento dati <LASTNAME> Campo della tabella
EMPLOYEES
Valore dati Davolio Valore campo
Attributo type="client" Ignorato
Elemento dati <ADDRESS> Nome tabella
Elemento dati <HOME> Campo della tabella ADDRESS
Valore dati 123 Anywhere Avenue Valore campo
Nota Per essere importato in Access, un documento XML
deve presentare un formato corretto. Ciò significa che, tra le
altre cose, il documento deve includere un elemento radice
contenente tutti gli altri elementi del documento.
102
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Un altro esempio: qui di seguito appare il file GAIA.xml
che importato in db1conv.mdb produce la tabella MAL
Query col numero del paziente, il suo nome e la diagnosi.
Si noti nella riga 1 del file GAIA.xml c’è il richiamo alla
codifica e nella riga 2 l’ aggancio ad uno schema XML
fornito dall’ ambiente di Microsoft Office a cui occorre
riferirsi per usare le tabelle di Access.
<?xml version="1.0" encoding="UTF-8" ?>
<datarootmlns:od="urn:schemas-microsoft-com:officedata">
<MAL_x0020_Query> (NOTA: _x0020 è eliminabile! )
<NUMEROMAL>30</NUMEROMAL>
<COGNOMEMAL>Gaia Gi</COGNOMEMAL>
<DIAGNOSIMAL>Depressione</DIAGNOSIMAL>
</MAL_x0020_Query> (NOTA: _x0020 è eliminabile! )
</dataroot>
Da osservare ancora nel file riprodotto la definizione di
Tag personalizzati (per es. NumeroMAL) caratteristica che,
come già accennato, rende XML un meta-linguaggio.
E HTML ? E’ arcinoto che HTML dà una descrizione del
formato dei dati, interpretata e visualizzata da opportuni
Client_Web = i browser (per es. Netscape.) Con HTML e’
possibile descrivere un documento ed anche collegarlo ad
altri documenti locali o remoti. Il collegamento e’
realizzabile con frasi del linguaggio HTML che specificano
il nome del documento e la sua locazione indicata come
URL (Uniform Resource Locator). Nella URL devono
essere indicati: il protocollo di trasmissione generalmente
http: (hyper text transfer protocol) che usa i protocolli di
trasmissione standard usati in Internet; il sito indicato con: //nome
del Server_Web/directory/nome_file
103
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
(Il nome del Server_Web e’ generalmente un nome simbolico come
per es. WWW.lab.univ e segue le specifiche di Internet. Si ottiene cosi’
il collegamento (link) al server lab.)
Esistono varie modalita’ per realizzare documenti interattivi che
concettualmente consistono nel trasmettere dal Client_Web (usando
pagine html) sia richieste che inserimenti di dati da estrarre o porre in
un D.B. e fisicamente sono spesso composti da 2 tipi di frasi in
linguaggi differenti: uno capito dal Client e l’ altro capito dal Server

 Interazione elementare: con HTML, la frase form ed i sottotag
si possono costruire maschere (forms) apposite da riempire con i dati
parametrici dell’ utente. Un Esempio: invio al server il nome dell’utente







<form
action=http://www.myser.it/cgi-bin/chisei.exe
method=post>
<p>Dimmi il tuo nome:
<input type=text name=“chisei” ></p>
<input type=submit >
(il tag input di tipo submit produce
</form>
un bottone)
Da questo file il Browser produce una pagina Web (la maschera) che l’ utente deve
riempire con suoi dati e poi inviare al Browser con un clic su SUBMIT. Nell’
esempio:
Dimmi il tuo nome:
SUBMIT QUERY
Altro possibile uso della frase form :
<FORM action= “inserdati.exe” method=“post” >
Nome: <INPUT type=”text” name “nome”> <BR>
Cognome: <INPUT type=”text” name “cognome”> <BR>
... (altre possibili informazioni) ...
<BR> <INPUT type=”submit” value=”INVIA”>
</FORM>
Anche qui il Tag <INPUT type=”submit” é rappresentato dal
browser come un “bottone” INVIA
che l’ utente usa per
sottomettere la maschera riempita al Client_Web.
104
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Questo la passa con i dati inseriti al Server_Web per l’esecuzione.
Il Server_Web attiva il programma CGI (indicato con locazione
/cgi-bin/ e nome
chisei.exe
nella form dell’ Interazione
elementare) passandogli i parametri ricevuti, per esempio col
method=post nello Standard Input. Con questi parametri, CGI può
interagire col D.B.Server per gli aggiornamenti sul d.b. Questo tipo
di comunicazione appare in Atzeni pag.141 vol.2.
 Altra tipo di semplice interazione per estrarre
informazioni: dal Client_Web, con un richiamo della
URL apposita effettuato nello stile di Internet (ossia per
es.http://WWW.nomeserver.univ.it/CGI-BIN/estrai?Cognome=Rossi)
si richiama il programma estrai scritto in C lang.
Questo al suo interno contiene le frasi di SQL precedute
da un simbolo di riconoscimento. (Per es. $Connect
database Tizio $Select stipendio from Tab1… servono per
connettersi al d.b. Tizio tramite il d.b.Server ed estrarre le
informazioni volute.) Eseguite le frasi SQL, i risultati
sono posti (tramite variabili locali del programma
estrai) in un documento Html da trasmettere al
Client_Web.
La trasmissione puo’ avvenire col canale di uscita standard
del programma: Stdout. In tal caso le frasi Html appaiono
come stringhe di printf nel programma estrai insieme alle
variabili locali (per es. int stipendio).
L’ esempio che segue è tratto da Atzeni&… ed. ’99,
pag.530.
105
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
.
.
106
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
 Esempio che è modificato nell’ edizione 2003 pag.143,
dove sono usate le librerie di Postgres “un DBMS
disponibile gratis al sito http://www.postgresql.org Si
tratta delle librerie CLI (Call Level interface)” di cui si è
accennato
in db2005p1 parlando di SQL nei linguaggi di
programmazione. Lì si era indicato l’ uso di “SQL incapsulato”
dicendo che questa era una delle 2 soluzioni per poter utilizzare SQL
da un programma scritto in uno dei linguaggi classici. L’ altra
soluzione è quella offerta da alcuni DBMS che mettono
a disposizione una propria CLI ossia una libreria di
funzioni inseribili nel programma C con #include e
richiamabili per realizzare:
la connessione col DBMS;
la query opportuna;
la visione e analisi del risultato in strutture a formato
relazionale; la chiusura di tutto (strutture e connessione).
Un esempio di uso di tutto questo è proprio il programma di
Atzeni &…di pag.143 citato: si tratta del cosìdetto script
CGI (scritto in C con HTML inserito dentro le printf) che
permette la pubblicazione in pagine web dinamiche di
quello che interessa all’ utente relativamente ad una base di
dati. Dinamiche proprio come sono dinamici i desiderata
dell’ utente.
Analisi delle prestazioni di CGI: i pregi sono la semplicità
(il codice è semplice anche se un po’ farraginoso) e l’
indipendenza dalle piattaforme; le limitazioni sono la
lentezza derivata dal funzionamento tipico del Web Server
che non prevede sessione d’ utente e condivisione risorse.
Il Web Server genera un nuovo processo CGI ad ogni
richiesta e lo chiude alla fine della costruzione della
risposta senza alcuna memorizzazione dei risultati
condivisibili con altre richieste.
107
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Tutto ciò provoca altissimo sovraccarico di esecuzione
per la creazione e distruzione di processi ed indica la
necessità di un potenziamento del Web Server ed un’
architettura più complessa di quella con CGI esterna.
Il miglioramento delle prestazioni si può ottenere
creando processi solo in fase di inizializzazione del
sistema e conservandoli per necessità successive. Si
mantiene lo stato del sistema (processi, risorse e
informazioni) permettendo anche la condivisione delle
risorse.
 Quanto detto sopra si realizza potenziando il Web
Server utilizzando architetture server side che
arricchiscono il Web Server usando per esempio
strumenti di sviluppo costruiti dalle varie societa’ di
Software: lo strumento di sviluppo fa parte del
Server_Web come una delle unita’ esecutive del
processo multi-thread e viene attivato ed inizializzato
una volta, senza bisogno della connessione,
allocazione, inizializzzazione ad ogni chiamata come
avviene per il programma CGI (programmazione
multiprocesso…) Quindi maggiore efficienza per gli
strumenti di sviluppo! Esistono vari tipi di strumenti di
sviluppo che producono template o bozze di pagine
Html e contengono linguaggi di scripting server side
per mettere in evidenza le istruzioni per il calcolo delle
porzioni dinamiche separandole dalle parti di
sagomatura della pagina.
Un altro tipo di architettura server side è quella dotata di
“application server” (un server rivolto alle applicazioni di cui si
è già accennato) che fornisce un ambiente di esecuzione con
caratteristiche simili a quelli dei DBMS, ma legato alla
piattaforma di base (SUN, Microsoft ….)
108
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
 La strada per arrivare a questa soluzione fu quella dei
”potenziamenti” via via sempre più efficienti della
tecnica CGI. Una sequenza di migliorie é stata
effettuata coll’ utilizzo di un ambiente Java dotato sia di
JVM (Java Virtual Machine: macchina realizzata a
software per l’ esecuzione di programmi Java tradotti in
bytecode), sia di un Servlet Container con le
funzionalità di poter scrivere e memorizzare programmi
Java per il calcolo dinamico delle pagine. Questi
programmi si chiamano Servlet e hanno funzioni simili
agli script CGI. La differenza sta nel fatto che i Servlet
dentro il Servlet Container dispongono dell’ ambiente
a oggetti che facilita l’ interazione con il Web Serwer,
senza la richiesta delle variabili come deve fare CGI.
Inoltre i Servlet hanno la possibilità di usare JDBC per
la connessione alla b.d. In definitiva:
Servlet container: un programma Java che fornisce un
ambiente persistente di esecuzione per applicazioni Web ed
espone le caratteristiche del Web server come oggetti Java;
Servlet: l’analogo di uno script CGI nel mondo Java
Comunque si ottengono ancora script che oltre ad occuparsi
della stampa dei risultati devono dare le direttive per il loro
posizionamento ossia devono preoccuparsi della bozza
(template) delle pagine dinamiche. Si arricchisce quindi l’
ambiente Java (estensione del Web Server!) anche di Java
Server Page (JSP) linguaggio di scripting server side che
sfrutta le bozze di pagine già programmate nel Servlet
Container. La bozza si può intendere come un file HTML
esteso con espressioni ed istruzioni (più in generale
componenti) di Java.
109
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Il codice testo+script è interpretato dal server, mentre il
browser riceverà HTML puro che utilizzera’ per la
visualizzazione del documento.
Lo strumento di sviluppo (o gestore delle bozze, qui Servlet Container abilitato all’
esecuzione di file JSP) traduce la bozza in un programma Servlet, lo compila e lo
esegue collegandosi al d.b. (o tramite JDBC o tramite il d.b.Server) aprendo la strada
al file HTML.
Le componenti di JSP possono essere:
Direttive
con incapsulamento
Espressioni Java
“ “
Funzioni Java
“ “
Dichiarazioni
“ “
<%@…%>
<%=…%>
<% …%>
<% !…%>
Un esempio dalla tesi < %@page import=”java.util.*” %>
Di Cristina Camozzi: <HTML>
(file Cri.jsp)
<BODY>
<%!
Dichiaraz.
Eseguite al
primo caricamen.
Date thedate = new Date();
{ System.out.println(“In getDate() method”);
return thedate;}
%>
Hello! The time is now<%= getDate() %>
</BODY>
</HTML>
Si noti che con la direttiva <%@ si possono importare: file,
librerie, Package e con <% si possono raggruppare in un solo
blocco le definizioni di metodi e variabili. Mentre le dichiarazioni
sono eseguite al primo caricamento delle pagine, le espressioni
Java sono valutate al run time richiamate dal file HTML seguente:
<HTML>
<BODY>
Hello! The time is now<%= new java.util.Date() %>
</BODY>
</HTML>
Se dal browser (Client_Web) si richiama il file Cri.jsp si ottiene
una delle solite pagine Web con la stringa:
Hello! The time is now Mon Jan 26.11 ....
110
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
 Un gruppo di studenti dell’ a.a. ‘99-2000 ha usato
questo tipo di interazione per realizzare tramite una
pagina Web dinamica un questionario con varie
domande. Per costruirlo gli studenti hanno usato
prodotti della Microsoft e la scelta fu determinata dall’
Utente: sul Server_Web gli studenti installarono le
librerie di Front Page e il prodotto IIS Internet
Information Server (per Windows_NT) che supporta lo
strumento ASP ossia Active Server Page analogo a JSP.
(Presso un server compatibile con le Active Server Pages (ASP) si
possono installare siti Web usando per esempio Personal Web
Server, compatibile e presente all’interno del CD-Rom di
installazione dei S.O. Microsoft dal Windows 98 in poi.)
  Il file ASP costruito dagli studenti (detto pagina ASP
o index.asp) contiene il codice Html usato dal
Client_Web per la visualizzazione e il codice Visual
Basic Script eseguito sul Server_Web che effettua il
collegamento ad un d.b. Access (questionario .mdb) con
i dati raccolti.
Il Visual Basic Script e’ un linguaggio orientato agli oggetti che
deriva dal Visual Basic, linguaggio base di Access per creare per
es. Moduli di Access. Visual Basic Script e’ solo interpretato (non
compilato) ed eseguito: puo’ utilizzare oggetti del Sistema
Operativo utili per la gestione del D.B. (come
ADODB.Connection, ADODB.recordset, ADODB.command...)
 Il Visual Basic Script (come JSP) e’ inserito, racchiuso
tra <% e %> nel codice Html che realizza la
visualizzazione del questionario sul Client_Web. Una
volta riempito il questionario con le sue risposte, l’
utente lo invia al Server_Web (premendo un tasto
Submit alla fine del questionario stesso).
111
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
 Entra in funzione il codice scritto in Visual Basic Script
che recupera i valori delle risposte come parametri da inserire
nel d.b., si connette al d.b. ossia al file questionario.mdb di
Access, e se i controlli sulla correttezza delle risposte non
segnalano errori, le inserisce nella tabella.
  Un’ applicazione simile a questa nella sostanza, anche
se diversa per gli strumenti ed il linguaggio usato e’
stata fatta nell’A.A. 2001-02 da un altro gruppo di
studenti che hanno utilizzato il Sistema Oracle ed il
relativo Web Server Apache integrato tra i prodotti di
Oracle (cfr. note su Oracle). Apache puo’ essere
configurato con l’ interprete del linguaggio di scripting
PHP. Si tratta di un linguaggio che puo’ contenere frasi
proprie, frasi SQL, essere intercalato col linguaggio
HTML e (con particolari accorgimenti di installazione)
richiamare l’ interfaccia OCI (Oracle Call Interface) che
permette alle applicazioni esterne di usufruire delle
funzionalita’ di Oracle. Non volendo usare il PHP
Language si puo’ usare il Linguaggio Java e JSP…
 E’ quello che hanno fatto altri studenti che riferendosi
all’ architettura a 3 tier presentata precedentemente:
hanno realizzato il Thin Client con Internet Explorer, il
terzo livello con Oracle Enterprise Edition che fa da
d.b.Server ed il Middle Ware con l’utilizzo combinato
 del Web Server Apache,
 della tecnologia di Sun Microsystem per la creazione
di pagine web dinamiche server–side, Java Server
Pages (JSP),
 dell’ Oracle implementation delle specifiche JDBC
(Java Data Base Connectivity) un insieme di classi
Java per l’ accesso al d.b.
112
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Ancora: altri studenti hanno realizzato un’ applicazione
simile, anche se più generale, con Mysql un RDBMS che
può essere scaricato gratis dalla rete. Hanno usato il Web
Server Apache ed il linguaggio PHP; il prodotto costruito
oltre ai risultati richiesti comprende anche un’ interfaccia
User friendly per la realizzazione di altre applicazioni
simili. In sintesi le operazioni ed i prodotti necessari sono:
 Client Web (browser);
 Server Web (Apache);
 PHP (acronimo ricorsivo di PHP Hypertext
Preprocessor) linguaggio di scripting open-source per
la realizzazione di pagine Web dinamiche;
 configurazioni di: S.O., Server Web, PHP in modo che
possano comunicare e lavorare insieme;
 editor di testo;
 DBMS (MySql), tutti prodotti o presenti o scaricabili
da Internet.
La differenza tra l’ utilizzo di script PHP e CGI sta nel fatto
che uno script PHP è “tradotto” dal ParserPHP in pagine
HTML interpretabili dal browser: in questo modo si
possono scrivere frasi di PHP senza doverle sempre
mescolare ai tag di HTML.
 Un altro esempio di utilizzo di strumenti di sviluppo
che favoriscono l’ accesso a siti Web sono le funzionalita’
del linguaggio PL/SQL (SQL esteso al Procedural
Language PL) di Oracle che permettono di generare
interfacce Html. Si tratta di una generazione simile a quella
ottenuta col programma estrai.C, ma qui il ruolo svolto dal
C nel programma CGI e’ effettuato dallo stesso linguaggio
SQL che lavora sul d.b.
113
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Nella versione di Oracle si usa PL/SQL, linguaggio
procedurale in cui con l’ istruzione:
htp.print(‘<HTML> <HEAD> <TITLE> … ‘)
si generano le frasi Html.
Come si intuisce dalla serie di esempi gli strumenti
necessari per le varie applicazioni diventano sempre più
numerosi estendendo il lavoro che il Web Server deve
svolgere. Da qui la necessità di suddividere i compiti del
Web Server e passare (per interazioni più articolate e con
carichi di lavoro notevoli e variabili) ad architetture a più
livelli con l’ introduzione di un Application Server
connesso al Web Server con il compito di effettuare oltre a
tutto il lavoro svolto dagli strumenti di sviluppo anche:
Salvaguardia ed eventuale ripristino da guasti,
Gestione delle transazioni,
Gestione delle risorse condivise,
Interoperabilità con altri sistemi …
Gestione di ambienti sia misti che no, ma con possibilità di
usare linguaggi a oggetti con gestione di diversi protocolli
applicativi (per es. CORBA acronimo di Common Object
Request Broker Architecture ossia Architettura per la
gestione di richieste a Oggetti condivisi.),
Trasparenza nella eventuale distribuzione dell’ Application
Server stesso. Si Ottiene così un WIS ossia un Sistema
Informativo su Web.
Un esempio è quello già indicato realizzato in un ambiente
“tutto Java”, con programmi in Java (e tradotti nel codice
nativo del computer in cui girano) e con strumenti Java
come la piattaforma J2EE.
114
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Tutti questi strumenti testimoniano la continua evoluzione
delle modalita’ di comunicazione tra D.B.S. ed il mondo di
Internet. La potenzialita’ del linguaggio Java ha dato un’
accelerazione a tale evoluzione denotata, per esempio,
anche dalla facilita’ di pubblicare in Internet una tabella di
Access o un suo report. (Già in Acccess ‘95 bastava seguire le
indicazioni sul menu’ File di Access alla voce Salva come Html, per
ottenere automaticamente le pagine Web con i dati desiderati da porre in
un file locale o in una URL specificata. In Acccess 2000 si è visto che un
Report si può salvare come file Xml,… Questo collegamento tra Access e
Web e’ anche un esempio dell’ evoluzione dei d.b. verso dati
multimediali e dei DBMS verso O.O.D.B.M.S. ossia Object Oriented
DBMS. Già in Access95 tabella o dato era richiamabile col suo
riferimento proprio come gli oggetti tipici degli ipermedia usati col Web.
Esempi tipici in Access sono gli attributi di tipo OLE già citati.
L’ evoluzione appare anche dal testo di Atzeni (ripetto ai
precedenti) che presenta la costruzione di un sito Web in
modo generale con la “progettazione di applicazioni Web”
argomento che, nelle precedenti edizioni, era trattato
parzialmente.
… e con i DBMS piu’ moderni ? … l’ evoluzione continua!
Tipico esempio di cio’ e’ Oracle ed i continui nuovi release
del d.b.System detto Oracle Server disponibile su diversi
Sistemi.
Segue una breve sintesi delle caratteristiche essenziali di
Oracle: per il DBS Oracle si e’ scelta questa semplice
presentazione, uno “schizzo” di guida, data la complessita’
del Sistema. Diverso e’ stato il comportamento per Access
(molto noto e facile da usare) le cui caratteristiche sono
state introdotte in modo sparso mentre gli accenni fatti negli
anni passati a DB3+ sono stati tralasciati.
115
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Oracle
Con i suoi sempre nuovi release (versioni) e’ un tipico
esempio dell’ evoluzione continua dei DBS. Fu immesso
nel Mercato nel 1979 dalla Relational Software Inc. di
Belmont (California), Societa’ che ha poi preso il nome di
Oracle Corporation. E’ stato il primo prodotto basato sul
linguaggio SQL ad essere commercializzato precedendo
tutti gli altri, anche quelli della IBM. E’ compatibile (e
collegabile in rete) con altri DBS (per se. DB2) con vari
Sistemi Operativi (Window, Unix,...)
Uno degli aspetti positivi di Oracle Server e’ proprio la
portabilita’ e interoperabilita’ (e quindi pare appropriato l’
appellativo Server). Queste caratteristiche pero’ producono
anche un suo limite: assenza di un’ interfaccia grafica
amichevole e generale. In alcune versioni esistono varie
interfacce, ma pur essendo molto utili non sono complete.
Un esempio composito: nella versione 8i per il sistema
Window2000, il DBA puo’ gestire l’intero ambiente Oracle
(anche distribuito in una rete locale) col prodotto Oracle
Enterprise Manager (System Management) che ha un’
interessante architettura a 3 livelli. A livello 1 (Client) c’e’
la Java Console che fornisce l’ interfaccia grafica per il
DBA. Il DBA puo’ cosi’ controllare tutti i nodi delle rete
Oracle tramite il Management Server, (servizio del S.O.) a
livello 2… (ma per Oracle9i non si trova su WindowsXP home-edition
… per Oracle 8i su Windows2000 non si avvia …) e dovrebbe essere
in collegamento con gli Intelligent Agent (livello 3).
Questi possono agire sui d.b. locali posti nei nodi delle rete
locale eseguendo tutti i compiti-funzioni richiesti dal
System Management. (Si usano i vocaboli Inglesi per essere
in sintonia con la Guida di Oracle)…. E gli utenti normali ?
116
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Sempre nella stessa versione 8i, esiste l’ interfaccia grafica
DBAStudio (integrata nella versione 9i in Enterprise
Manager) che facilita la connessione al d.b. locale, la sua
Creazione e/o Aggiornamento, la sua Gestione tramite
Editor particolari per: Schemi, Tabelle, Utenti ed i loro
privilegi di Sicurezza… ambiente Oracle fatto di:
 d.b., componenti, programmi di utilita’ (come SQL*Plus
con la sua Guida) e alcune “Interface”
 Supporto PL/SQL (Procedural Language di cui si e’ gia’
indicata la possibilita’ di generare frasi Html)
 Parallel server, possibilita’ di gestire repliche di d.b. per
piu’ master e Oracle J-Server (nome del motore Java),
 Strumenti per gestire i Tipi di dati astratti (O.O. con
CORBA ed EJB componenti implementate in Java ed
eseguibili entro il d.b. per gestire Oggetti distribuibili tra
+Client) e poi Times Series, Spatial date, Information
Retrieval... Un d.b. Oracle e’ identificato da un nome di db
globale (di solito nel formato “nome_db.nome_dominio”
es. dbmary.ds.units.it) e da un Identificativo di Sistema
(SID) relativo all’ istanza del db. Ad ogni db Oracle si
accede tramite UserName & Password (per es. UserName=
System, Password=Manager da cambiare al primo accesso ).
Come componenti del d.b. si intendono il Dizionario dei
Dati, le Tabelle, le Viste, gli Indici, i Trigger ed i Cluster
che permettono di raggruppare i dati posti nelle Tabelle
a secondo del loro uso piu’ frequente.
Programmi di utilita’ sono le componenti essenziali di
Oracle Server. Per esempio: il nucleo centrale che gestisce
il d.b. e’ caricato in (e scaricato dalla) C.M. da applicazioni
di tipo IOR (Initialise Oracle) attivate alla partenza e
arresto del Sistema.
117
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Il nucleo inizializza il d.b. con i parametri che all’ atto della
configurazione del d.b. stesso sono stati posti in un file
(Init.ora che in ambiente operativo Windows sta in
“Oracl_base”\admin\SID-directory\Pfile\ dove Oracl_base
e’ il nome del direttorio iniziale (C:\oracle\ora92). Si noti che
la configurazione del d.b. avviene un sola volta per es.
subito dopo l’ installazione di Oracle. Per l’ installazione cfr.
paragrafo Installazione tra 4 lucidi). Il nucleo permette l’uso
del d.b., la sua manutenzione, il monitoraggio attivando
anche altri programmi di utilita’. Tra i parametri di Init.ora
oltre al nome del db e al suo SID figurano quelli che
servono per ottimizzare le prestazioni del d.b. fissando per
esempio aspetti e dimensioni della System Global Area
(SGA) ossia l’ area di C.M. usata da Oracle per trasferire
ed elaborare i dati. A questo scopo si puo’ per es.
incrementare il valore del parametro BUFFERS ossia il #
di buffer presenti in memoria diminuendo cosi’ il # di
accessi al disco con miglioramento delle prestazioni del
Sistema.
L’area di disco riservata ad un d.b.Oracle si compone di
alcune partizioni (Tablespace) destinate a contenere tutte le
componenti del d.b. e poste in Oracl_base\ORADATA\dbname(directory)\. Alla configurazione del d.b. e’ generata
una prima partizione di nome SYSTEM01. DBF in cui sono
registrati e mantenuti automaticamente il Data Dictionary con la
definizione delle tabelle, viste, procedure necessarie per il
d.b.Oracle. Alla partizione di sistema sono aggiunte altre
partizioni destinate a contenere le tabelle degli USERS, per
esempio in USERS01.DBF saranno poste le tabelle del primo
utente, mentre quelle temporanee andranno in TEMP01.DBF
(partizione TEMP) e gli Indici in INDX01.DBF (partizione
INDX).
118
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Sempre in Oracl_base\ORADATA\db-name(directory)\
sono i file di Log che si chiamano REDO01,02,03 e che
sono usati ciclicamente per conservare memoria di tutte le
operazioni fatte.
Ancora allo stesso indirizzo sono posti i file di controllo
con la struttura fisica del d.b. che servono al Sistema per far
partire il d.b. … NON CANCELLARLI !
Ogni d.b. contiene almeno uno Schema per ogni utente:
ogni Schema (che ha il proprio nome) raggruppa le
componenti del d.b. come Tabelle, Viste, Utenti, Indici,
Cluster, Trigger, Object… Per molte di queste componenti
esiste un Wizard che ne facilita la costruzione, anche se
questa si puo’ realizzare con Editor appositi e naturalmente
usando SQL*Plus. Tra le componenti citate (ma ce ne sono
altre!) i Cluster ed i Trigger non sono stati mai usati.
Il Clustering (generalmente sfruttato dall’ Ottimizzatore!)
e’ una tecnica di memorizzazione dei dati che produce un
aumento delle prestazioni di ricerca dei dati nelle tabelle
memorizzando fisicamente vicini dati che sono vicini
logicamente. Una sua applicazione riguarda le tabelle con
una o piu’ colonne in comune che siano frequentemente
oggetto di operazioni di join. Le tuple delle tabelle con
valori uguali nelle colonne in comune sono poste nello
stesso blocco di disco diminuendo i tempi di scansionedisco. Un esempio: nel d.b. Supplier-Part ritenendo frequenti le
interrogazioni richiedenti i nominativi dei Supplier associati ai
nomi delle Parti relative alla stessa Citta’ di origine, si puo’
creare un cluster delle tabelle S e P. Chiave del Cluster sara’ il
nome della Citta’. Un blocco di questo Cluster conterra’ una sola
volta il valore della chiave e per ogni tupla i relativi valori delle 2
tabelle. In Oracle8i si puo’ creare un Cluster da DBAStudio anche
tramite un apposito Wizard col comando Create Cluster .
119
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
A proposito di Cluster in Oracle9i esiste anche la RAC
(Real Aplication Cluster), Architettura Software che
permette di sfruttare le possibilità di più computer
interconnessi
in
modo
da
poter
eseguire
contemporaneamente transazioni su un d.b. condiviso.
I Trigger (reazioni o regole attive che seguono il paradigma Evento
Condizione Azione ECA (cfr.2005p1 e Atzeni &… ed. 2003 cap.7,
Vol.2) sono procedure la cui esecuzione e’ innescata da un evento quando
si verifichino le condizioni che contengono. L’ evento puo’ essere l’
introduzione di dati incongruenti (per es. fuori range) o la tentata
eliminazione di valori che l’ Utente definisce riservati … Le condizioni
sono opzionali, mentre e’ obbligatorio stabilire il tempo in cui il trigger
deve essere eseguito, per esempio prima dell’ evento se questo e’ un
Delete. In Oracle8i-9i i trigger possono essere creati con l’interfaccia
grafica e l’ apposito metodo di creazione facilitata dove si scrive in
SQL/PL solo il corpo del Trigger (if evento fai…) mentre le altre
informazioni sono introdotte con l’ accensione/spegnimento di apposite
opzioni. (Per es. il corpo di un trigger funzionante in dbmary e schema
ANNAM (chiamatoTRO) è: BEGIN DELETE FROM ANNAM.S WHERE
S.S# = 's9' ; end; e nessun’ altra opzione: qui il WHERE sostituisce l’ if !
Come effetto ogni tupla con S#=S9 non è accettata.)
Anche in Access esiste la possibilità di usare i trigger, ma solo relativamente,ai progetti di
Microsoft Access (.adp) che si usano per connettersi ad altri D.B.Access su SQL-Server.
Definizione di trigger
Un trigger è un tipo particolare di stored procedure che viene attivato quando si modificano i dati di
una tabella specifica tramite una o più operazioni di modifica dei dati, quali UPDATE, INSERT o
DELETE. I trigger possono eseguire query su altre tabelle e possono includere istruzioni SQL
complesse. Risultano particolarmente utili per applicare regole aziendali o soddisfare requisiti
complessi. Ad esempio, è possibile stabilire se consentire l'inserimento di un ordine in base allo
stato dell'account del cliente. I trigger sono inoltre utili per applicare l'integrità referenziale, che
conserva le relazioni definite tra le tabelle quando si aggiungono, si aggiornano o si eliminano righe
di tali tabelle. Tuttavia, la soluzione migliore per applicare l'integrità referenziale consiste nel
definire vincoli di chiave primaria e di chiave esterna nelle tabelle correlate. Se si utilizzano
diagrammi di database, è possibile creare una relazione tra tabelle per ottenere automaticamente un vincolo di chiave
esterna.
Vantaggi dell'utilizzo di trigger
I trigger sono utili per i motivi descritti di seguito.
120
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005

I trigger sono automatici e vengono attivati immediatamente in caso di modifiche ai dati di
una tabella, ad esempio tramite un'immissione manuale o un'azione di un'applicazione.

Tramite i trigger è possibile apportare modifiche a catena alle tabelle correlate nel database. Ad
esempio, è possibile scrivere un trigger di eliminazione sulla colonna title_id della tabella titles in
modo che provochi l'eliminazione delle righe corrispondenti in altre tabelle. Il trigger utilizza la
colonna title_id come chiave univoca per individuare le righe corrispondenti nelle tabelle
titleauthor, sales e roysched.
 Tramite i trigger è possibile applicare limitazioni più complesse di quelle definite tramite i
vincoli CHECK. A differenza di questi, i trigger possono fare riferimento alle colonne di altre
tabelle. Un trigger può, ad esempio, annullare gli aggiornamenti che tentano di applicare uno sconto
(memorizzato nella tabella discounts) ai libri (memorizzati nella tabella titles) con un prezzo
inferiore ai 10 euro.
Tornando ad Oracle, con “Interface” si intendono i prodotti
utilizzabili da utenti e/o applicazioni che si vogliono
collegare al d.b. Per esempio ecco alcuni strumenti di
Interfacciamento:
 per il Sistema Window 2000 (release 8i) l’ interfaccia
grafica DBAStudio gia’ indicata che ha diverse possibilita’ di
aiuto per l’utente inesperto di Oracle, ma non tutte quelle che si
vorrebbero …
 SQL*Net per la gestione di Oracle in rete locale
 Oracle Call Interface (OCI) per interazioni con Oracle
Server da un’ applicazione esterna
 Web Server Apache: un Web Server integrato tra i
prodotti di Oracle che permette di accedere al d.b. tramite
un’ interfaccia Web. Per questo tipo di connessione si
possono usare varie alternative: qui di seguito se ne ricorda
una.
Come gia’ indicato esiste il prodotto JDBC (equivalente di
ODBC della Microsoft) che funziona in ambiente Java e
contiene le specifiche di classi
 per la Connessione al d.b.
 per
Aggiornamenti
del
d.b.
(col
metodo
executeUpdate()),
121
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
 per Interrogazioni al d.b. (col metodo executeQuery())
 ….
Usando queste applicazioni, (ma ce ne sono altre come
l’uso di PHP un linguaggio di scripting invece di Java di cui
si e’ gia’ accennato) l’ Architettura di rete a 3 strati (o
livelli = tier) gia’ presentata si puo’ realizzare ponendo:
 nel Thin Client: Internet Explorer;
 nel Middle_Ware: JDBC, JAVA, APACHE e le
applicazioni Web (pagine JSP =Java Server Page,
equivalenti alle pagine ASP di Microsoft dove pero’ il
codice e’ scritto in JSP -e non in Visual Basic Scriptintercalato ad Html);
 ed al terzo livello il d.b. col “suo” d.b.Server: Oracle
Enterprise Edition.
Oracle presenta tante altre possibilita’ e funzionalita’ che
possono stimolare curiosita’. Si ricordano ad esempio oltre
ai Java Beans (EJB) programmi Java e CORBA ( Common
Object Request Brocker Architecture cfr. Basi di dati a
Oggetti)
 la possibilita’ di effettuare On-Line Analitical
Processing e On-Line Transaction Processing (funzioni
OLAP e OLTP); elaborazioni con dati replicati in Data
Warehouse (usando configurazioni estese a tali scopi);
 utilizzo di indici spaziali con strutture dati ad albero a piu’
dimensioni come R-tree, Quadtree (di cui si parlera’ in 2005p3)
utilizzo di XML: Oracle9i permette la creazione di
d.b.XML (o XDB) progettato per accedere a oggetti XML
tramite un percorso gerarchico più rapido. Questo è quanto
afferma la guida di Oracle9i.
122
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Installazione di Oracle9i per Windows 2000Xp
NOTA: ad Installazione eseguita si è scoperto che Oracle9i
funziona bene solo con Windows 2000Xp Professional
Edition… Comunque occorre:
 iscriversi al sito http://technet .oracle.com
 eseguire il download di una versione trial cercando Oracle
9i Database
 Si ottengono 3 file Disk1.zip, Disk2.zip, Disk3.zip
 Si scoppattano i 3 file e nella directory del primo file appare
il setup.exe con un’ icona a forma di disco. Uno, due Clik sopra non
producono nulla. Invece cliccando sulla cartella Install parte l’
installazione con una schermata di presentazione dell’
Installazione Guidata ed il tasto Avanti: si fa clic su questo
e alla schermata successiva vengono richieste le posizioni dei
file di origine e di destinazione (già presenti per default: per es.
C:\oracle\ora92). Clic sul tasto Avanti e compaiono i Prodotti
disponibili (si sceglie Oracle9i Database 9.0.1. …); alla
schermata seguente il Tipo di Installazione é Standard
Edition. Al successivo Avanti è chiesto il #porta per l’ uso
di Recovery (si lascia quello predefinito). Al Clic sul tasto
Avanti compare la schermata Configurazione del database
(va bene Uso generico) e poi la schermata Identificazione
del d.b. dove occorre scrivere sia il nome del d.b.globale
(dbmary.ds.units.it) che il suo identificatore SID (dbmary).
Clic sul tasto Avanti ed è richiesta la directory per i files di
d.b. (per default C:\oracle\oradata). Al successivo Avanti é
richiesto il set di caratteri (predefinito) e finalmente dopo la
schermata sul Riepilogo di Impostazioni e Scelte fatte, al
successivo Avanti inizia la Sessione di Installazione (che dura
circa 30-40min.) ed in cui vengono anche richieste le PSW. Ad
installazione completata, clic su Avanti e appare la
schermata sugli Strumenti di Configurazione dei vari servizi
integrati (avviati automaticamente ad ogni ripartenza) ed il prompt
di comandi relativo al server Web Apache. E poi FINE installazione.
123
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Modello reticolare (cenni)
Terminologia del CODASYL (Comitato Data System
Language)
Architetettura dei Sistemi a 3 livelli: Schema fisico, Logico,
Sottoschema (wiew).
Tipi di dati:
DATA ITEM  Dato atomico elementare (Attributo,
Campo);
RECORD  Insieme di DATA ITEM, rappresentato da
Es. Studente
con esemplari: Paolo Ros , Pia Verdi
…
SET  Associazione tra RECORD con proprio nome: puo’
essere di tipo 1:1, 1:N, N:M.
Dstingue: RECORD OWNER e RECORD MEMBER
implicando una GERARCHIA, ma NON una struttura del
tutto GERARCHICA.
Es.
Tipo Set
Esemplare
OWNER
Studente
Paol Ros
Informatica
ES-STUD (SET)
Esame
MEMBER
Fisica
Matematica
ed anche con tutti i dettagli come:
Identificatori (#matr. Stud., CodeEsame),
NomeStud, NomeMateria, Date, Fac., Voto
…
…ma la rete ? dov’e’ il Network Model ?
124
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Appare con l’ esempio seguente:
OWNER Studente
STUD-M
MEMBER
Esame
OWNER
ES-M
Media
MEMBER
Un RECORD MEMBER puo’ avere piu’ OWNER e servire
da collegamento ! QUINDI: Struttura Reticolare (Grafo):
Esame
Studente
ES-M
Amministr.
STUD-M S-Tax
Media
Tasse
A-Tasse
…
Visione Modello CODASYL o Reticolare:
il d.b. appare come una piramide: il vertice o Punto di
entrata e’ detto System: Tipo RECORD senza informazioni,
ma usato nei collegamenti.
System
Segue un esempio 1 pag. tratta da Date del progetto e dello
schema Logico del d.b. Parti, Fornitori, Forniture espresso
nel linguaggio tipico di un DBMS reticolare, nell’ esempio
di IDMS (Integrate D.B.M. System) della Computer
Associate. Sono indicate le specifiche di riferimento all’
implementazione che non dovrebbero apparire nello
schema Logico.
125
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
126
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Modello gerarchico (cenni)
Al primo impatto il d.b. appare come un prisma diviso a
fettine ossia un insieme di esemplari tutti dello stesso tipo
di Albero a N rami o anche un insieme di registrazioni
logiche (RECORD o SEGMENTO) concatenate ad Albero.
Nell’ Albero si distinguono: il segmento padre  Parent ed i
Segmenti Figli.
Un esempio di DBMS gerarchico e’ IMS/VS (Information
Management System/Virtual Storage) della IBM: la
rappresentazione che segue ha la relativa descrizione nello
Schema Logico  D.B.D. (d.b. Description) tipico di IMS.
Persona: Code, Nome, …
Occupazione: Field1, 2,…
Figlio: …, …
Studi:…, …
DBD
SEGM
Field
Field
…
SEGM
Name = Personale
Name = Persona, Byte = …
Name = Code, Byte = …
Name = Nome, Byte = …
Name = Occupazione, Parent = Persona, Byte = …
127
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Limiti del Modello Gerarchico:
le specifiche di riferimento all’ implementazione appaiono
nel DBD ed inoltre e soprattutto nella visione data ci
sarebbero grossi problemi per le associazioni di tipo N:M.
Un tipico esempio riguarda le automobili coinvolte in un
incidente. Memorizzando l’ albero con Parent Automobile e
tra i figli anche gli incidenti in cui l’ Automobile e’ stata
coinvolta sarebbe semplice trovare gli incidenti di una data
Automobile, mentre occorrerebbe scorrere tutto il data base
per ritrovare tutte le Automobili coinvolte in un dato
Incidente.
Col modello indicato si ha ASIMMETRIA di trattamento.
QUINDI il modello e’ stato esteso con l’introduzione di
puntatori e 2 tipi di Albero: uno con Parent Automobile e
tra i Figli un tipo puntatore all’ altro tipo di Albero con
Parent Incidente e tra i Figli un tipo puntatore all’
Albero Automobile.
A livello di rappresentazione il prisma appare diviso in 2
porzioni (le cui fettine sono collegate da puntatori
reciproci) ciascuna relativa ad uno dei 2 tipi di albero
considerato; a livello di schema logico si hanno 2 DBD e
per nascondere le modalita’ di implementazione si
introduce la nozione di Albero logico (come appare)
contrapposta a quella di Albero fisico (come e’
implementato). Nell’ esempio: Albero logico e’ quello con
Parent Automobile e tra i Figli gli incidenti o quello con
Parent Incidente e tra i Figli le Automobili; l’ Albero fisico
ha i puntatori.
Seguono le possibili realizzazioni degli alberi in IMS/VS:
fotocopia da Date, 1 pagina.
128
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
129
Anna Maria Carminelli Gregori: Appunti su d.b. parte2 A.A. 2005
Appendice parte 2
A
L
T
R
I
Gestore
Metodi di
Accesso
M
O
D
U
L
I (*)
Sc
an
Ma
na
ger
B+
Tree
Man
ager
Buffer
Manager
DBS
Scheduler
Primitive
del File_
System e/o
del
D.B.M.S.
LOG
Schema di architettura dei DBS relativa all’ accesso al d.b. estendibile
anche al contesto client-sever (da Atzeni &… Fig. 9.1 - 10.1 ed. 1999).
Nell’ ultima ed. 2003 gli schemi di Atzeni &… sono in una forma diversa,
sullo stile di quello riportato a pag. 10 di DB2005P1. Ho preferito questo
tipo di rappresentazione (arricchendola con la Tabella dei Lock), per la sua
completezza nella schematicità.
( * ) Tra gli ALTRI MODULI ci sono l’ Ottimizzatore, a monte del
Gestore dei Metodi di accesso, ed (a valle) il Controllore dell’ affidabilita’
con costruzione ed uso del file LOG (un archivio persistente dove sono
registrate tutte le operazioni svolte dal DBS) che permette il ripristino
dello stato precedente un malfunzionamento.
Fine Parte 2.
130