Estratto del documento

Basi di dati

Introduzione

Un’organizzazione per funzionare necessita di risorse che sono denaro, personale, dati e informazioni. Questi ultimi due rappresentano il patrimonio informativo che esiste a prescindere dal sistema automatizzato (sistema informatico) e individuano una risorsa strategica poiché sono più stabili nel tempo rispetto alle tecnologie o al personale.

Le basi di dati in generale sono collezioni di informazioni classificate come dati e sono utilizzate, oltre che per la raccolta, anche per la distribuzione, l’elaborazione e la conservazione. Con un’accezione più specifica una base di dati è una collezione di dati in memoria secondaria gestita da un software detto DBMS (data base management system) che consente di gestire e interrogare grandi collezioni di dati.

Per collezionare i dati si potrebbe anche ricorrere ai file, tuttavia ciascun programma dovrebbe avere la sua copia dei dati di interesse e sorgerebbero problemi per l’aggiornamento, con probabilità di dati incoerenti e non aggiornati allo stesso modo. Le basi di dati sono nate proprio per ovviare a questi inconvenienti e gestire le informazioni in maniera integrata e flessibile limitando al minimo il rischio di incoerenze o ridondanze.

Caratteristiche delle basi di dati

  • Grandi. Le dimensioni molto maggiori dei dati rispetto alla memoria principale dei dispositivi richiede la memorizzazione su quella secondaria.
  • Condivise. Nelle organizzazioni, specie se grandi, vi sono vari reparti e suddivisioni, dunque ciascun utente o programma deve avere la possibilità di usufruire del sistema di dati comune attraverso varie modalità. Per garantire l’accesso condiviso, il DBMS implementa il controllo di concorrenza.
  • Persistenti. Le basi di dati hanno un tempo di vita che prescinde dai programmi che le utilizzano, al contrario dei dati in memoria centrale.

Funzionalità del DBMS

  • Affidabilità. È la capacità di conservare pressoché intatto il contenuto della base di dati anche a fronte di malfunzionamenti hardware e software, errori umani e guasti (o almeno ne permette la ricostruzione). In particolare, il DBMS implementa il salvataggio e ripristino (backup e recovery) dei dati e accade spesso che essi siano memorizzati su dispositivi fisici diversi per garantire una sicurezza ulteriore.
  • Privatezza. Ciascun utente, riconosciuto mediante il nome utente, viene abilitato ad effettuare determinate operazioni sulla base di dati mediante autorizzazioni. Ve ne sono di due tipi: l’utente può leggere tutti i dati e modificare X; l’utente può leggere i dati X e modificare Y.
  • Efficienza. Consentono di svolgere le operazioni utilizzando risorse accettabili dagli utenti in termini di spazio e tempo, tuttavia richiedono di essere installate su un sistema informatico adeguato.
  • Efficacia. Rendono produttive, in ogni senso, le attività svolte dagli utenti. Con ciò si intende che il DBMS e le applicazioni vengono progettate in modo tale da garantire l’efficacia complessiva del sistema.

La rappresentazione dei dati avviene su più livelli così che la modifica di quelli inferiori non richieda la modifica del programma che fa riferimento al livello più alto.

Un modello di dati è un insieme di costrutti utilizzati per organizzare i dati nel DBMS e descriverne la dinamica. Quello relazionale utilizza come costruttore la relazione che permette di definire insiemi di record omogenei e si rappresenta per mezzo di tabelle. Ciascuna tabella (relazione) ha un’intestazione, cioè un nome ed è composta da righe, che sono i record o tuple, e colonne, dette attributi o campi.

Schema e istanza

In ogni base di dati distinguiamo:

  • Schema, rappresenta la struttura della base di dati ed è invariante nel tempo (aspetto intensionale).
  • Istanza, sono i valori che la tabella assume e cambiano spesso (modello estensionale).

Inoltre distinguiamo principalmente i modelli logici, utilizzati nei DBMS per organizzare i dati (es: modello relazionale) da quelli concettuali, utilizzati nelle prime fasi di progettazione più per descrivere la realtà che per i dati con i quali essa viene rappresentata (es: modello entità relazione).

L’architettura a 3 livelli per il DMBS include:

  • Lo schema fisico, che riassume come le relazioni individuate nello schema logico sono effettivamente memorizzate sui dispositivi di memorizzazione di massa.
  • Lo schema logico, che è il modello relazionale e possono essergli associati più di schemi esterni.
  • Uno schema esterno, che è la descrizione di una porzione della base di dati e può essere organizzato diversamente rispetto allo schema logico adattandosi alle necessità di una particolare classe di utenti.

Sopra ad ogni schema esterno faccio un’interfaccia gli utenti, tuttavia quello esterno non è sempre presente esplicitamente, a volte assume la forma di vista. In altre parole, una vista è un modo di organizzare i dati diverso da quello logico in modo tale da favorire l’utilizzo delle informazioni necessarie a ciascuna tipologia di utenti; è un focus sulla base di dati stessa. L’architettura a livelli rende indipendenti:

  • Lo schema logico ed esterno da quello fisico, cioè una relazione prescinde dalla sua realizzazione fisica.
  • Lo schema logico da quello esterno, così una modifica a quello esterno non richiede una al livello logico, allo stesso modo un cambiamento al livello logico può non necessariamente richiedere una ristrutturazione esterna (ma a volte è necessario).

Accesso concorrente

Vediamo adesso come si svolge l’accesso concorrente che è di fondamentale importanza per le prestazioni del DBMS poiché l’accesso simultaneo al disco di più utenti è altamente probabile. Il concetto chiave è quello di transazione, cioè di una sequenza atomica, o indivisibile, di operazioni sulla base di dati (letture/scritture) che deve lasciarla consistente se lo era precedentemente. Per evitare l’inconsistenza, una transazione che vuole modificare un oggetto richiede un lock su tale oggetto, così che nessun’altra transazione potrà modificarlo prima che sia completata la modifica della prima transazione. Se due transazioni hanno un lock su due oggetti che si influenzano vicendevolmente e non possono dunque completarsi, si parla di deadlock e una delle due viene annullata. Inoltre, per garantire l’atomicità della transazione (proprietà tutto o niente) in caso di crush durante una transazione, essa viene annullata e si riporta la base di dati alla situazione precedente. Ciò è possibile grazie al mantenimento di un log, o storia (protocollo WAL), di ogni transazione effettuata e individuata mediante un ID.

Linguaggi di gestione dei dati

I DBMS sono caratterizzati dalla possibilità di utilizzare numerosi linguaggi per la gestione dei dati. In particolare, distinguiamo il data manipulation language (DML) che è il linguaggio per interrogare e modificare i dati, dal data definition language (DDL) utilizzato per la definizione dello schema della base di dati.

Il modello relazionale

Un modello di dati è una collezione di costrutti utilizzati per organizzare i dati di interesse e descriverne la struttura in modo tale che siano comprensibili a un elaboratore. Il modello più utilizzato è quello relazionale perché si basa sul concetto matematico di relazione insiemistica che viene rappresentata mediante tabelle e sui valori (le istanze). Una relazione matematica è definita su n domini (insiemi) non necessariamente disgiunti e il prodotto cartesiano è l’insieme delle n-uple ordinate. Una relazione matematica è un sottoinsieme del prodotto cartesiano dove il grado è il numero di domini sui quali è definita e la cardinalità è il numero delle n-uple da cui è composta.

Nel modello relazionale una tabella è una relazione se:

  1. Ogni colonna (attributo) contiene valori omogenei tra di loro (appartengono allo stesso dominio) ed è associato un nome unico nella relazione.
  2. Le righe (tuple) sono tutte diverse tra di loro.

Inoltre, l’ordine delle righe e delle colonne è irrilevante (modello non posizionale). Il modello relazionale è basato su valori: i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle tuple.

Sia X l’insieme degli attributi, A ⊆ X e t una tupla, t[A] è il valore che t assume in corrispondenza dell’attributo/attributi A. Inoltre, se una relazione R (tabella) si indica con (R, X), alcune tuple potrebbero contenere il valore NULL in corrispondenza di alcuni attributi. Questo particolare valore rappresenta un problema poiché può rappresentare 3 situazioni: valore inesistente, valore sconosciuto e nessuna informazione riguardo al valore. A seconda della funzione che svolge l’attributo in cui sono collocati possono rendere la tupla ammissibile o meno.

Vincoli

Un DBMS deve evitare l’immissione di informazioni non corrette, per questo vengono utilizzati dei vincoli di integrità sulla base di dati e la tupla è ammissibile solo se li soddisfa tutti, in tal caso è legale. In generale i vincoli si distinguono in intrarelazionali se riguardano una sola tabella, interrelazionali altrimenti.

I vincoli di tupla pongono condizioni su ciascuna tupla a prescindere dalle altre e garantiscono che ogni tupla contenga informazioni corrette per il suo utilizzo (insomma, coerenti con la realtà che descrivono). Se riguardano un solo attributo si parla di vincoli di dominio. Per esprimerli si utilizzano espressioni logiche come AND, OR, NOT, espressioni booleane o espressioni aritmetiche.

Una chiave è uno o un insieme di attributi utilizzati per individuare univocamente una tupla della relazione, una superchiave è invece un insieme di attributi che contiene una chiave; una chiave è una superchiave minimale (non contiene altre superchiavi). Un vincolo di chiave è di conseguenza un’asserzione che indica che un insieme di attributi forma una chiave per la relazione R, e di conseguenza in R non possono esserci tuple che hanno tutti i valori uguali negli attributi indicati come chiavi. Ciascuna relazione ha come superchiave l’insieme degli attributi, di conseguenza ciascuna relazione ha almeno una chiave (questa superchiave appena definita). Non possono esistere tuple con valore nullo su un attributo della chiave che viene indicata come primaria (quella di riferimento), altrimenti questa tupla non sarebbe identificabile e non si avrebbe la certezza che differisce dalle altre. La chiave primaria si indica attraverso la sottolineatura ed è possibile istituire un solo vincolo di chiave primaria per tabella.

I vincoli di integrità referenziale, o vincoli di foreign key, riguardano più tabelle: se X è un attributo della relazione R1 che ha un vincolo di foreign key con la relazione R2, ciascuna tupla di R1 deve avere come valore dell’attributo X uno appartenente ai valori della chiave primaria di R2. Ciò si indica attraverso la relazione di inclusione insiemistica. La chiave esterna della relazione referenziante deve avere lo stesso numero di colonne e dati compatibili con la chiave primaria della relazione referenziata. Inoltre, la presenza di un valore nullo nella chiave esterna non viola il vincolo di integrità referenziale.

Algebra relazionale

I linguaggi di interrogazione sono linguaggi formali che permettono di compiere interrogazioni sulla base di dati. Vi sono due tipologie di linguaggio che insieme costituiscono il linguaggio di interrogazione di una base di dati organizzata secondo il modello relazionale: calcolo relazionale e algebra relazionale. Il primo è dichiarativo in quanto descrive le proprietà che il risultato deve avere, mentre il secondo è un linguaggio procedurale poiché indica come viene ottenuto il risultato.

L’algebra relazionale è costituita da operatori che sono definiti su relazioni ed hanno come risultato una relazione, inoltre possono essere combinati per formulare interrogazioni complesse. Andiamo a vedere i vari operatori.

Operatori insiemistici

Ricordando che una relazione è un insieme di tuple omogenee (definite sugli stessi attributi), si possono applicare gli operatori insiemistici alle sole relazioni che sono compatibili rispetto all’unione:

  1. Le relazioni in ingresso hanno lo stesso numero di campi.
  2. Campi corrispondenti delle due relazioni, presi in ordine da sinistra a destra, hanno lo stesso dominio (quindi la compatibilità non si verifica con il nome dell’attributo).

Per convenzione, se hanno nomi diversi erediterà in nome dell’attributo di R1. L’unione tra queste due relazioni contiene tutte le tuple, prese una sola volta, che sono contenute in R1 o in R2 o in entrambe, inoltre lo schema è uguale a quello di R1 e R2.

L’intersezione contiene tutte le tuple, prese una sola volta, contenute sia in R1 che in R2 e lo schema del risultato è uguale a quello di R1.

La differenza è l’insieme di tuple che appartengono a R1 ma non a R2 e lo schema è come quello di R1.

Ridenominazione

La ridenominazione permette di modificare il nome di uno o più attributi di una relazione attraverso la sintassi ρ(R(F),E) dove:

  • E è l’espressione arbitraria di algebra relazionale (indica una relazione esistente o ottenuta mediante altri operatori, ad esempio l’unione).
  • R è l'istanza di relazione che rappresenta il risultato dell’esecuzione di E (contiene le stesse tuple di E, ma con alcuni campi rinominati). In altre parole, è il nome della nuova tabella ottenuta da E con i campi rinominati.
  • F è la lista delle ridenominazioni nella forma vecchio nome ↦ nuovo nome oppure posizione ↦ nuovo nome.

Per esempio, ρ((padre ↦ genitore), paternità).

Prodotto cartesiano

È anch’esso un operatore insiemistico ma per essere utilizzato non necessita della proprietà di compatibilità rispetto all’unione. La sintassi è RxS e la relazione contiene tutti i campi di R ordinati e tutti i campi di S ordinati. Ciascuna tupla è <r,s> dove r ∈ R e s ∈ S, quindi ogni tupla di R è accoppiata con ogni tupla di S. Se le due relazioni hanno un campo con lo stesso nome, questi per convenzione non hanno nome del prodotto cartesiano e si deve usare la posizione per riferirsi a loro, è dunque utile utilizzare la ridenominazione ed evitare questa situazione.

Nota Bene: nella ridenominazione si usa la posizione e non il nome dell’attributo.

Selezione e proiezione

La selezione è l’operatore che consente di selezionare le tuple di una relazione che verificano determinate condizioni, la sintassi è σ(condizione)(R) dove la condizione è un confronto tra il valore su un attributo e una costante o tra i valori di due attributi (della stessa relazione).

Anteprima
Vedrai una selezione di 6 pagine su 24
Basi di dati, Catarci, riassunto Pag. 1 Basi di dati, Catarci, riassunto Pag. 2
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Basi di dati, Catarci, riassunto Pag. 6
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Basi di dati, Catarci, riassunto Pag. 11
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Basi di dati, Catarci, riassunto Pag. 16
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Basi di dati, Catarci, riassunto Pag. 21
1 su 24
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher federica.mo1994 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Catarci Tiziana.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community