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: CodiceNome_Prodotto,Indirizzo, Partita_Iva, Nome_Fornitore Partita_IvaNome_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{ NAssociazione 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 RETRIEVALOLAPDATA 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