Copertina
Autore Raghu Ramakrishnan
CoautoreJohannes Gehrke
Titolo Sistemi di basi di dati
EdizioneMcGraw-Hill, Milano, 2004, , pag. 386, cop.fle., dim. 170x240x23 mm , Isbn 978-88-386-6114-3
OriginaleDatabase Management Systems [1998]
CuratoreTiziana Catarci
TraduttoreAlessandro Grimaldi
LettoreCorrado Leonardo, 2005
Classe informatica: sistemi , informatica: linguaggi
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice

Prefazione                                              xiii

1   Introduzione ai sistemi di basi di dati                3

    1.1 Gestione dei dati                                  4
    1.2 Una prospettiva storica                            5
    1.3 File system verso DBSM                             7
    1.4 Vantaggi di un DBMS                                8
    1.5 Descrivere e memorizzare dati in un DBMS           9
        1.5.1 Il modello relazionale                      10
        1.5.2 Livelli di astrazione in un DBMS            11
        1.5.3 Indipendenza dei dati                       13
    1.6 Interrogazioni in un DBMS                         14
    1.7 Gestione delle transazioni                        15
        1.7.1 Esecuzione concorrente di transazioni       16
        1.7.2 Transazioni incomplete e crash di sistema   17
        1.7.3 Punti da ricordare                          17
    1.8 Struttura di un DBMS                              17
    1.9 Persone che lavorano con le basi di dati          19
    1.10 Domande di riepilogo                             20
    Esercizi                                              21
    Esercizi basati su progetto                           22
    Note bibliografiche                                   22

2   Il modello relazionale                                23

    2.1 Introduzione al modello relazionale               25
        2.1.1 Creare e modificare relazioni usando SQL    27
    2.2 Vincoli di integrità sulle relazioni              29
        2.2.1 Vincoli di chiave                           30
        2.2.2 Vincoli di chiave esterna                   31
        2.2.3 Vincoli generali                            33
    2.3 Applicazione dei vincoli di integrità             34
        2.3.1 Transazioni e vincoli                       36
    2.4 Interrogare basi di dati relazionali              38
    2.5 Introduzione alle viste                           39
        2.5.1 Viste, indipendenza dei dati, sicurezza     40
        2.5.2 Aggiornamenti delle viste                   40
    2.6 Distruggere/alterare tabelle e viste              44
    2.7 Domande di riepilogo                              44
    Esercizi                                              45
    Esercizi basati su progetto                           46
    Note bibliografiche                                   46

3   Algebra relazionale                                   49

    3.1 Introduzione                                      49
    3.2 Algebra relazionale                               51
        3.2.1 Selezione e proiezione                      51
        3.2.2 Operazioni sugli insiemi                    53
        3.2.3 Rinominare i campi                          54
        3.2.4 Join                                        55
        3.2.5 Divisione                                   57
        3.2.6 Altri esempi di interrogazioni algebriche   58
    3.3 Domande di riepilogo                              64
    Esercizi                                              65
    Note bibliografiche                                   66

4   SQL                                                   67

    4.1 Introduzione                                      68
        4.1.1 Organizzazione del capitolo                 69
    4.2 La forma di una interrogazione SQL base           70
        4.2.1 Esempi di interrogazioni SQL di base        74
        4.2.2 Espressioni e stringhe nel comando SELECT   76
    4.3 UNION, INTERSECT e EXCEPT                         78
    4.4 Interrogazioni annidate                           81
        4.4.1 Introduzione alle interrogazioni annidate   81
        4.4.2 Interrogazioni annidate correlate           83
        4.4.3 Operatori di confronto tra insiemi          84
        4.4.4 Altri esempi di interrogazioni annidate     85
    4.5 Operatori di aggregazione                         87
        4.5.1 Le clausole GROUP BY e HAVING               90
        4.5.2 Ulteriori esempi di interrogazioni
              con aggregazione                            94
    4.6 Valori null                                       97
        4.6.1 Confronti usando valori null                98
        4.6.2 Operatori logici AND, OR e NOT              98
        4.6.3 Impatto sui costrutti SQL                   98
        4.6.4 Join esterni                                99
        4.6.5 Impedire l'uso dei valori null             100
    4.7 Vincoli di integrità complessi in SQL            100
        4.7.1 Vincoli su singola tabella                 100
        4.7.2 Vincoli di dominio e tipi distinti         101
        4.7.3 Asserzioni: VI su più tabelle              102
    4.8 Trigger e basi di dati attive                    103
        4.8.1 Esempi di trigger in SQL                   104
    4.9 Progetto di basi di dati attive                  105
        4.9.1 Perché i trigger possono essere difficili
              da capire                                  105
        4.9.2 Vincoli verso trigger                      106
        4.9.3 Altri usi dei trigger                      106
    4.10 Domande di riepilogo                            107
    Esercizi                                             108
    Note bibliografiche                                  112

5   Il modello Entità-Relazione                          115

    5.1 Progettazione di basi di dati e diagrammi ER     116
        5.1.1 Oltre la progettazione ER                  117
    5.2 Entità, attributi e insiemi di entità            118
    5.3 Relazioni e insiemi di relazioni                 119
    5.4 Ulteriori caratteristiche del modello ER         122
        5.4.1 Vincoli di chiave                          122
        5.4.2 Vincoli di partecipazione                  124
        5.4.3 Entità deboli                              124
        5.4.4 Gerarchie di classi                        126
        5.4.5 Aggregazione                               128
    5.5 Progettazione concettuale con il modello ER      129
        5.5.1 Entità verso attributo                     129
        5.5.2 Entità verso relazione                     131
        5.5.3 Relazioni binarie verso relazioni ternarie 132
        5.5.4 Aggregazione verso relazioni ternarie      134
    5.6 Progettazione concettuale per grandi
        organizzazioni                                   134
    5.7 Case study: la libreria su Internet              135
        5.7.1 Analisi dei requisiti                      135
        5.7.2 Progettazione concettuale                  136
    5.8 Domande di riepilogo                             137
    Esercizi                                             137
    Note bibliografiche                                  140

6   La progettazione logica: dallo schema ER
    al relazionale                                       141

    6.1 Da insiemi di entità a tabelle                   142
    6.2 Da insiemi di relazioni (senza vincoli)
        a tabelle                                        142
    6.3 Traduzione di insiemi di relazioni con vincoli
        di chiave                                        144
    6.4 Traduzione di insiemi di relazioni con vincoli
        di partecipazione                                146
    6.5 Traduzione di insiemi di entità deboli           148
    6.6 Traduzione delle gerarchie di classi             149
    6.7 Traduzione di diagrammi ER con aggregazione      150
    6.8 Da ER a relazionale: altri esempi                151
    6.9 Case study: la libreria su Internet              152
    6.10 Domande di riepilogo                            154
    Esercizi                                             155
    Note bibliografiche                                  155

7   La normalizzazione                                   157

    7.1 Introduzione al raffinamento degli schemi        158
        7.1.1 Problemi causati dalla ridondanza          158
        7.1.2 Decomposizioni                             160
        7.1.3 Problemi relativi alla decomposizione      161
    7.2 Dipendenze funzionali                            162
    7.3 Ragionare sulle DF                               163
        7.3.1 Chiusura di un insieme di DF               163
        7.3.2 Chiusura degli attributi                   165
    7.4 Forme normali                                    165
        7.4.1 Forma normale di Boyce-Codd                166
        7.4.2 Terza forma normale                        167
    7.5 Proprietà delle decomposizioni                   169
        7.5.1 Decomposizione senza-perdita               169
        7.5.2 Decomposizione con conservazione
              delle dipendenze                           171
    7.6 Normalizzazione                                  172
        7.6.1 Decomposizione in BCNF                     172
        7.6.2 Decomposizione in 3NF                      174
    7.7 Raffinamento dello schema nella progettazione
        di basi di dati                                  178
        7.7.1 Vincoli su un insieme di entità            179
        7.7.2 Vincoli su un insieme di relazioni         179
        7.7.3 Identificare gli attributi delle entità    180
        7.7.4 Identificare gli insiemi di entità         181
    7.8 Case study: la libreria su Internet              182
    7.9 Domande di riepilogo                             184
    Esercizi                                             184
    Note bibliografiche                                  187

8   Applicazioni tradizionali                            191

    8.1 Accedere alle basi di dati dalle applicazioni    192
        8.1.1 SQL incapsulato                            193
        8.1.2 Cursori                                    195
        8.1.3 SQL dinamico                               199
    8.2 Introduzione a JDBC                              199
        8.2.1 Architettura                               200
    8.3 Classi e interfacce JDBC                         202
        8.3.1 Gestione dei driver JDBC                   202
        8.3.2 Connessioni                                202
        8.3.3 Esecuzione dei comandi SQL                 204
        8.3.4 ResultSet                                  205
        8.3.5 Eccezioni e warning                        207
        8.3.6 Esame dei metadati della base di dati      208
    8.4 SQLJ                                             209
        8.4.1 Scrivere codice SQLJ                       211
    8.5 Stored procedure                                 212
        8.5.1 Creare una semplice stored procedure       213
        8.5.2 Chiamare le stored procedure               214
        8.5.3 SQL/PSM                                    215
    8.6 Case study: la libreria su Internet              217
    8.7 Domande di riepilogo                             219
    Esercizi                                             220
    Esercizi basati su progetto                          221
    Note bibliografiche                                  221

9   Applicazioni Internet                                223

    9.1 Introduzione                                     223
    9.2 Concetti di base su Internet                     224
        9.2.1 Uniform Resource Identifiers               224
        9.2.2 Hypertext Transfer Protocol (HTTP)         226
    9.3 Documenti HTML                                   228
    9.4 Documenti XML                                    229
        9.4.1 Introduzione all'XML                       230
        9.4.2 DTD di XML                                 233
        9.4.3 DTD specifici per un dominio               236
    9.5 L'architettura delle applicazioni three-tier     237
        9.5.1 Architetture single-tier e client-server   238
        9.5.2 Architetture a tre livelli                 240
        9.5.3 Vantaggi dell'architettura a tre livelli   242
    9.6 Il livello di presentazione                      243
        9.6.1 Moduli HTML                                243
        9.6.2 JavaScript                                 246
        9.6.3 Fogli di stile                             248
    9.7 Il livello intermedio                            250
        9.7.1 CGI: Common Gateway Interface              251
        9.7.2 Application server                         253
        9.7.3 Servlet                                    254
        9.7.4 JavaServer Pages (JSP)                     256
        9.7.5 Mantenimento dello stato                   257
    9.8 Case study: la libreria su Internet              260
    9.9 Domande di riepilogo                             263
    Esercizi                                             263
    Esercizi basati su progetto                          266
    Note bibliografiche                                  267

10  File e indici                                        271

    10.1 Memorizzazione esterna dei dati                 272
    10.2 Organizzazioni dei file e indicizzazione        273
         10.2.1 Indici clustered                         274
         10.2.2 Indici primari e secondari               275
    10.3 Strutture di dati per gli indici                276
         10.3.1 Indici hash                              276
         10.3.2 Indici ad albero                         277
    10.4 Confronto tra organizzazioni di file            279
         10.4.1 Modello di costo                         280
         10.4.2 File heap                                281
         10.4.3 File ordinati                            282
         10.4.4 File clustered                           283
         10.4.5 File heap con indice non clustered
                ad albero                                284
         10.4.6 File heap con indice hash non clustered  286
         10.4.7 Confronto dei costi di I/O               287
    10.5 Indici e miglioramento delle prestazioni        288
         10.5.1 Impatto del carico di lavoro             288
         10.5.2 Organizzazione con indici clustered      289
         10.5.3 Chiavi di ricerca composite              291
         10.5.4 Specificazione degli indici in SQL:1999  295
    10.6 Domande di riepilogo                            295
    Esercizi                                             296
    Note bibliografiche                                  298

11  Esecuzione delle interrogazioni                      299

    11.1 Il catalogo di sistema                          300
         11.1.1 Informazioni nel catalogo                301
    11.2 Introduzione alla valutazione degli operatori   303
         11.2.1 Tre tecniche comuni                      303
         11.2.2 Percorsi di accesso                      304
    11.3 Algoritmi per operazioni relazionali            306
         11.3.1 Selezione                                306
         11.3.2 Proiezione                               306
         11.3.3 Join                                     307
         11.3.4 Altre operazioni                         309
    11.4 Introduzione all'ottimizzazione delle
         interrogazioni                                  309
         11.4.1 Piani di valutazione delle
                interrogazioni                           310
         11.4.2 Interrogazioni con operatori multipli:
                valutazione a cascata                    312
         11.4.3 L'interfaccia iteratore                  313
    11.5 Piani alternativi: un esempio motivante         314
         11.5.1 Anticipare le selezioni                  314
         11.5.2 Usare gli indici                         316
    11.6 Cosa fa un tipico ottimizzatore                 319
         11.6.1 Piani alternativi considerati            319
         11.6.2 Stima dei costi di un piano              320
    11.7 Domande di riepilogo                            321
    Esercizi                                             322
    Note bibliografiche                                  323

12  Progettazione fisica                                 325

    12.1 Introduzione alla progettazione fisica
         delle basi di dati                              326
         12.1.1 Carichi di lavoro delle basi di dati     327
         12.1.2 Progettazione fisica e decisioni
                di ottimizzazione                        328
         12.1.3 Necessità dell'ottimizzazione delle basi
                di dati                                  328
    12.2 Linee guida per la selezione degli indici       329
    12.3 Semplici esempi di selezione degli indici       331
    12.4 Clustering e indicizzazione                     333
         12.4.1 Co-clustering di due relazioni           334
    12.5 Indici che permettono piani basati solo
         sugli indici                                    337
    12.6 Strumenti di aiuto per la selezione dell'indice 338
         12.6.1 Selezione automatica degli indici        338
    12.7 Cenni sull'ottimizzazione delle basi di dati    339
         12.7.1 Ottimizzazione degli indici              340
         12.7.2 Ottimizzazione dello schema logico       341
         12.7.3 Ottimizzazione di interrogazioni e viste 342
    12.8 Scelte nell'ottimizzazione dello schema logico  343
         12.8.1 Decidere per una forma normale più debole343
         12.8.2 Denormalizzazione                        344
         12.8.3 Scelta della decomposizione              344
         12.8.4 Partizionamento verticale
                di relazioni BCNF                        345
         12.8.5 Decomposizione orizzontale               346
    12.9 Scelte nell'ottimizzazione di interrogazioni
         e viste                                         347
    12.10 Case study: la libreria su Internet            349
          12.10.1 Ottimizzazione della base di dati      350
    12.11 Domande di riepilogo                           351
    Esercizi                                             351
    Note bibliografiche                                  355

13  Gestione delle transazioni                           357

    13.1 Le proprietà "ACID"                             358
         13.1.1 Consistenza e isolamento                 359
         13.1.2 Atomicità e durabilità                   360
    13.2 Transazioni e programmi                         360
    13.3 Esecuzione concorrente di transazioni           361
         13.3.1 Motivazione per l'esecuzione concorrente 362
         13.3.2 Serializzabilità                         362
         13.3.3 Anomalie dovute a esecuzione concorrente 363
         13.3.4 Programmi che coinvolgono transazioni
                abortite                                 366
    13.4 Controllo di concorrenza basato sui lock        367
         13.4.1 Strict 2PL                               367
         13.4.2 Deadlock                                 370
    13.5 Prestazioni dei protocolli di locking           370
    13.6 Supporto alle transazioni in SQL                371
         13.6.1 Creare e terminare transazioni           371
         13.6.2 Su cosa dobbiamo mettere i lock ?        373
         13.6.3 Caratteristiche delle transazioni in SQL 374
    13.7 Introduzione al crash recovery                  376
         13.7.1 Rubare i frame e forzare le pagine       377
         13.7.2 Passi relativi al ripristino durante
                la normale esecuzione                    378
         13.7.3 Cenni su ARIES                           379
         13.7.4 Atomicità: implementare il rollback      379
    13.8 Domande di riepilogo                            379
    Esercizi                                             380
    Note bibliografiche                                  382

Indice analitico                                         383

 

 

| << |  <  |  >  | >> |

Pagina xiii

Prefazione


I sistemi di gestione di basi di dati (Data Base Management Systems, DBMS) sono sempre di più strumenti indispensabili per gestire la quantità crescente di informazioni da memorizzare. La comprensione delle basi di dati è legata strettamente alla conoscenza dei sistemi di gestione e in egual misura a quella delle metodologie di progetto. Questo testo, che è la versione italiana riveduta di un libro in lingua inglese di larghissimo uso nelle Università statunitensi e di altri paesi, tratta entrambi gli aspetti. In particolare, il testo illustra in maniera approfondita la progettazione concettuale e logica delle basi di dati così come analizza le caratteristiche principali dei DBMS e parla anche degli aspetti di progettazione (per esempio fisica) che dipendono da come il DBMS effettivamente memorizza i dati, processa le interrogazioni, gestisce le transazioni ecc. Inoltre le basi di dati vengono viste anche dal punto di vista sistemistico e architetturale, trattando lo sviluppo di applicazioni (sia standalone sia Internet).


Organizzazione dei Contenuti

Il libro è organizzato in quattro parti:

1. Fondamenti - Inizialmente vengono introdotti i principi fondamentali dei DBMS. Viene poi descritto formalmente il modello di dati attualmente più usato nei DBMS, cioè il modello relazionale, con il corrispondente linguaggio di interrogazione, cioè l'algebra relazionale. L'utilizzo concreto del modello nei DBMS è illustrato descrivendo lo Structured Query Language (SQL), che è il linguaggio per basi di dati relazionali commerciali più largamente usato, e uno standard de facto. L'attuale standard ANSI/ISO per l'SQL, ovvero SQL:1999, non è ancora supportato in pieno dai DBMS che, al contrario, supportano lo standard precedente, SQL-92. SQL:1999 è molto simile a SQL-92 per quanto riguarda le funzioni principali. L'esposizione dell'SQL nel Capitolo 4 è coerente sia con l'SQL-92 sia con l'SQL:1999, ed evidenzia esplicitamente ogni aspetto che differisce nelle due versioni.

2. Progettazione di basi di dati - Viene illustrato in dettaglio il processo di progettazione concettuale e logica di una base di dati. A questo scopo viene innanzitutto introdotto il modello attualmente più utilizzato nella fase di progettazione concettuale, cioè il modello Entità-Relazione, e viene presentata una metodologia per il progetto concettuale. Viene poi mostrato come dallo schema concettuale di una base di dati si passa allo schema relazionale, evidenziando anche in termini di quali costrutti SQL vengano tradotti i vincoli di integrità fissati nello schema concettuale. Infine, nel Capitolo 7 viene discusso come alcuni vincoli di integrità non siano espressi nello schema concettuale e di come lo schema relazionale possa essere ulteriormente raffinato per soddisfare tali vincoli secondo le regole della teoria della normalizzazione.

3. Sviluppo di Applicazioni - In questo capitolo la base di dati e il DBMS vengono considerati come componenti di architetture software più complesse, trattando vari meccanismi, quali JDBC, SQL dinamico e stored procedure, che consentono l'integrazione con altre applicazioni, nonché introducendo i concetti che sono alla base dello sviluppo di applicazioni su Internet, come architetture three-tier, XML e HTML.

4. Dentro il DBMS - Vengono descritti l'effettiva gestione dei dati e funzionamento interno del DBMS, dal punto di vista delle strutture dati utilizzate, delle modalità di valutazione e ottimizzazione delle interrogazioni e del controllo di concorrenza. Inoltre, viene mostrato come il funzionamento del DBMS condiziona le scelte dell'ultima fase di progettazione di una base di dati, la progettazione fisica e la conseguente ottimizzazione delle prestazioni.

| << |  <  |  >  | >> |

Pagina 4

1.1 Gestione dei dati

Scopo di questo libro è presentare una introduzione approfondita ai sistemi di gestione di basi di dati, con un'enfasi particolare su come progettare una base di dati e usare effettivamente un DBMS. Non sorprende che molte decisioni sull'uso di un DBMS per una data applicazione dipendano da quali funzionalità siano più efficacemente supportate dal DBMS stesso. Perciò per usare bene un DBMS è anche necessario capire come esso lavora.

Ci sono molti tipi di sistemi di gestione di basi di dati, ma in questo libro ci concentriamo sui sistemi di basi di dati relazionali (RDBMS), che oggi sono di gran lunga il tipo di DBMS dominante. Nei capitoli centrali di questo libro risponderemo alle seguenti domande:

• Progettazione di basi di dati e sviluppo di applicazioni: come può un utente descrivere un'organizzazione del mondo reale (per esempio una università) in termini di dati memorizzati in un DBMS? Che fattori bisogna considerare per decidere l'organizzazione dei dati? Come possiamo sviluppare applicazioni che si basino su un DBMS? (Capitoli 2, 5, 6, 7, 8, 9, 12)

• Analisi dei dati: come può un utente rispondere a domande sull'impresa impostando delle interrogazioni sui dati nel DBMS? (Capitoli 3 e 4)

• Concorrenza e robustezza: come fa un DBMS a permettere a molti utenti di accedere ai dati concorrentemente, e come protegge i dati in caso di guasti al sistema? (Capitolo 13)

• Efficienza e scalabilità: come fa un DBMS a memorizzare grandi insiemi di dati e a rispondere efficientemente a domande su di essi? (Capitoli 10, 11)

| << |  <  |  >  | >> |

Pagina 5

1.2 Una prospettiva storica

Dai primi giorni dei computer, memorizzare e manipolare dati è stato uno degli obiettivi principali. Il primo DBMS per uso generico, progettato da Charles Bachman alla General Electric nei primi anni sessanta, fu chiamato Integrated Data Store. Esso costituì la base per il modello di dati reticolare che fu standardizzato dalla Conferenza sui Linguaggi per Sistemi di Dati (CODASYL) e influenzò fortemente i sistemi di basi di dati di quegli anni. Bachman fu il primo a ricevere, nel 1973, l'ACM Turing Award (il premio informatico equivalente al Nobel) per il suo lavoro nel campo delle basi di dati.

Sul finire degli anni sessanta, l'IBM sviluppò il DBMS Information Management System (IMS), usato ancora oggi in molte grandi installazioni. L'IMS fornì la base per una struttura alternativa di rappresentazione dei dati chiamata modello di dati gerarchico. Il sistema SABRE per prenotazioni aeree fu sviluppato congiuntamente dalla American Airlines e dall'IBM circa nello stesso periodo, e permetteva a più persone di accedere agli stessi dati attraverso una rete di computer. È interessante osservare che oggi lo stesso sistema SABRE è usato da agenzie di viaggio molto popolari nel Web come Travelocity.

Nel 1970 Edgar Codd, ai Laboratori di Ricerca di San Jose, propose una nuova struttura di rappresentazione dei dati chiamata modello di dati relazionale. Esso diventò uno spartiacque nello sviluppo di sistemi di basi di dati, provocando il rapido sviluppo di diversi DBMS basati su questo modello, insieme a un ricco corpo di risultati teorici che diedero a questo settore solide fondamenta. Codd vinse nel 1981 il Turing Award per il suo pionieristico lavoro. I sistemi di basi di dati maturarono come disciplina accademica, e la popolarità dei DBMS relazionali cambiò il panorama commerciale. I loro vantaggi furono ampiamente riconosciuti, e l'uso dei DBMS per gestire i dati aziendali divenne una pratica standard.

Negli anni ottanta il modello relazionale consolidò la sua posizione di dominanza. Il paradigma DBMS e i sistemi di basi di dati continuarono a diffondersi sempre più. Il linguaggio di interrogazione SQL per basi di dati relazionali, sviluppato come parte del progetto System R dell'IBM, è divenuto il linguaggio di interrogazione standard. L'SQL è stato standardizzato sul finire degli anni ottanta, e lo standard attuale, SQL:1999, è stato adottato dall'Istituto Americano per gli Standard Nazionali (ANSI) e dall'Organizzazione Internazionale per la Standardizzazione (ISO). È da notare che la forma di programmazione concorrente maggiormente usata è l'esecuzione concorrente di programmi (chiamati transazioni) nelle basi di dati. Gli utenti scrivono programmi come se questi dovessero essere eseguiti da soli, e la responsabilità di eseguirli in concorrenza è lasciata al DBMS. James Gray vinse nel 1999 il Turing Award per il suo contributo alla gestione delle transazioni nelle basi di dati.

Nei tardi anni ottanta e negli anni novanta furono fatti progressi in molte aree dei sistemi di basi di dati. Fu svolta una considerevole ricerca per determinare linguaggi di interrogazione più potenti e modelli di dati più ricchi, con particolare enfasi sul supporto all'analisi complessa dei dati da parte di un'impresa. Diversi produttori (per esempio IBM con il DB2, Oracle con la versione 8, Informix con UDS) diedero ai loro sistemi l'abilità di memorizzare nuovi tipi di dati come immagini e testo, e di eseguire interrogazioni più complesse. Sistemi specializzati sono stati sviluppati da diverse case per creare data warehouse, per consolidare i dati provenienti da basi di dati diverse e per eseguire analisi specializzate.

Un interessante fenomeno è l'apparizione di diversi pacchetti di pianificazione delle risorse dell'impresa (ERP) e di pianificazione delle risorse gestionali (MRP), che aggiungono a un DBMS uno strato sostanziale di funzionalità orientate all'applicazione. Pacchetti largamente usati includono sistemi Baan, Oracle, PeopleSoft, SAP e Siebel. Questi pacchetti identificano un insieme di compiti comuni (per esempio gestione di inventari, pianificazione delle risorse umane, analisi finanziaria) richiesti a un gran numero di organizzazioni, e forniscono uno strato applicativo generico per eseguire tali compiti. I dati sono memorizzati in un DBMS relazionale, e lo strato applicativo può essere personalizzato per le diverse società, portando a un generico abbassamento dei costi per queste ultime, a paragone del costo della creazione di uno strato applicativo partendo da zero.

Fatto ancora più significativo, forse, i DBMS sono entrati nell'era di Internet. Mentre la prima generazione di siti registrava i dati esclusivamente in file del sistema operativo, l'uso di un DBMS per memorizzare i dati e accedervi da un browser sta diventando sempre più comune. Le interrogazioni sono generate attraverso form accessibili via Web e le risposte sono formattate usando un linguaggio a marcatori come l'HTML per essere facilmente visualizzate nel browser. Tutti i venditori di basi di dati stanno aggiungendo ai loro DBMS caratteristiche mirate a rendere più semplice il loro impiego su Internet.

La gestione delle basi di dati continua a crescere di importanza man mano che i dati sono portati on line e resi sempre più accessibili dalle reti di computer. Oggi il settore è animato da visioni eccitanti come basi di dati multimediali, video interattivi, dati in streaming, librerie digitali, una moltitudine di progetti scientifici come il tentativo di mappatura del genoma umano e il progetto Sistema di Osservazione Terrestre della NASA, e il desiderio delle compagnie di consolidare i loro processi decisionali e scavare nei loro depositi di dati per ottenere informazioni utili sui loro affari. Commercialmente, i sistemi di gestione di basi di dati rappresentano uno dei più grandi e più vigorosi segmenti del mercato. Quindi lo studio dei sistemi di basi di dati può essere fortemente remunerativo in più di un senso!

| << |  <  |  >  | >> |

Pagina 8

1.4 Vantaggi di un DBMS

Usare un DBMS per gestire i dati ha molti vantaggi:

• Indipendenza dei dati: i programmi applicativi, in teoria, non dovrebbero essere esposti ai dettagli della rappresentazione e della memorizzazione dei dati. Il DBMS fornisce una vista astratta dei dati che nasconde tali dettagli.

• Accesso efficiente ai dati: un DBMS usa una varietà di tecniche sofisticate per memorizzare e reperire efficientemente i dati. Questa caratteristica è importante specialmente se i dati sono registrati in dispositivi di memorizzazione esterni.

• Integrità e sicurezza dei dati: se ai dati si accede sempre tramite il DBMS, quest'ultimo può garantire dei vincoli di integrità. Per esempio, prima di inserire informazioni sul salario di un impiegato, il DBMS può controllare che non si ecceda il budget del dipartimento. Inoltre, può garantire controlli di accesso che governano la visibilità dei dati per differenti classi di utenti.

• Amministrazione dei dati: quando più utenti condividono i dati, la centralizzazione dell'amministrazione dei dati può offrire miglioramenti significativi. Professionisti esperti che comprendono la natura dei dati che gestiscono, e anche come questi dati vengono usati dai diversi gruppi di utenti, possono avere la responsabilità di organizzarne la rappresentazione, allo scopo di minimizzare la ridondanza, e di ottimizzarne la memorizzazione, così da rendere efficiente il reperimento delle informazioni.

• Accesso concorrente e ripristino da crash: un DBMS organizza gli accessi concorrenti ai dati in modo tale che ogni utente possa pensare di essere l'unico, in quel momento, a usarli. Inoltre, il DBMS protegge gli utenti dagli effetti dei guasti del sistema.

• Riduzione del tempo di sviluppo delle applicazioni: chiaramente, il DBMS fornisce importanti funzioni che sono comuni a molte applicazioni che accedono ai suoi dati. Questo, congiuntamente all'interfaccia di alto livello con i dati, facilita il rapido sviluppo di applicazioni. È anche probabile che le applicazioni DBMS siano più robuste di analoghe applicazioni stand alone, perché molti compiti importanti sono gestiti dal DBMS stesso (e non devono essere corretti e testati nell'applicazione).

Dati tutti questi vantaggi, c'è qualche ragione per non usare un DBMS? A volte sì. Un DBMS è un software complesso, ottimizzato per certi tipi di carichi lavorativi (come rispondere a interrogazioni complesse o gestire molte richieste concorrenti), e le sue prestazioni possono non essere adeguate per certe applicazioni particolari. Gli esempi comprendono applicazioni con rigidi vincoli in tempo reale, o con un certo numero di operazioni critiche ben definite, per le quali deve essere scritto del codice efficiente opportuno. Un'altra ragione per non usare un DBMS è che un'applicazione può aver bisogno di manipolare i dati in modi non supportati dal linguaggio di interrogazione. In una tale situazione, la vista astratta dei dati presentata dal DBMS non soddisfa le necessità dell'applicazione, e in realtà diventa un ostacolo. Per esempio, le basi di dati relazionali non supportano l'analisi flessibile dei dati testuali (sebbene le case produttrici stiano attualmente estendendo i loro prodotti in questa direzione).

| << |  <  |