Introduzione
all’RDBMS
relazionale Oracle

Il Database

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

Modello Gerarchico

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.

 

Modello Reticolare

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.

 

Modello Relazionale

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.

 

Il Database Relazionale

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.

 

RDBMS Oracle

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).

Oggetti

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

 

Kernel

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

Tool

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!

Caratteristiche

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

Autore: mail@meo.bogliolo.name