Estratto del documento

BASI DI DATI APPUNTI + SLIDE

UNIVERSITÀ DI BOLOGNA

2023/24

1

INTRODUZIONE

DATI = tutto quello che è salvato sull’hard disk, che è salvato su memoria fisica

BASI = collezioni = insiemi di dati che fanno parte della stessa collezione

Chi produce dati?

- Organizzazioni (aziende / ente pubblico): ognuna ha comparti che gestiscono dati prodotti dall’azienda stessa.

- Social media

- Big data

- Dispositivi mobili

Perché di dati sono importanti?

Dati sono importanti per 3 punti di vista:

1. Sono (così come il capitale/beni prodotti/ecc.), qualsiasi azienda ha una struttura e ad ogni livello

RISORSA AZIENDALE →in

di questa struttura vengono prodotti dati ogni azienda c’è sempre necessità di software per custodire, manipolare

e analizzare dati;

2. Nell’economia digitale ci sono aziende che hanno come dei , così come altre aziende hanno

BENE PRODOTTO DATI

prodotti come macchine, abbigliamento, ci sono aziende che producono dati quini vendono bit;

3. Applicando tecniche di analisi dei dati e intelligenza artificiale spesso dai dati si ricavano quindi

INFORMAZIONI

conoscenze che possono essere da supporto per le decisioni perché possono creare vantaggi competitivi.

Conoscenze sui dati dai corsi precedenti del Corso di studi:

• Sistemi Operativi→ algoritmi e tecniche per rappresentare i dati ed organizzarli all’interno della memoria secondaria

(file system).

• Architettura di Internet→ algoritmi e tecniche per trasmettere i dati in un sistema di comunicazione.

• →

Programmazione linguaggi e metodi per realizzare sistemi software in grado di gestire dati persistenti memorizzati su

file esterni all’applicazione.

Introduzione al mondo delle basi di dati (database - DB) da quattro prospettive complementari:

1. Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc).

2. Progettista come progettare un DB.

3. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI].

4. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]

DIFFERENZA TRA INFORMAZIONE E DATO

INFORMAZIONE = notizia o concetto che dà conoscenza su un fatto

DATO = codifica simbolica dell’informazione (versione ‘asciugata’ dell’informazione)→ modo di rappresentare informazioni

mediante dei simboli, nel nostro caso mediante degli 0 e 1.

→ Informazione è qualcosa di più del dato: se ho un dato, senza contesto, non mi fa risalire all’informazione.

Esempio: se immagino di trovare nota leggendo questa nota posso dedurre che la Ferrari sia arrivata ottava nella

FERRARI, 8

corsa di formula 1 se sto parlando di contesto sportivo, ma posso dedurre che ho comprato 8 bottiglie di Ferrari se sono in un

contesto di ristorante→ quindi questo dato senza contesto non mi permette di capire l’informazione.

Esempio più concreto: file Excel con dati di azienda agricola della Campania, dati relativi a sensori all’interno dell’azienda che

raccoglie informazioni relative al tempo, pioggia, ecc.

Se ho solo dati, risalire alle informazioni è molto difficile, se ho un foglio Excel ma non è specificato il contesto, unità di misure

ecc, non capisco l’informazione.

→Dal DATO NON è POSSIBILE RISALIRE ALL’INFORMAZIONE SENZA AVERE DEI DETTAGLI IMPORTANTI.

DATI possono essere di tanti tipi, in base alla tipologia possono esserci metodi di analisi diversi.

Noi analizziamo caso generico in cui i dati possono appartenere a queste tipologie: numerico intero o con virgola, booleano,

data, stringa, testo, binario. 2

APPROCCI DI GESTIONE DEI DATI

SISTEMA INFORMATIVO (SI) = è una parte/componente di un’organizzazione il cui scopo è quello di gestire informazioni utili

ai fini dall’organizzazione stessa.

Con SI non necessariamente si parla di informatica, si intende tutto quello che consente all’organizzazione di gestire le

informazioni, quindi che siano componenti, personale, ecc., non per forza componenti digitali/automatizzate.

La porzione automatizzata di un sistema informativo prende il nome di SISTEMA

INFORMATICO, dove al suo le informazioni sono rappresentate da dati.

Noi ci occupiamo solo della parte del SI in cui si utilizzano i computer. →

Gran parte dei sistemi informatici ha necessità di gestire dati in Dati memorizzati su MEMORIA

MANIERA PERSISTENTE

SECONDARIA, cioè su hard disk quindi non vengono persi al riavvio della macchina.

Per costruire sistema informativo, sono presenti due approcci di gestione:

1. APPROCCIO CONVENZIONALE (basato su software non specializzati): per gestire i dati mi appoggio su software non

specializzati nella gestione di dati (Esempio Excel) e costruisco da zero, con un linguaggio, un software e per salvare dati di

volta in volta devo salvare dati sottoforma di file o cartelle. Lo stesso applicativo ha una parte di codice per leggere e

scrivere su file e una parte di codice per gestire interfaccia utente, filtrare dati e in mezzo vi è il S.O. che offre supporto per

la lettura e scrittura su file.

Limitazioni:

- Non c’è chiara distinzione tra codice/applicazioni e dati →

- Assume che dati siano salvati su file con un chiaro e preciso modo

applicazione contiene al suo interno la logica di gestione e memorizzazione dei dati stessi (es. formato interno dei dati)

Applicazione salva dati su file: deve sapere dove si trova file e sapere come sono scritti i dati.

→problemi

PROBLEMA 1: quando devo gestire grandi collezioni di dati di scalabilità

PROBLEMA 2: quando ci sono piu utenti o applicazioni che accedono contemporaneamente ai dati.

Questo approccio può andare bene se il sistema gestisce pochi dati e se viene usato da singolo utente o pochi ma entra in

crisi quando sistema deve gestire tanti dati e che viene usato da molti utenti.

2. APPROCCIO SPECIALIZZATO che impariamo nel corso Basi di Dati: separa i dati dall’applicazione, i dati vengono gestiti

DBMS

da un software specializzato = categoria di software pensata per gestire collezione di dati grandi, condivisi e

persistenti con vincoli di efficienza e sicurezza. Come se fosse una cassaforte che si fa carico di organizzare e custodire dati

in modo sicuro. →altrimenti

BASE DI DATI = collezione di dati persistente (salvata in hard disk) e gestita da DBMS NON è UNA BASE DI

DATI.

Come cambia gestione: tra dati ed effettiva memorizzazione su

disco, quindi tra l’applicazione e file, c’è un software intermedio che

→divisione

è DBMS tra applicazione e dati quindi non devo scrivere

dove si trovano dati e come vengono salvati perché se ne occupa

DBMS, dati possono trovarsi anche in un’altra macchina. Applicazione deve

curare solo aspetto logico ma non i dettagli di come sono salvati i dati e dove

sono salvati.

Dati si trovano da qualche parte e l’applicazione si rivolge a DBMS chiedendo

dei dati, senza specificare dove sono i file e in che formato, questo se ne

occupa DBMS distinzione netta tra applicazione e gestione dei dati.

DBMS non fa riferimento a specifico software, ma fa riferimento a una

categoria di prodotti che sanno gestire insieme di dati ma in maniera diversa,

più o meno hanno stesse caratteristiche e struttura interna complessa.

DBMS non si fa solo carico di scrivere dei dati in disco, ma fa molto di più, si occupa anche di:

- EFFICIENZA: DBMS garantiscono che operazioni sui dati siano gestite in maniera piu efficiente di quanto potrebbe

fare un programmatore scrivendo codice in java, Python, ecc. per salvare file. Questa efficienza deriva dall’utilizzo

intelligente delle strutture dati. Nei DBMS si usano strutture a indice che contengono informazioni sulla posizione dei

contenuti di interesse sulla base del valore di un campo chiave. Strutture ad albero dinamiche di tipo B (B-tree) e

3 →

B+(B+-tree) sono quelle più frequentemente utilizzate per la realizzazione di indici. Ricerca O(log(N)). Inserimento

→ →

O(log(n)). Cancellazione O(log(n)).

All’interno di molti DBMS si interagisce con un linguaggio, per esempio con il linguaggio SQL previsto per utilizzatore

finale, ma internamente ha un linguaggio nascosto che si basa su operatori algebrici per l’accesso dei dati (algebra

relazionale). DBMS garantisce l’ottimizzazione di operazioni di ricerca (interrogazioni) query SQL viene tradotta in

una sequenza di operatori algebrici per l’accesso ai dati (algebra relazionale), cioè viene tradotta in linguaggio

matematico, programma viene riscritto in modo più efficiente per consumare meno memoria e poi avviene l’accesso

ai dati.

DBMS forniscono adeguate strutture dati per organizzare i dati all’interno dei file e per supportare le operazioni di

ricerca, aggiornamento, inserimento, modifica (operazioni CRUD). In genere, parliamo di strutture dati ad albero o

tabelle hash.

- CONCORRENZA: tutti DBMS sono pensati per far sì che più utenti o applicazioni vadano a lavorare/modificare stessi

dati in regime di concorrenza. La maggior parte dei DBMS forniscono un livello di granularità di locking più fine di

quello convenzionale (a livello di tabella, pagina, o singola entry). Se non gestisco concorrenza e più utenti effettuano

modifiche su stessi dati, posso ottenere output diversi, non desiderati e quindi eventualmente sbagliati. Per prevenire

tali situazioni, i DBMS implementano algoritmi di controllo della concorrenza che garantiscono che operazioni sui dati

concorrenti producano lo stesso risultato di un’esecuzione seriale. Per gestire la concorrenza si utilizzano LOCK

MANAGER = componente del DBMS responsabile di gestire i lock alle risorse del DB e di implementare le

transazioni.

- AFFIDABILITÀ: ci sono operazioni sui dati particolarmente delicate che devono essere gestite nella logica del tutto o

niente, o vengono eseguite tutte le operazioni o nessuna. Esempio: faccio trasferimento da un conto all’altro: prelevo

da un conto e incremento l’altro conto. Se bancomat va in crash mentre faccio queste operazioni? Cioè, prelevo da un

conto ma non fa l’operazione di versarli nell’altro conto. Quindi DBMS devono fornire strumenti per annullare

operazioni non completate e meccanismi di roll-back quindi che ripristino la situazione iniziale. In molti casi i DBMS

mettono a disposizione appositi strumenti ed algoritmi per garantire la persistenza dei dati anche in presenza di

malfunzionamenti hardware/software. Il controllore di affidabilità utilizza dei file di LOG, nei quali sono indicate tutte

le operazioni svolte dal DBMS. Algoritmi ad-hoc (es. algoritmo di ripresa a caldo/a freddo) per ripristinare lo stato dei

dati a partire dai LOG del DBMS.

- SICUREZZA: maggior parte dei DBMS implementa politiche di controllo degli accessi ai dati mediante sistemi di

permessi. Utenti diversi possono fare operazioni diverse sui dati. Più utenti possono usare dati ma in modo diverso,

con permessi diversi. Alcuni utenti possono vedere alcuni dati e altri no, avere permessi di lettura ma non di scrittura

ecc. →

Altra caratteristica dei DBMS è la SCALABILITÀ: dati spalmanti su più macchine Possibilità di gestire grandi moli di dati

aumentando il numero di istanze del DBMS presenti nel sistema (DATABASE DISTRIBUITO). Quasi tutti i sistemi informativi

hanno database distribuiti, ma in questo corso non li tratteremo.

ARCHITETTURA A LIVELLI

Un DBMS organizza i dati secondo 3 LIVELLI DI ASTRAZIONE COMPLEMENTARI:

1. LIVELLO/SCHEMA FISICO→descrive come i dati sono memorizzati su memoria secondaria: dove sono salvati e che

struttura dati ho usato per salvare i dati. Sviluppatore non vede queste funzionalità, può solo dare preferenze sulla

struttura dati da usare.

2. LIVELLO/SCHEMA LOGICO (più importante)→ descrive l’organizzazione logica dei dati: indica logicamente come

sono organizzati/rappresentati (dal punto di vista logico) i dati da parte del DBMS e le relazioni tra i dati. Inoltre,

definisce come l’utilizzatore del DBMS deve preparare i dati in modo che siano utilizzabili dal DBMS.

DBMS classificati in 4/5 famiglie in base al modello logico dei dati che supportano, ovvero a come richiedono che

devono essere classificati i dati:

Modello Relazionale (il più usato): dati strutturati in tabelle, con tutte le righe che hanno lo stesso numero di colonne.

Modello Gerarchico

Modello Reticolare

Modello ad Oggetti

Approcci NoSQL (ce ne sono diversi). 4

3. LIVELLO/SCHEMA ESTERNO (o delle viste)→ descrive come i dati

appaiono per un utente o un gruppo di utenti: consente di avere viste

personalizzate della stessa base di dati da parte di diversi

utenti/applicazioni→ specifica la sicurezza, quale porzione di dati è

visibile a ciascun utente.

PROPRIETÀ DI INDIPENDENZA TRA I LIVELLI: INDIPENDENZA MODELLO LOGICO – MODELLO FISICO

L’organizzazione logica dei dati non dipende dalle strutture dati usate per

l’effettiva memorizzazione degli stessi su disco applicazioni accedono al DBMS

specificando i concetti logici del modello dei dati, NON i dettagli relativi alla loro

memorizzazione.

INTERAZIONE CON UN DBMS

È possibile interagire con DBMS in 3 modi:

1. mediante INTERFACCIA GRAFICA

2. mediante LINGUAGGIO ORIENTATO AI DATI: DBMS prevedono linguaggio di programmazione (diverso dai linguaggi

interattivi come java) orientato ai dati che hanno caratteristica di implementare solo operazioni sui dati (inserire dato,

cancellare, ricercare, aggiornare, modificare) ma non posso scrivere software a sè stante, un’interfaccia grafica ecc. ì

Oppure usa linguaggio orientato ai dati, ma immerso all’interno all’applicazione.

3. LINGUAGGIO INTERNO per fare operazione piu efficiente e consuma meno tempo ma è nascosto al programmatore.

Quasi tutti i DBMS mettono a disposizione dei linguaggi:

- Definizione dello schema logico (Linguaggio DDL)

- Manipolazione delle istanze (Linguaggio DML)

Linguaggi orientati ad i dati, molto diversi da linguaggi di programmazione “tradizionali” (es. C/C++/Java/etc).

Noi vedremo il linguaggio (DDL+DML) SQL per il MODELLO RELAZIONALE.

Le applicazioni che si interfacciano con un DBMS:

- integrano codice delle operazioni sul DB (es. SQL) all’interno del loro codice, o di quello di una libreria/framework.

- utilizzano le API (fornite dal DBMS) per la connessione dati.

I DBMS NON sono tutti UGUALI, hanno differenze sostanziali, ad esempio in termini di: modello logico supportato (Es.

relazionale), linguaggio DDL/DML (SQL-2? SQL-3? varianti?), algoritmi di indicizzazione (es. R+ tree?), supporto alle transazioni

(es. proprietà ACID?), gestione della concorrenza, ecc.

Vantaggi nell’uso di DBMS: Quando usare un DBMS in un progetto SW?

- Necessità di gestire volumi consistenti di dati

- Necessità di costruire sistemi data-centric con molte operazioni di accesso ai dati

- Necessità di condividere dati, fornendo l’accesso a diversi sistemi SW/applicazioni

- Necessità di garantire la persistenza dei dati anche a fronte di possibili guasti e malfunzionamenti HW/SW

- Necessità di implementare meccanismi di sicurezza per l’accesso ad i dati in un ambiente multi-utente

Svantaggi nell’uso di DBMS: Quando NON usare un DBMS in un progetto SW?

- Pochi dati o persistenza non necessaria.

- Prestazioni: In alcuni sistemi con richieste di efficienza sull’elaborazione (es. real-time), l’overhead computazionale

introdotto dal DBMS può essere eccessivo …

- Costo: Spese per l’acquisto di DBMS, formazione del personale, amministrazione del DB, etc

- Complessità: Applicazioni/sistemi di dimensioni ridotte, o dispositivi hardware con risorse limitate (es. microcontrollori).

5

MODELLO RELAZIONALE

Abbiamo detto che i dati sono articolati su 3 LIVELLI DI ASTRAZIONE: esterno, logico e fisico.

Ora analizziamo il LIVELLO LOGICO che indica come logicamente devo organizzare i dati per poterli far gestire da un DBMS,

quale struttura dati logica devo usare per dare i dati al DBMS.

MODELLO LOGICO consiste in un:

- insieme di concetti per strutturare/organizzare i dati relativi ad un certo dominio d’interesse. Posso strutturare dati

attraverso grafi, oppure con strutture fisse o variabili.

- insieme di regole per modellare eventuali vincoli e restrizioni sui dati: definisce formalismo per esprimere se i dati

sono validi o no.

Regole e concetti generali per strutturare dati devono essere generici ed indipendenti dalla base di dati che ho in mente, che

andrò a realizzare, quindi le regole devono applicarsi qualsiasi sia il caso d’uso della banca di dati.

Proprietà (auspicabili) dei livelli in un DBMS:

• →interagire

INDIPENDENZA FISICA con il modello logico in modo indipendente dallo schema fisico.

• →

INDIPENDENZA LOGICA interagire con il livello esterno in modo indipendente dallo schema logico dei dati.

Esistono diversi modelli logici (non tanti, circa 10 modelli) quindi possono essere suddivisi in circa 10 classi di diversi modelli

logici. Noi ci concentriamo su 2 modelli:

1. MODELLO RELAZIONALE (più utilizzato) quello che andremo a spiegare ora.

2. MODELLO SCHEME-LESS

MODELLO RELAZIONALE è il più usato e datato, proposto nel 1970 da Codd. Molto usato perché ha tante caratteristiche

accattivanti:

- è modello generale che si può applicare nella maggior parte dei casi in cui devo costruire una base di dati (cioè è il più

efficiente)

- è intuitivo e si basa su nozioni di algebra di base quindi ha basi matematiche

- garantisce indipendenza tra i livelli (esterno e fisico) quindi come strutturo i dati è indipendente da come il DBMS

strutturerà fisicamente i dati per la memorizzazione ecc.

Intuizione che c’è dietro: se voglio organizzare dati per farli gestire da DBMS devo strutturarli in record di dimensione fissa,

quindi a modi di tabella: righe e colonne, tutte righe stesso numero di colonne. La ta

Anteprima
Vedrai una selezione di 16 pagine su 72
Basi di dati - Informatica per il management Pag. 1 Basi di dati - Informatica per il management Pag. 2
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 6
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 11
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 16
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 21
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 26
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 31
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 36
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 41
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 46
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 51
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 56
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 61
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 66
Anteprima di 16 pagg. su 72.
Scarica il documento per vederlo tutto.
Basi di dati - Informatica per il management Pag. 71
1 su 72
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 noefer127 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 Bologna o del prof Di Felice Marco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community