Copyrigtht © 1996, 1997 Universita' di Firenze. All rights reserved.
Free license available.
a cura di:
Alessandro Fiorenzi
Revisori:
Prof. F.Pirri, Ing.
M. Lunghi, Ing. C.
Vestri
|
Il modello relazionale è stato proposto da E. F. Codd nel suo lavoro "A Relational Model of Data for Large Shared Data Banks" pubblicato nel 1970. Lo scopo era quello di definire uno schema concettuale di database indipendente dalle modalità di memorizzazione.
Sin dall'inizio ha attirato un notevole interesse per l'idea innovativa di rappresentare le informazioni per mezzo di una struttura, chiamata relazione o tabella, che ha come fondamento un concetto molto semplice della teoria matematica degli insiemi.
|
I dati sono rappresentati tramite tabelle, chiamate relazioni. Ogni relazione è definita dalle colonne di cui è composta e contiene tutte le n-uple (o righe) dello stesso tipo contenute nel database. Le colonne della tabella rappresentano i campi o proprietà della tabella; ogni riga corrisponde a un record in un linguaggio di programmazione, e raggruppa i valori che queste proprietà assumono in una n-upla. Le colonne possono contenere solo dati di tipo elementari: stringhe, interi, reali. Un grande vantaggio dei DB relazionali è di avere definito un linguaggio di accesso cumune, SQL (Structured Query Language). Questo linguaggio permette a un Relational DataBase Management System (RDBMS) di interagire con DB relazionali di produttori diversi.
|
Per poter dare la definizione di relazione è necessario prima ricordare alcuni concetti matematici sugli insiemi:
Un dominio è una collezione di valori.
Il prodotto cartesiano A1×A2×...An di n domini A1, A2, ..., An, non necessariamente distinti, è l'insieme di tutte le possibili n-uple (a1, a2, ..., an) tali che a1 appartiene all'insieme A1, a2 appartiene all'insieme A2, ..., an appartiene all'insieme An.
Segue la definizione di relazione:
Gli elementi di una relazione sono detti tuple. Ogni tupla è costituita da tanti valori quanti sono i domini della relazione (cioè quanto è l'arietà della relazione stessa). In una tupla <v1, v2, ...,vk> di una relazione di arietà k, il generico valore vi appartiene al dominio Di. Poiché una relazione è un insieme, l'ordine secondo il quale sono elencate le tuple di una relazione non ha importanza.
Il numero delle tuple di una relazione è detto cardinalità della relazione.
Una relazione può essere rappresentata sotto forma di tabella usando le seguenti convenzioni:
ogni riga della tabella corrisponde ad un tupla della relazione
ogni colonna della tabella corrisponde ad un dominio di definizione della relazione.
Di norma, quando si usa la rappresentazione tabellare di una relazione, si associa ad ogni colonna della tabella un nome, detto attributo, che qualifica i valori descritti in quella colonna
Può accadere che un valore componente una tupla di una relazione non sia per qualche motivo conosciuto. In questa situazione è ammessa la rappresentazione del valore non conosciuto con un valore speciale detto valore nullo.
Si può dare una seconda definizione di relazione:
"Una relazione di grado n è un insieme di tuple t, dove t è una funzione t: AiDi (i= 1, 2, ..,n)
che assegna ad ogni nome di attributo Ai un valore del dominio Di"
Lo schema di una relazione è la lista dei nomi degli attributi usati per la rappresentazione tabellare di quella relazione. Se una relazione ha nome R e gli attributi di R sono A1, A2, ..., Ak, lo schema della relazione è di solito rappresentato come: R(A1, A2, ..., Ak). L'ordine secondo il quale sono descritti gli attributi non ha importanza.
La chiave primaria
di una relazione è un sottoinsieme K degli attributi della
relazione che soddisfa le seguenti proprietà:
Proprietà della identificazione univoca:
Proprietà della non ridondanza:
Una relazione ha sempre almeno una chiave primaria, ne può avere anche più di una e devono soddisfare la seguente proprietà di integrità: gli attributi di K non devono avere valori nulli nelle tuple della relazione. Sia K un insieme di attributi di R1(X) e di R2(Y), con K chiave di R1(X). Allora K è una foreign key di R2(Y).
|
Un database è rappresentato nel modello relazionale esclusivamente per mezzo di relazioni. Le relazioni possono rappresentare informazioni o corrispondenze.
Nel primo caso ogni tupla della relazione rappresenta un'informazione, e le componenti della tupla sono i valori delle proprietà che descrivono quell'informazione.
La seconda, una corrispondenza fra tipo di informazione, è una corrispondenza fra relazioni che definiscono quell'informazione.
Una corrispondenza dalle relazioni A1, A2, ..., Ai nelle relazioni B1, B2, ..., Bj è rappresentata per mezzo di una relazione R e gli attributi della relazione sono tutti e soli gli attributi che costituiscono le chiavi primarie effettive delle relazioni A1, A2, ..., Ai, B1, B2, ..., Bj. Le tuple di R sono costituite da tutti e soli quei valori <a1, a2, ..., ai, b1, b2, ..., bj> tali che a1, a2,..., ai e b1, b2, ..., bj sono i valori che appaiono, rispettivamente, nelle chiavi di una tupla di A1×A2×...Ai e nelle chiavi di una tupla di B1×B2×...Bj che sono associate tra di loro dalla corrispondenza considerata.
L'insieme degli schemi delle relazioni usate per rappresentare le informazioni e le corrispondenze è detto schema relazionale del database.
|
Una delle caratteristiche essenziali di un DataBase Relazionale, è la presenza di un DataBase Management System (DBMS). Si tratta di una struttura che si pone ad organizzatore degli accessi alla base di dati, fornendo una vista particolare del Database, in relazione all'utenza. Ad esempio, in una grande azienda dove il Database aziendale raccolga dati di contabilità generale, del personale e di magazzino, ogni utente, in relazione alle proprie funzionalità avrà visione solo di una parte dell'intero Database ignorando l'esistenza degli altri dati a cui non potrebbe comunque accedere.Il magazziniere non potrà in alcun modo accedere ai dati di contabilità.
|
Lo schema rapprenta la tipica struttura
di un DBMS
Caratteristiche che distinguono un DBMS da altri sistemi di
programmazione sono:
- Capacità di gestire dati non volatili
- Capacità di accedere in modo efficiente a grandi quantità di dati.
- Mantenimento di un modello di dati o astrazione mediante la quale l'utente può osservare i dati
- Mantenimento di Linguaggi che permettano la Definizione, la Gestione, la Sicurezza dei dati
- Gestione delle transazioni, accesso corretto e concorrente alla Base di Dati
- Accesso Controllato alla Base di Dati
- Capacità di recupero e ripristino dei dati
Ultimo Aggiornamento23 Settembre 1998