Un Database e’ una collezione organizzata di informazioni.
I vantaggi dell' utilizzo di un Database sono i seguenti:
· Il ritrovamento dei dati e’ veloce
· I dati occupano meno spazio
· I dati possono essere condivisi da piu’ utenti
· I dati ridondanti sono minori
· L' inconsistenza dei dati puo’ essere evitata
· La sicurezza puo’ essere controllata
Esistono diversi tipi di database:
· Gerarchico
· Reticolare
· Relazionale
Nel modello gerarchico i dati sono organizzati in record connessi tra loro secondo strutture ad albero.
Ogni record del database, che non sia la radice dell' albero, deve avere uno e un solo padre. Possono quindi esserci due record, su alberi diversi, che rappresentano la stessa informazione. Questo comporta problemi di ridondanza nel database e richiede controlli di consistenza durante il suo uso. Inoltre non e’ possibile memorizzare informazioni che non hanno padre.
La struttura gerarchica impone delle regole rigide sul modo di eseguire gli aggiornamenti e le interrogazioni: il livello piu’ alto e’ il punto di accesso a tutte le informazioni. La cancellazione di un record del database comporta l' eliminazione di tutti i record dipendenti gerarchicamente da esso. L' aggiornamento di un dato richiede l' accesso e la modifica di diversi record per assicurare la consistenza del database.
Il modello gerarchico comporta la dipendenza dei programmi dalle strutture, quindi non possiamo modificare le strutture senza modificare i programmi.
Nel modello reticolare i record sono legati tra loro con strutture ad anello (puntatori) che permettono all' utente di accedere ai dati piu’ facilmente, senza i vincoli rigidi della struttura gerarchica. Ogni nodo puo’ essere il punto di partenza per raggiungere un determinato campo.
Un record puo’ avere uno o piu’ record padre e cio’ permette di evitare i problemi di ridondanza.
Rimangono il problema della dipendenza dei programmi dalle strutture e il problema della complessita’ delle strutture stesse che crescono in proporzione alla crescita dei dati.
Per modificare, anche parzialmente, le strutture bisogna chiudere il DB e ricrearlo.
Nel modello relazionale i dati sono organizzati in tabelle che rappresentano sia le entita’, sia le relazioni tra di esse: esistono quindi tabelle di entita’ e tabelle di relazioni.
Nel modello relazionale, a differenza dei precedenti, non c' e’ alcun meccanismo esplicito per rappresentare i legami logici tra i diversi tipi di record che non sia la relazione.
La modifica di un dato o di un legame comporta la manipolazione di un solo record di una tabella.
Nel modello relazionale, a differenza dei precedenti, si realizza l' indipendenza logica, e’ cioe’ possibile modificare le strutture senza dover modificare i programmi.
Si possono inoltre modificare le strutture a DB aperto, con gli utenti collegati.
Un Database Relazionale e’ un insieme di tabelle che rappresentano ogni tipo di informazione.
Per reperire i dati e’ sufficiente conoscere la loro struttura logica e non e’ necessario conoscere la loro locazione fisica.
Una Tabella e’ un' insieme di informazioni attinenti tra loro.
Una riga (o record) della tabella rappresenta un' entita’.
Una colonna della tabella rappresenta un attributo di quell' entita’.
Nell' intersezione tra una riga e una colonna puo’ esserci un solo valore, che puo’ essere significativo o nullo (NULL VALUE, diverso da zero e da blank).
Non ci possono essere nomi di colonna duplicati.
L' ordine nel quale le righe sono contenute non ha importanza.
L' ordine nel quale le colonne sono contenute non ha importanza.
Affinche’ un RDBMS possa dirsi relazionale deve essere in grado di eseguire le tre operazioni relazionali di base: la proiezione, la selezione e il join.
Esistono diversi tipi di join: il prodotto cartesiano, il join naturale, il self join e l' outer join.
Il Prodotto cartesiano di due tabelle T1 e T2 e’ un insieme con tutte le possibili coppie di ogni record T1 con ogni record T2.
Il prodotto cartesiano completo non ha alcun interesse, occorre quindi selezionare da questo le righe significative, cioe’ quelle in cui il campo in comune tra le tabelle in join ha un contenuto uguale.
Queste sono le condizioni di join che legano insieme due o piu’ tabelle in un Join naturale.
Il Self join e’ un join di una tabella con se stessa.
L' Outer join e’ un join tra due tabelle su una delle quali il record in join puo’ mancare ma il record dell' altra tabella viene visualizzato comunque.
Tra le caratteristiche di un database relazionale vi e’ la possibilita’ di eseguire operazioni insiemistiche sulle righe estratte da due o piu’ tabelle: unione, intersezione e differenza.
Oracle e’ un sistema complesso costituito da un software in grado di gestire un database relazionale in base a richieste effettuare nel linguaggio SQL (Structured Query Language).
In altre parole Oracle e’ l' insieme dei seguenti componenti:
· un database relazionale
· un linguaggio SQL (un linguaggio di quarta generazione per l’accesso ai dati)
· un insieme di programmi di gestione del database (il Kernel ed i Tool).
In un database Oracle, oltre alle tabelle, esistono altri tipi di oggetti:
l' Indice un oggetto che ha una entry per ogni valore che appare nella colonna indicizzata della tabella ed esegue un accesso rapido alle righe
il Cluster un insieme di tabelle che hanno una o piu’ colonne in comune
il Rollback segment un segmento che memorizza i dati nella versione precedente la modifica
la Vista una "fotografia dinamica" di una particolare selezione da una o piu’ tabelle
la Sequence un generatore di numeri progressivi
il Sinonimo la rinomina di un altro oggetto
lo Snapshot una copia in sola lettura di una una o piu’ tabelle residenti su un database remoto, rinfrescata periodicamente per riflettere lo stato attuale dei dati
la Procedure un insieme di comandi PL/SQL eseguibile dall' utente),
il Package un insieme di procedure salvato nel database
il Database link un collegamento ad un database remoto, Oracle o non Oracle
Il Kernel e’ il motore del nostro sistema, e’ un software di notevoli dimensioni che svolge le seguenti funzioni:
· organizza la definizione e la memorizzazione dei dati
· controlla e limita l' accesso ai dati
· permette il backup e il recovery dei dati
· interpreta i linguaggi SQL e PL/SQL
I Tool sono strumenti in grado di offrire vari servizi:
I nomi di tool indicati sono relativi a quanto presente una decina d'anni fa...
ma non e' cambiato nulla di importante!
Le caratteristiche fondamentali di Oracle
sono le seguenti: · Compatibilita’
nei confronti dello standard SQL · Portabilita’
sulla quasi totalita’ delle piattaforme · Connettibilita’:
capacita’ di accedere a dati presenti su macchine diverse integrando fonti
di dati Oracle e non Oracle · Multiutenza:
la possibilita’, da parte di piu’ utenti, di condividere i dati. A proposito di connettibilita’ due
concetti sono essenziali: · Processing
distribuito: un' applicazione lavora su un nodo di una rete detto
client ma accede a un database che risiede su un nodo diverso detto server.
Il kernel di Oracle e’ installato sul nodo che possiede il database. Molte
applicazioni si collegano allo stesso database. La gestione del database
e’ separata dall' esecuzione delle applicazioni. · Database
distribuito: un insieme di database fisici visti come un unico database
logico. L' utente non deve sapere dove risiedono fisicamente i dati (location
transparency). Ogni database fisico resta comunque autonomo rispetto agli
altri (site autonomy). ORACLE7 Server e’ dotato del meccanismo
di Two-phase Commit. Tale meccanismo consente l' esecuzione di operazioni
di manipolazione che coinvolgono due o piu’ database residenti su nodi diversi
della rete (transazione distribuita). Oracle garantisce un efficiente supporto
della multiutenza e cioe’ la possibilita’, da parte di piu’ utenti, di condividere
i dati con la sicurezza della consistenza in lettura ottenuta senza sacrificare
le qualita’ delle performance. Il lock a livello di riga consente l'
aggiornamento concorrente di record diversi della stessa tabella da parte di
processi utente differenti. La consistenza in lettura permette
di leggere i dati in uno stato immutato per tutta la durata della lettura stessa,
nonostante le operazioni di modifica che possono aver luogo su quei dati. La sicurezza dei dati e’ garantita
dalla creazione di utenti Oracle con precisi privilegi, ruoli e profili. Oracle consente di far uso di strumenti
di ottimizzazione in gradi di migliorare le performance. E' possibile una
vera e propria metodologia di tuning che miri ad ottimizzare tanto gli statement
SQL quanto il consumo da parte di Oracle di risorse di sistema (memoria, i/o). Per l' ottimizzazione degli statement
SQL assume importanza il Query Optimizer, un modulo del kernel al quale spetta
il compito di decidere il piano di esecuzione di uno statement. ORACLE7 permette
di scegliere tra un approccio Rule based (basato su regole sintattiche) ed un
approccio Cost based (basato sulla valutazione dei costi di accesso ai dati
valutati basandosi sulla dimensione delle tabelle e la selettivita’ delle condizioni). Il database Oracle possiede al suo interno
il cosiddetto dizionario dati generato al momento della creazione del
database. E' formato da una serie di tabelle e viste di sistema (proprieta’
dell' utente SYS) a disposizione degli utenti per la consultazione di tutte
le informazioni necessarie per una completa e corretta gestione del database.
La tabella che descrive tutto il dizionario dati si chiama DICTIONARY. ORACLE7 server supporta sia l' integrita’
dichiarativa che l' integrita’ procedurale.
Testo: Introduzione ai database relazionali
ed a Oracle
Data: 30 Dicembre 1997
Versione: 1.2