Estratto del documento

Introduzione alle basi di dati

Mercoledì 28 settembre 2022, 15:00

“I dati sono il nuovo petrolio” (Clive Humby, UK Mathematician, 2006). Al contrario del petrolio, i dati vengono generati ad un ritmo impressionante. Così come il petrolio è stato la risorsa naturale che ha portato alla rivoluzione industriale, i dati saranno la risorsa naturale della nuova rivoluzione industriale.

Caratteristiche dei dati

  • È ormai facile produrre quantità enormi di dati, che possono essere riusati, condivisi, collegati per soddisfare nuove esigenze e per condurre nuove analisi.
  • I dati devono essere organizzati e governati in modo razionale e memorizzati in forme usabili e accessibili.
  • Fa parte delle risorse di un'organizzazione.
  • Ha diverse funzioni:
    • Raccolta, acquisizione delle informazioni.
    • Archiviazione, conservazione delle informazioni.
    • Elaborazione delle informazioni.
    • Distribuzione, scambio di informazioni.
    • Il concetto di “sistema informativo” è indipendente da qualsiasi forma di automatizzazione.
  • Collezione di dati in memoria secondaria stabile in modo che si conservino con il passare del tempo.
  • Collezione di dati in memoria secondaria gestita da un apposito sistema software, chiamato DBMS (Data Base Management Systems).

Questi dati devono essere gestiti, memorizzati e organizzati in maniera corretta per diversi scopi. La memoria secondaria deve essere condivisa in modo da poter essere acceduta da tanti agenti (o utenti) in modo concorrente ed è gestita in modo centralizzato.

DBMS (Data Base Management Systems)

  • Il DBMS è il sistema responsabile della gestione dei dati: i dati sono accessibili all’esterno solo tramite il DBMS.
  • Sistema (prodotto software) in grado di gestire collezioni di dati che siano:
    • Grandi: di dimensioni molto maggiori della memoria centrale dei sistemi di calcolo utilizzati normalmente.
    • Persistenti: con un periodo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano.
    • Condivise: utilizzate da applicazioni diverse, garantendo:
      • Affidabilità: resistenza a malfunzionamenti hardware e software.
      • Privatezza: con una disciplina e un controllo degli accessi.
      • Efficienza: utilizzare al meglio le risorse di spazio e tempo del sistema.
      • Efficacia: rendere produttive le attività dei suoi utilizzatori.
  • Ogni DBMS è basato su un modello dei dati, ovvero un insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne le operazioni.
  • Ci si riferisce principalmente a DBMS basati sul modello relazionale, a sua volta basato sulla nozione di relazione.

Proposto da E. F. Codd nel 1970 per favorire l’indipendenza fisica dei dati (ovvero per rendere il modo in cui si usano i dati a livello logico indipendente dalla loro memorizzazione fisica). Disponibile come modello logico in DBMS reali nel 1981. Si basa sul concetto matematico di relazione (ma con importanti varianti). Le relazioni hanno una rappresentazione naturale per mezzo di tabelle. È un formalismo che consente di organizzare, interrogare e utilizzare dati secondo certe regole e certe strategie.

Relazioni matematiche e database

  • Il prodotto cartesiano D1 × D2 × ... × Dn è l’insieme di tutte le n-ple ordinate (d1, d2, ..., dn) tali che d1 ∈ D1, d2 ∈ D2, ..., dn ∈ Dn.
  • Una relazione matematica sugli insiemi D1, D2, ..., Dn è un sottoinsieme del prodotto cartesiano D1 × D2 × ... × Dn.
  • Se R è una relazione matematica sugli insiemi D1, D2, ..., Dn, tali insiemi sono detti i domini della relazione R.
  • Una relazione su n domini si dice che ha grado (o arità) n.
  • Il numero di n-ple contenute in una relazione è la cardinalità della relazione stessa.
  • Una relazione matematica è quindi un insieme di ennuple ordinate (dette anche n-ple, o tuple) su D1, D2, ..., Dn, dove ogni tupla è una sequenza di valori della forma (d1, ..., dn) tale che d1 ∈ D1, ..., dn ∈ Dn.
  • La tupla (d1, ..., dn) viene anche scritta come <d1, ..., dn>.

Una relazione nel modello relazionale è simile ad una relazione matematica, ma con le seguenti differenze:

  • Le posizioni che determinano le varie componenti delle tuple sono dette attributi (dominio della relazione matematica).
  • Ogni attributo è caratterizzato da un nome ed un insieme di valori atomici, quest’ultimo detto dominio dell’attributo.
  • Si noti che un valore atomico è un valore semplice (ad esempio, un intero o una stringa), non costituito da una struttura complessa.
  • Non può succedere che due attributi della stessa relazione abbiano lo stesso nome.

Rappresentazione delle relazioni

  • Una relazione nel modello relazionale si può rappresentare come una tabella in cui:
    • Gli attributi corrispondono alle colonne ed i nomi degli attributi (tutti diversi l’uno dall’altro) sono usati come intestazioni delle colonne.
    • Poiché ad ogni colonna della relazione è associato il nome di un attributo, l’ordinamento delle colonne nella tabella è irrilevante; la struttura, al contrario della relazione matematica, è non posizionale.
    • Ogni riga della tabella corrisponde ad una tupla della relazione, e siccome la relazione è un insieme di tuple (cioè una collezione senza ripetizioni), non ci possono essere due righe uguali nella tabella.
  • Sia X l’insieme degli attributi di una relazione R. Se t è una tupla di R, cioè una tupla su X, e se A ⊆ X, allora t[A] oppure anche t.A detta la “restrizione” di t su A, indica il valore che la tupla t ha in corrispondenza dell’attributo A.
  • La stessa notazione è estesa anche ad insiemi di attributi.
  • Per completezza definiamo anche t[∅] (cioè la restrizione della tupla t sull’insieme vuoto di attributi, e stabiliamo che t[∅] sia la cosiddetta “tupla vuota”, cioè una tupla senza componenti).

Schema di relazione e istanza

  • La specifica del nome R di una relazione, degli attributi A1, A2, ..., An e dei domini di tali attributi D1, D2, ..., Dn forma lo schema di relazione, che si denota come R(A1: D1, A2: D2, ..., An: Dn) oppure semplicemente nel caso non interessi esplicitare i domini degli attributi come R(A1, A2, ..., An).
  • Di conseguenza, una tupla di R con t[A1] = a, t[A2] = b, ..., t[An] = c si può denotare anche come <A1: a, A2: b, ..., An: c>.
  • Una tupla di una relazione si può rappresentare come “tupla etichettata”, in cui le etichette sono gli attributi della relazione, ed i valori associati alle etichette sono i valori in corrispondenza dei vari attributi.
  • I valori di ciascuna colonna sono fra loro omogenei, cioè appartengono allo stesso dominio.
  • Le righe (cioè le tuple) sono tutte diverse fra loro (perché la relazione è un insieme di tuple, non un multiinsieme).
  • Le intestazioni delle colonne (attributi) sono tutte diverse tra loro.
  • Nella rappresentazione tabellare della relazione:
    • L’ordinamento tra le righe è irrilevante.
    • L’ordinamento tra le colonne è irrilevante.
  • Il modello relazionale è basato sui valori, quindi utilizza i valori per creare legami (relazioni) -> eventuali riferimenti fra due relazioni diverse sono espressi per mezzo di valori che compaiono nelle tuple di entrambe le relazioni.
  • Schema di relazione := un nome di relazione R con un insieme non vuoto di attributi A1, ..., An ed eventualmente anche i corrispondenti domini R(A1, ..., An) oppure R(A1: D1, A2: D2, ..., An: Dn).
  • Istanza di relazione su uno schema R(X) := insieme r delle tuple sull’insieme di attributi X.
  • Relazione := schema Z di relazione + istanza di relazione su Z.
  • Schema di base di dati := insieme non vuoto di schemi di relazione (con nomi diversi) R = {R1(A1 A2 ... An), ..., Rm(B1 B2 ... Bn)}.
  • Istanza di base di dati su uno schema R = {R1(X1), ..., Rm(Xm)} := insieme di relazioni r = {r1, ..., rm}, dove per ogni i = 1, ..., m, ri è una istanza relazione sullo schema Ri(Xi).
  • Base di dati := schema S di basi di dati + istanza di basi di dati su S.

Algebra relazionale

Giovedì 29 settembre 2022, 13:00

Formati da due componenti:

  • Operazioni sullo schema -> DDL: data definition language
  • Operazioni sui dati -> DML: data manipulation language interrogazioni ("query language") aggiornamenti.

Tipologia

  • Dichiarativi: specificano le proprietà del risultato ("che cosa").
  • Procedurali: specificano le modalità di generazione del risultato ("come").

Rappresentanti più significativi

  • Algebra relazionale: procedurale.
  • Calcolo relazionale: dichiarativo.
  • SQL (Structured Query Language): parzialmente dichiarativo.
  • QBE (Query by Example): dichiarativo.
  • Fornisce una base teorica e matematica ai linguaggi di query.
  • Formata da un insieme di relazioni + insieme di operatori che operano sulle relazioni.
  • Costituita da un insieme di operatori:
    • Definiti su relazioni.
    • Che producono relazioni.
    • E possono essere composti.

Operatori dell’algebra relazionale

  • Unione, intersezione, differenza.
  • Ridenominazione.
  • Selezione.
  • Proiezione.
  • Join in diverse versioni: join naturale, prodotto cartesiano, theta-join.

Ogni operatore è formato da sintassi (forma di frase) + semantica (significato della frase) + pragmatica (uso pratico della frase). A livello estensionale (cioè delle istanze), le relazioni sono insiemi di tuple, e quindi è sensato definire per essi gli operatori insiemistici. Sono operatori binari (due operandi) e i risultati dell’applicazione di tali operatori sono a loro volta relazioni (vista la proprietà di chiusura delle algebre). È possibile applicare unione (in RA \union), intersezione (in RA \intersect), differenza (in RA \diff) solo a relazioni che hanno uguali definizioni intensionali (ovvero stessi identici attributi). La semantica degli operatori insiemistici è quella classica.

L’algebra relazionale è un impianto matematico formato da operatori che lavorano su relazioni. Le relazioni sono quindi i “valori” su cui gli operatori agiscono. Il risultato di una interrogazione espressa in algebra relazionale è esso stesso una relazione e di tale relazione è rilevante sia l’insieme degli attributi sia, ovviamente, le tuple che lo compongono, ma non è, invece, significativo il nome. Potremmo scegliere l’espressione sintattica che ha generato il risultato come nome, ma poiché la relazione risultato non fa parte della base di dati (è semplicemente un valore calcolato nel sistema algebrico), tale nome è irrilevante. Quando passeremo ad analizzare i sistemi di basi di dati (che, al contrario dell’algebra, non sono solo formalismi matematici, ma sono veri e propri sistemi software), ci occuperemo del modo in cui vengono gestiti i risultati di interrogazioni.

L'algebra relazionale è un linguaggio funzionale (non esiste il concetto di side-effect). Operatore monadico (con un argomento) "modifica lo schema" (cambiando il nome di uno o più attributi) lasciando inalterata l'istanza dell'operando. Sintassi: in RA \rename_{A1, B1, ..., Bn}(Operando). Semantica: Lo schema della relazione rappresentata da “Operando” viene modificato sostituendo al nome di attributo Bn il nome An. Non ci devono essere duplicati negli attributi risultanti dalla ridenominazione (cioè A1, ..., An devono essere tutti diversi tra loro).

Operatori di selezione e proiezione

Supponiamo di volere l'unione dei genitori e dei loro figli. Operatore monadico (cioè con un argomento) che prevede la formulazione di una condizione (un’espressione booleana). Produce un risultato che:

  • Ha lo stesso schema dell'operando.
  • Contiene un sottoinsieme delle tuple dell'operando, quelle che soddisfano la condizione espressamente indicata nell’operatore. Sintassi: in RA \select_{condizione}(Operando). Condizione: espressione booleana applicata agli attributi della relazione utilizzando gli operatori classici di confronto.
  • Semantica: la relazione risultato ha gli stessi attributi dell’operando e contiene le tuple dell'operando che soddisfano la condizione specificata. Esempi: impiegati che guadagnano più di 50 e lavorano a Milano, impiegati che guadagnano più di 50, impiegati che hanno lo stesso nome della filiale presso cui lavorano.

Operatore monadico che produce un risultato che:

  • Ha parte degli attributi dell'operando.
  • Contiene tuple cui contribuiscono tutte le tuple dell'operando: sono le tuple ottenute dall’operando eliminando gli attributi che non compaiono nella lista espressamente indicata nell’operatore. Sintassi: in RA \project_{ListaAttributi}(Operando). Semantica: la relazione risultato ha i soli attributi contenuti in ListaAttributi, e contiene le tuple ottenute da tutte le tuple dell'operando ristrette agli attributi nella Lista.
  • Una proiezione contiene al più tante tuple quante l'operando, e può contenerne di meno, a causa di eliminazione di duplicati. Se X contiene un insieme di attributi “chiave” per R (quando nella stessa relazione non possono esistere due tuple che hanno lo stesso valore per quell'attributo), allora PROJX(R) contiene esattamente tante tuple quante R. Gli attributi sono un insieme quindi non hanno ordinamento. Infatti anche se una relazione matematica è formata da tuple ordinate, quando nel modello relazionale si è introdotto il concetto di tupla "etichettata" si è eliminata la componente di ordinamento, dando un nome all'attributo.

Esempi: matricola e cognome di tutti gli impiegati, cognome e filiale di tutti gli impiegati. Sono due operatori "ortogonali": selezione (decomposizione orizzontale) e proiezione (decomposizione verticale). Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione. Restituire matricola e cognome degli impiegati che guadagnano più di 50. Proiezione e selezione non sono commutative. Due espressioni relazionali sono equivalenti se sono diverse, ma applicate alla base di dati restituiscono lo stesso risultato.

Esercizi

  1. Trovare id del concerto (idconc) e id dell’artista (idart) dei concerti tenuti a Roma.
  2. Trovare id degli artisti (idart) che non hanno mai tenuto concerti a Napoli, assumendo che non esistano valori di idart nella relazione Concerto che non siano presenti nella relazione Artisti, e assumendo che esistano valori di idart nella relazione Concerto che non siano presenti nella relazione Artisti.

L’unico modo per esprimere condizioni di negazione (che non si riducano a semplici selezioni) è utilizzare l’operatore di differenza. Da questo segue che un principio importante da tenere presente per scrivere query corrette è: L’insieme degli elementi di A che non soddisfano la proprietà B è uguale all’insieme che otteniamo da A togliendo gli elementi che soddisfano la proprietà B.

Operatore JOIN

Mercoledì 5 ottobre 2022, 15:00

  • Permette di correlare dati in relazioni diverse.
  • Esistono diverse versioni del join: join naturale, theta-join, equijoin, join esterno, ecc.
  • Combinando selezione e proiezione, possiamo estrarre informazioni da una relazione, ma non possiamo però correlare informazioni presenti in relazioni diverse.
  • Operatore binario che produce un risultato il cui schema ha l'unione (quindi con un risultato che non ha duplicati) degli attributi degli operandi e le cui tuple sono costruite ciascuna a partire da due tuple che si "combinano", una di un operando ed una di un altro operando.

Se X1 e X2 sono due insiemi, l’espressione X1 ∪ X2 denota la loro unione. Siano R (X1), R (X2) due schemi di relazioni. R JOIN R è una relazione su X1 ∪ X2 il cui insieme di tuple è: { t su X1 ∪ X2 | esistono due tuple t1 ∈ R e t2 ∈ R tali che t1[X1] = t1 e t2[X2] = t2 }.

Diciamo che t1 ∈ R e t2 ∈ R sono combinabili dal join naturale se t1[X1 ∩ X2] = t2[X1 ∩ X2] => ogni tupla nel join tra R ed R proviene da due tuple combinabili dal join -> t1 ∈ R e t2 ∈ R tali che t1[X1 ∩ X2] = t2[X1 ∩ X2] si combinano per ottenere la tupla t tale che t[X1] = t1 e t[X2] = t2. In altre parole si combinano se coincidono negli attributi in comune. Il risultato di JOIN avrà l'unione degli attributi delle relazione R e R join in cui ogni tupla contribuisce al risultato. Join in cui c'è almeno una tupla che non contribuisce al risultato -> ci sono tuple che non si combinano con nessun'altra e verranno perse. Join in cui nessuna delle tuple delle due relazioni si combina. Join che restituisce come risultato il prodotto cartesiano delle due relazioni.

Anteprima
Vedrai una selezione di 17 pagine su 80
Basi Di Dati Pag. 1 Basi Di Dati Pag. 2
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 6
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 11
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 16
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 21
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 26
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 31
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 36
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 41
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 46
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 51
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 56
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 61
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 66
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 71
Anteprima di 17 pagg. su 80.
Scarica il documento per vederlo tutto.
Basi Di Dati Pag. 76
1 su 80
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 annalucia.lamacchia 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 Lenzerini Maurizio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community