Modello relazionale
Modello relazionale - Modello logico molto diffuso tra i DBMS, si basa su una sola struttura dati, la relazione.
Relazioni
Dominio - Insieme, finito o infinito, di valori (come numeri interi, stringhe di caratteri, etc.).
Relazione - Generico sottoinsieme finito del prodotto cartesiano di n domini.
Definizione - Dati n domini D1, D2, … Dn (con n finito), l’insieme R costituisce una relazione su tali domini se:
Grado di una relazione - Numero n dei domini su cui una relazione è definita.
Tupla - Generico elemento di una relazione.
Cardinalità - Numero di tuple (di elementi) contenute in una relazione.
Proprietà delle relazioni
L'ordinamento delle tuple di una relazione non è definito, in quanto si tratta di un insieme, secondo la concezione tradizionale del termine. Le tuple di una relazione, in quanto insieme, sono necessariamente distinte l'una dall'altra; una stessa relazione non può contenere tuple identiche.
Nota - Mentre una relazione è un insieme finito di tuple, i domini su cui è definita possono essere infiniti.
Notazioni posizionale e per nome
Notazione posizionale - Ogni tupla di una relazione corrisponde a una sequenza ordinata di valori d1, d2, ..., dn, ciascuno dei quali appartiene al dominio D1, D2, …, Dn corrispondente, su cui la relazione è definita. Per questa ragione, è possibile identificare i generici valori delle tuple attraverso la posizione che essi occupano rispetto alla definizione della relazione cui le tuple appartengono.
Esempio - Data la tupla t = (d1, d2, ..., dn):
Nome di attributo - Nome associato agli elementi che compongono le tuple di una relazione, stabilendo una corrispondenza tra tale nome e il dominio a cui appartengono i singoli valori delle tuple.
Attributo - Coppia costituita da un nome di attributo e dal dominio corrispondente.
Notazione per nome - Gli attributi permettono di identificare i componenti delle tuple attraverso il nome loro assegnato e ne esprimono con chiarezza il significato.
Schemi di relazione e di base di dati
Schema di relazione - Insieme degli attributi (coppie di nomi e domini) su cui una relazione è definita.
Istanza di relazione - Insieme finito di tuple definito a partire da uno schema di relazione.
Schema di base di dati - Insieme degli schemi distinti delle relazioni che fanno parte di una base di dati.
Valori nulli
Valore nullo - Particolare valore (indicato con null o ?), estraneo a qualsiasi dominio, che le tuple possono contenere se occorre rappresentare informazioni mancanti o prive di significato rispetto al caso specifico di ogni tupla.
Nota 1 - In generale, le basi di dati rappresentano contesti della realtà, pertanto ha senso prevedere la possibilità che alcune informazioni non siano specificate perché mancanti o prive di senso.
Nota 2 - Normalmente è possibile indicare quali attributi di una relazione ammettono valore nullo e quali no.
Chiavi
Chiave - Insieme di uno o più attributi capace di identificare univocamente le tuple di una relazione. Solitamente è determinato dall’esame del dominio applicativo cui una base di dati si riferisce.
Definizione - Dato uno schema di relazione R(A1, A2, …, An), un sottoinsieme di attributi X ⊂ A1, A2, …, An è una chiave di R se:
- Non esistono due tuple di R che attribuiscano agli attributi dell’insieme X gli stessi valori;
- Non esistono sottoinsiemi propri di X che verifichino la proprietà di unicità rispetto alle tuple della relazione R.
Nota 1 - In presenza di sottoinsiemi propri con la stessa caratteristica, qualsiasi insieme di attributi unico rispetto alle tuple di una relazione è detto superchiave.
Nota 2 - Una relazione può avere più chiavi, dette chiavi candidate: una avrà il ruolo di chiave primaria, le altre di chiavi alternative.
Chiave primaria - Chiave effettivamente impiegata per identificare le tuple di una relazione. Si tratta della chiave candidata caratterizzata dal minor numero di attributi componenti e maggiormente impiegata nelle interrogazioni.
Nota - Le chiavi primarie non possono assumere valori nulli, diversamente dalle chiavi alternative.
Chiave esterna - Particolare vincolo tra determinati attributi di due relazioni, per mezzo del quale si realizza l’associazione tra le relazioni stesse, dette rispettivamente relazione referente e relazione riferita.
Definizione - Dati:
- Due relazioni R ed R’;
- Una chiave Y della relazione R’;
- Un qualunque insieme di attributi X della relazione R, compatibile in numero e dominio con la chiave Y di R’;
L’insieme X è una chiave esterna della relazione R sulla relazione R’ se (chiamate t e t’ le generiche tuple di R ed R’):
Nota 1 - Le chiavi esterne sono il costrutto che realizza tipicamente il concetto di vincolo di integrità referenziale, un legame tra associazioni che deve essere rispettato. I linguaggi per la definizione e la manipolazione delle basi di dati (come SQL) consentono di definire le azioni da compiere qualora un’operazione di inserimento, modifica o cancellazione sui dati violasse un vincolo di integrità.
Nota 2 - I nomi degli attributi coinvolti in un vincolo di chiave esterna non devono necessariamente coincidere, tuttavia l’omonimia degli stessi può risultare vantaggiosa nella specifica delle interrogazioni. Naturalmente, l’omonimia degli attributi non è ammessa quando un vincolo di chiave esterna costituisce il legame tra una relazione e sé stessa.
Nota 3 - Le chiavi esterne possono assumere valore nullo.
Nota 4 - Una stessa relazione può contenere più di una chiave esterna.
Vincoli di integrità
Principali vincoli di integrità
- Vincolo di dominio - Determina il valore o i valori che un attributo di una relazione può assumere in base alla sua definizione.
- Vincolo di obbligatorietà - Determina la possibilità di specificare valori nulli per gli attributi.
- Vincolo di chiave - Determina il ruolo di chiave, primaria o alternativa, di uno o più attributi di una relazione.
- Vincolo di integrità referenziale - Determina il legame (chiave esterna) che associa due relazioni attraverso particolari attributi.
Nota - Le basi di dati sono spesso caratterizzate da altre tipologie di vincoli, necessarie per modellare con precisione il dominio applicativo sul quale sono basate.
Algebra relazionale
Algebra relazionale - Formalismo che consente di esprimere le interrogazioni a una base di dati per mezzo di operatori specializzati alle relazioni. Comprende cinque operazioni elementari (proiezione, selezione, prodotto cartesiano, unione, differenza), a partire dalle quali sono definite altre operazioni derivate.
Proprietà di chiusura - Le operazioni dell’algebra relazionale risultano in nuove relazioni, pertanto è possibile concatenarle per ottenere la combinazione dei rispettivi effetti.
Nota - L’operazione di ridenominazione è una funzionalità addizionale, necessaria per definire le operazioni dell’algebra rispetto ai nomi degli attributi anziché alla definizione posizionale.
Calcolo relazionale - Formalismo alternativo all’algebra relazionale e, sotto opportune ipotesi, equivalente ad essa. Consente di esprimere le interrogazioni a una base di dati per mezzo di formule logiche, le quali devono essere verificate dalle tuple restituite in risposta.
Operazioni addizionali
Ridenominazione
Ridenominazione - Operazione che consente di modificare il nome di uno o più degli attributi di una relazione.
Definizione - Dati una relazione R e i suoi attributi A1, A2, …, An, la ridenominazione ρ restituisce una relazione di pari grado e contenuto ma con attributi B1, B2, …, Bn in sostituzione dei precedenti.
Nota - La ridenominazione è corretta se i nuovi nomi specificati per gli attributi sono distinti.
Operazioni elementari
Proiezione
Proiezione - Operazione che consente di restringere una relazione rispetto a un sottoinsieme dei suoi attributi.
Definizione - Data la relazione R e un sottoinsieme A1, A2, …, An dei suoi attributi, la proiezione Π restituisce una relazione di grado inferiore a R, secondo gli attributi selezionati. Anche la cardinalità può risultare inferiore, se a seguito della proiezione alcune tuple diventano uguali.
Nota - Gli attributi della relazione risultante da una proiezione rispettano l’ordine in cui sono dichiarati.
Selezione
Selezione - Operazione che consente di restringere il contenuto di una relazione alle sole tuple che rispettano un determinato predicato.
Definizione - Data la relazione R e un predicato F, la selezione σ restituisce una relazione di pari grado e di cardinalità minore o uguale a R (anche nulla), con le sole tuple per le quali il predicato è vero.
Condizione di selezione - La condizione di selezione F può essere:
- Un predicato semplice (di uguaglianza o di confronto), i cui operandi sono gli attributi della relazione o i valori in essi contenuti;
- Una combinazione booleana di predicati semplici, definita attraverso gli operatori logici AND, OR, NOT.
Esattamente, l’operazione di selezione consiste nel determinare il valore di verità del predicato specificato per ogni tupla della relazione cui si riferisce, sostituendo agli attributi o ai valori di questi ultimi gli operandi definiti nel predicato stesso.
Nota - La selezione non modifica i nomi degli attributi della relazione sulla quale opera.
Prodotto cartesiano
Definizione - Date due generiche relazioni R ed S, rispettivamente di grado k1 e k2, il prodotto cartesiano × restituisce una relazione di grado k1 + k2 e di cardinalità k1 × k2, le cui tuple corrispondono a tutte le possibili combinazioni tra le tuple delle relazioni R ed S.
In particolare, ciascuna tupla della relazione risultante è costituita dai k1 attributi di R, seguiti dai k2 attributi di S.
Nota - L’operazione di prodotto cartesiano è possibile soltanto se le relazioni in gioco hanno schemi disgiunti; in caso di attributi omonimi è necessaria una ridenominazione preventiva in almeno uno dei due schemi selezionati.
Unione
Unione - Operazione tra due relazioni che consente di selezionare tutte le tuple che sono contenute nell’una, nell’altra o in entrambe.
Definizione - Date due relazioni R ed S, l’unione ∪ restituisce una relazione di grado pari alle relazioni R ed S, contenente tutte le tuple di R e di S a eccezione dei duplicati.
Nota - L’operazione di unione è possibile solo se le relazioni in gioco hanno lo stesso schema; tale schema è assunto dalla relazione risultante.
Differenza
Differenza - Operazione tra due relazioni che consente di selezionare le tuple della prima che non si trovano nella seconda.
Definizione - Date due relazioni R ed S, la differenza - restituisce una relazione di grado pari alle relazioni R ed S, contenente tutte le tuple di R che non compaiono in S.
Nota 1 - L’operazione di differenza, come l’unione, è possibile soltanto se le relazioni in gioco hanno lo stesso schema e tale schema è assunto dalla relazione risultante.
Nota 2 - Per definizione, l’operazione di differenza non è commutativa, cioè R - S ≠ S - R.
Operazioni derivate
Intersezione
Intersezione - Operazione tra due relazioni, consente di selezionare tutte le tuple che sono contenute in entrambe.
Definizione - Date due relazioni R ed S, l’intersezione ∩ restituisce una relazione di grado pari alle relazioni R ed S, contenente tutte le tuple che compaiono sia in R, sia in S.
L’intersezione è un’operazione derivata. Può essere definita attraverso la differenza nel modo seguente:
Nota - L’operazione di intersezione, come unione e differenza, è possibile soltanto se le relazioni in gioco hanno lo stesso schema e tale schema è assunto dalla relazione risultante.
Join
Join (o theta-join) - Operazione tra due relazioni, consente di selezionare le tuple del loro prodotto cartesiano secondo una particolare condizione detta predicato di join.
Definizione - Date due relazioni R ed S e i rispettivi attributi AR e AS, il join θ restituisce una relazione T (R × S) di grado pari alla somma dei gradi di R ed S e contenente le tuple del prodotto cartesiano che rispettano il predicato di join specificato.
Il join è un’operazione derivata. Equivale a un prodotto cartesiano seguito da una selezione.
Nota 1 - L’operazione di join è possibile soltanto se gli schemi delle relazioni in gioco sono disgiunti; lo schema della relazione risultante è dato dalla loro unione.
Nota 2 - Le operazioni di join il cui predicato è definito da un’uguaglianza (=) sono chiamate equi-join.
Join naturale
Join naturale - Operazione tra due relazioni, consente di combinare le rispettive tuple attraverso la "sovrapposizione" degli attributi comuni. Si tratta di un particolare tipo di join, semplificato ma molto frequente. Ha senso soltanto rispetto alla notazione per nome degli attributi del modello relazionale.
Definizione - Date due relazioni R ed S con attributi comuni, il join naturale restituisce una relazione in cui tali attributi sono posti in uguaglianza e dalla quale sono eliminati i duplicati degli stessi.
Il join naturale è un’operazione derivata. Detti rispettivamente UR e US gli insiemi degli attributi delle relazioni R ed S, e V = {v1, v2, …, vk} l’insieme dei loro attributi comuni:
Inoltre:
- Se UR = US (gli insiemi coincidono) il join naturale tra R ed S equivale all’operazione di intersezione;
- Se l’intersezione tra UR e US è pari all’insieme vuoto (le relazioni hanno schemi disgiunti), il join naturale tra R ed S equivale all’operazione di prodotto cartesiano.
Nota - Il join naturale ha significato soltanto se gli attributi comuni alle relazioni in gioco hanno domini compatibili.
Divisione
Divisione - Operazione tra due relazioni con schemi simili, consente di selezionare le tuple che nella prima sono combinate in tutti i modi possibili con le tuple della seconda.
Definizione - Date due relazioni R ed S e i rispettivi insiemi di attributi UR e US tali che UR ⊇ US, la divisione ÷ restituisce una relazione il cui schema è pari alla differenza degli schemi di R ed S, nella quale sono contenute le tuple che in R sono combinate con tutte le tuple di S rispetto all’insieme di attributi US.
In altre parole, l’operazione di divisione restituisce tutte le tuple per cui vale la seguente condizione:
SQL
SQL (Structured Query Language) - Supportato da tutti i DBMS relazionali, è il primo linguaggio dichiarativo nato per realizzare l’accesso e la manipolazione dei dati memorizzati in un database. È fondato sul calcolo (e sull’algebra) relazionale. Fonde le caratteristiche di DDL (Data Definition Language) e DML (Data Manipulation Language), cioè comprende istruzioni sia per la definizione dei database, sia per l’interrogazione e l’aggiornamento dei dati in essi contenuti.
Definizione dei dati
Tipo dei dati
Tipi numerici esatti
Rappresentano valori numerici interi o decimali in virgola fissa.
| Tipo | Specifica |
| INTEGER | Rappresenta valori numerici interi, tipicamente con 32 bit di precisione. |
| SMALLINT | Rappresenta valori numerici interi "piccoli", normalmente con 16 bit di precisione. |
| BIGINT | Rappresenta valori numerici interi "grandi", normalmente con 64 bit di precisione. |
| NUMERIC | Rappresenta valori numerici secondo una precisione (numero totale di cifre) e una scala (cifre decimali) variabili. |
| DECIMAL | Simile a NUMERIC, può fornire una precisione maggiore rispetto ai dati per i quali è implementato. |
Tipi numerici approssimati
Rappresentano valori numerici approssimati in virgola mobile, cioè con esponente e mantissa.
| Tipo | Specifica |
| REAL | Rappresenta valori numerici approssimati con precisione singola (dipendente dall’implementazione). |
| DOUBLE PRECISION | Rappresenta valori numerici approssimati con precisione doppia rispetto al tipo REAL. |
| FLOAT | Rappresenta valori numerici approssimati con precisione variabile, eventualmente specificata. |
Tipi carattere
Rappresentano stringhe di caratteri di varia lunghezza.
| Tipo | Specifica |
| CHARACTER (o CHAR) | Rappresenta stringhe di caratteri con lunghezza predefinita, aggiungendo spazi quando occorre raggiungerla. |
| CHARACTER VARYING (o VARCHAR) | Rappresenta stringhe di caratteri con lunghezza massima predefinita. |
Tipi temporali
Rappresentano date o istanti di tempo.
| Tipo | Specifica |
| DATE | Rappresenta le date nel formato definito dal DBMS, con quattro cifre per l’anno, due per il mese, due per il giorno. |
| TIME | Rappresenta il tempo con una precisione massima pari a 6 (ossia microsecondi), nel formato TIME 'hh:mm:ss[.n[nnnnn]]'. |
| TIMESTAMP | Rappresenta la concatenazione di data e tempo, nelle modalità relative ai tipi DATE e TIME. |
| INTERVAL | Rappresenta intervalli di tempo. |
Altri tipi predefiniti
| Tipo | Specifica |
| BOOLEAN | Rappresenta una dato booleano, il cui valore può corrispondere a TRUE, FALSE o UNKNOWN. |
| CLOB (Character Large Object) | Rappresenta una sequenza di caratteri di elevata dimensione. |
| BLOB (Binary Large Object) | Rappresenta una sequenza di bit di elevata dimensione. |
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Gestione dati e archivi - le basi di dati - introduzione al corso
-
Sistemi di gestione dati e processi - modulo Basi di dati
-
Gestione delle informazioni, Informatica
-
Gestione dati e archivi - progettazione di basi di dati / metodologie e modelli