vuoi
o PayPal
tutte le volte che vuoi
• INSTANZA DI UNA BASE DI DATI RELAZIONALE
I dati che compongono le relazioni di una base di dati ne costituiscono l’istanza. In particolare, si definisce istanza di una relazione r l’insieme
delle tuple definite sugli attributi di r. Si definisce istanza di base di dati l’insieme delle istanze di relazione di ciascuna relazione che costituisce
la base di dati.
Ad esempio, un’istanza valida dello schema di base di dati mostrato in precedenza è la seguente:
Figura 4.5: Esempio di istanza della base di dati relazionale di Figura 4.2
• IL CON CETTO DI CHIAVE PRIMARIA NELLE BASI DI DATI RELAZIONALI
Un concetto di fondamentale importanza nelle basi di dati relazionali è quello di chiave primar ia (pr imary key) utilizzata per identificare in
modo univoco ogni tupla di una tabella. Una chiave primaria può essere costituita da un singolo attributo oppure può essere composta da più
attributi. Ogni tabella possiede una chiave primaria; in questo modo ogni tupla della tabella è univocamente riconoscibile. Facendo riferimento alla
tabella regista del nostro esempio, id_regista è la chiave primaria della tabella, ovvero non possono esserci due tuple diverse con lo stesso valore di tale
attributo. Come altro esempio, la coppia di attributi titolo, id_attore è chiave primaria per la tabella partecipazione, ovvero non ci possono essere
tuple diverse aventi lo stesso titolo e lo stesso identificatore di attore.
Se l’utente inserisse in una tabella una tupla con un valore di chiave primaria già presente, il sistema di gestione della base di dati è in grado di
rilevarlo automaticamente, notificandolo all’utente. In questi casi, occorrerà cambiare il valore della chiave per poter concludere con successo
l’inserimento dei dati.
In genere, la chiave primaria di una tabella è indicata sottolineando i nomi degli attributi costituenti.
Figura 4.6: Esempio di base di dati relazionale cinematografica con chiavi primarie
• IL CON CETTO DI CHIAVE ESTERNA E DI VALORE NULLO
Nel nostro esempio, le tuple delle tabelle film e regista sono legate fra loro tramite l'attributo id_regista, ovvero ogni singolo film fa riferimento per
mezzo dell'attributo id_regista, alla tupla del suo corrispondente regista. Affinché la base di dati sia corretta, l'identificatore di regista presente
all'interno di una tupla di film deve essere un valore già presente come valore di chiave primaria nella tabella dei registi. In altri termini, il regista di
un certo film deve essere presente nella base di dati. Per garantire che questo controllo venga effettuato automaticamente dal sistema, nelle basi di dati
relazionali l'attributo id_regista viene dichiarato come chiave ester na nella tabella film, ovvero si specifica che i suoi valori devono essere valori
presenti nella tabella regista in corrispondenza dell'attributo id_regista.
Ogni tupla di una base di dati corrisponde allo schema della relazione di cui fa parte anche quando il valore di un certo attributo non è disponibile.
Supponiamo ad esempio di non conoscere la nazione del regista Gray dell'esempio precedente. La tupla sarà comunque caratterizzata dagli attributi
id_regista, nome, cognome e sesso, come previsto dalla relazione regista. Quale valore dovrà essere dunque specificato in corrispondenza dell'attributo
nazione? A tale scopo, nelle basi di dati relazionali, si usa un particolare valore, detto valore NULL. Nel nostro esempio, la tupla assumerebbe
dunque la seguente forma:
Figura 4.7: Rappresentazione di dati mancanti: il valore NULL
• LIVELLI DI ASTRAZIONE NEI DBMS
Una base di dati gestita da un DBMS può essere vista a tre livelli di astrazione, a ciascuno dei quali corrisponde una descrizione dei dati sotto forma
di uno specifico schema. Lo schema logico fornisce la descrizione dell'intera base di dati per mezzo del modello dei dati del DBMS utilizzato. Nel
nostro caso, abbiamo considerato DBMS relazionali, in cui cioè il modello dei dati utilizzato è quello relazionale.
Lo schema fisico descrive l'organizzazione fisica dei dati in termini di strutture fisiche di memorizzazione e di accesso, come ad esempio, file
sequenziali su disco.
Uno schema esterno o vista descrive una porzione dell'intera base di dati, limitata ai dati che costituiscono la specifica visione di singoli utenti o
gruppi di utenti, facendo uso del modello dei dati utilizzato dal DBMS, che per noi è il modello relazionale.
In Figura 4.8 abbiamo una rappresentazione grafica di quanto appena spiegato facendo riferimento alla nostra base di dati relazionale dei dati
cinematografici.
Al livello fisico, la visione dei dati è quella di più basso livello, ovvero si considerano direttamente i record che descrivono i vari oggetti,
memorizzati in file su un supporto fisico di memorizzazione. Questo livello è nascosto all'utente finale ed è gestito internamente
direttamente dal DBMS relazionale.
A livello logico la rappresentazione dei dati è di alto livello, vicino alla concettualizzazione della realtà e presenta i dati in formato
tabellare, secondo il modello dei dati relazionale del DBMS utilizzato. A questo livello, possiamo quindi fare riferimento agli attori
utilizzando la tabella corrispondente, in cui ciascuna colonna rappresenta un attributo che caratterizza gli attori e ogni riga descrive uno
specifico attore.
Al livello esterno, i dati possono essere presentati a utenti diversi secondo schemi esterni diversi, detti viste, che contengono un sottoinsieme
di tutti i dati, quelli di interesse per lo specifico utente. Ad esempio, nel nostro caso abbiamo la vista relativa agli attori americani e quella
relativa agli attori francesi, rispettivamente. Alcuni DBMS, come ad esempio quelli monoutente per la gestione di basi dati personali,
possono non supportare il livello esterno, che è invece molto importante nel caso di DBMS che operano in ambienti multiutente, tipici delle
organizzazioni pubbliche e private.
L'aspetto importante di questa architettura è che gli utenti formulano le loro richieste facendo riferimento allo schema logico oppure agli schemi
esterni, quindi facendo riferimento a descrizioni di alto livello dei dati contenuti nella base di dati e non a una descrizione di basso livello in termini
di record e file di record. Il DBMS tradurrà internamente le richieste di accesso formulate sugli schemi esterni oppure sullo schema logico in opportune
richieste di accesso a file nelle strutture di memorizzazione per reperire i dati di interesse.
• LIVELLO FISICO, LOGICO, ESTERNO
Figura 4.8: Esempio dei diversi livelli di astrazione dei dati in un DBMS relazionale
• LIN GU AGGI PER LA BASE DI DATI
I DBMS mettono a disposizione i seguenti principali linguaggi per basi di dati:
Linguaggio di definizione dei dati o DDL (Data Definition Language), ovvero un linguaggio per la definizione dello schema logico e degli
eventuali schemi esterni.
Linguaggio di manipolazione dei dati o DML (Data Manipulation Language), ovvero un linguaggio per formulare interrogazioni e
modifiche sui dati (ovvero, inserimenti, cancellazioni, aggiornamenti) della base di dati. Spesso si indica con linguaggio di interrogazione
(query language) il sottoinsieme delle istruzioni DML per la formulazione di interrogazioni.
Nei DBMS relazionali questi due linguaggi sono parte di un unico linguaggio denominato SQL, che è uno standard per i DBMS relazionali. Ad oggi
la versione più recente dello standard è SQL/2003. Analizzando i prodotti DBMS sul mercato, si notano differenze, a volte anche sostanziali, tra lo
standard e le implementazioni del linguaggio SQL offerte dai diversi DBMS. Molto spesso, l’aderenza allo standard è garantita solo per i costrutti
consolidati del linguaggio, mentre ogni sistema realizza le funzioni evolute di SQL in modo fortemente dipendente dall’implementazione.
• DIFFERENZE FRA LE BASI DI DATI E I FOGLI DI CALCOLO
Spesso, gli utenti che si avvicinano per la prima volta al mondo delle basi di dati si pongono alcuni interrogativi: “quale differenza c'è fra una base di
dati e un foglio di calcolo?”, “quando è opportuno utilizzare una base di dati per memorizzare le informazioni di interesse?” e ancora “quando è
meglio impiegare un foglio di calcolo?”.