Estratto del documento

Basi di dati

Introduzione

Un’organizzazione per funzionare necessità 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 collezioni 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.

Le basi di dati sono:

 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.

Il DBMS garantisce:

 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 (back up 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 tipo: 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.

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’immagine accanto è

l’architettura a 3 livelli per il DMBS. Lo schema fisico riassumo

come le relazioni individuate nello schema logico sono

effettivamente memorizzate sui dispositivi di memorizzazione

di massa. Lo schema logico è il modello relazionale e possono

essergli associati più di schemi esterni. Uno schema esterno è

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 sterno, 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).

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

transazione 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 effettuate e individuata mediante un ID.

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 ad 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

1

… ( … ) ℎ ∈ , … , ∈

prodotto cartesiano è l’insieme delle n-uple ordinate

1 2 1 1 1

⊆ …

. Una relazione matematica è un sottoinsieme del prodotto cartesiano dove il grado

1 2

è 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) e

gli è 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

1 2

( , , , ) ( R è il nome/intestazione della tabella).

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, espressione 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 conseguenze 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 quando 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 relazione 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 questo per

convenzione se hanno nomi diversi erediterà in nome dell’attributo di

1 2 1

L’unione tra queste due relazione contiene tutte le tuple, prese una sola volta, che sono contenute

1 2

o in o in o in entrambe, inoltre lo schema è uguale a .

1 2 1

L’intersezione contiene tutte le tuple, prese una sola volta, contenute sia in che in e lo

1 2 1 2

schema del risultato è uguale a .

1

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

1 2 1 2 1

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 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 necessità 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.

N.B. 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 è dove la condizione è un confronto tra il valore su un attributo e una

costante o tra i valori di due attributi (della stessa

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