Descrizione di un Data Base:

Un Database è 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 più utenti
I dati ridondanti sono minori
L’ inconsistenza dei dati può essere evitata
La sicurezza può 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 più alto è 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 può avere uno o più record padre e ciò permette di evitare i problemi di ridondanza.

Rimangono il problema della dipendenza dei programmi dalle strutture e il problema della complessità 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 entità, sia le relazioni tra di esse: esistono quindi tabelle di entità 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, è cioè 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 è un insieme di tabelle che rappresentano ogni tipo di informazione.
Per reperire i dati è sufficiente conoscere la loro struttura logica e non e’ necessario conoscere la loro locazione fisica.
Una Tabella è un’ insieme di informazioni attinenti tra loro. Una riga (o record) della tabella rappresenta un’entità. Una colonna della tabella rappresenta un attributo di quell’entità.
Nell’intersezione tra una riga e una colonna può esserci un solo valore, che può 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.
La Proiezione è una visualizzazione “verticale” della tabella (solo alcune colonne).
La Selezione è una visualizzazione “orizzontale” della tabella (solo alcune righe che soddisfano una condizione).
Il Join è l’ unione di record che sono memorizzati su tabelle diverse.

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:

SQL*DBA consente di eseguire le operazioni di amministrazione del database (nelle versioni successive è utilizzato anche il server manager) Export scarica in un file la definizione della struttura e i dati del database Import carica nel database i dati letti da un file generato con Export SQL*Loader carica nel database i dati letti da un file ASCI SQL*Net consente la comunicazione, attraverso la rete, di database Oracle residenti su server e applicazioni residenti su client SQL*Plus consente di eseguire statement SQL e blocchi PL/SQL, consente di formattare, registrare e stampare il risultato delle query, consente di vedere le definizioni delle colonne di ogni tabella SQL*Forms consente lo sviluppo di applicazioni complesse, consente di programmare ad oggetti e di usare il PL/SQL, consente la produzione rapida di maschere di default per la manipolazione dei dati, consente la generazione di menu per il controllo e l’ esecuzione di applicazioni SQL*ReportWriter consente di generare report complessi Precompilers consentono di inserire statement SQL all’ interno di programmi scritti in linguaggi di terza generazione

Caratteristiche:

Le caratteristiche fondamentali di Oracle sono le seguenti:

Compatibilità nei confronti dello standard SQL
Portabilità sulla quasi totalità delle piattaforme
Connettibilità: capacità di accedere a dati presenti su macchine diverse integrando fonti di dati Oracle e non Oracle
Multiutenza: la possibilità, da parte di più utenti, di condividere i dati.
A proposito di connettibilità 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.

L’ integrita’ dichiarativa consiste nel controllare l’ integrita’ dei dati senza scrivere a questo scopo programmi, ma definendo direttamente nello statement di creazione della tabella dei vincoli (i constraint) che vengono processati in caso di inserimento, cancellazione o modifica dei dati.

L’ integrita’ procedurale si realizza invece tramite comandi PL/SQL memorizzati sotto forma di trigger di database associati alle tabelle. Essi scattano compiendo un’ operazione o un controllo ogni volta che le tabelle in questione vengono modificate.

for dbatrade.com
Remo Ponzo

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *