Basi di dati
Informatica: scienza che si occupa della gestione automatica delle informazioni
Caratteristica dei tempi contemporanei: abbondanza di archivi elettronici
Basi di dati: branca dell’informatica che si occupa della gestione e memorizzazione dei dati
Aspetti coinvolti nella gestione dei dati:
- Obiettivi
- Strumenti
- Processi
- Persone
Cerchiamo di approfondire questi aspetti con un caso di studio
Caso di studio
Tessere di fidelizzazione dei supermercati
Per quale motivo i supermercati spingono i clienti ad adottare le tessere di fidelizzazione?
Obiettivi
Scopo: Apporre (in senso figurato) nome e cognome sugli scontrini emessi
Le tessere di fidelizzazione fanno parte di un processo di raccolta dati
Obiettivi:
- Profilare la clientela
- Individuare tipologie di clienti (con abitudini di spesa comuni) sulla base di:
- Prodotti e quantità acquistate
- Localizzazione temporale degli acquisti: settimana/mese/anno
- Proporre prodotti e servizi personalizzati
- Tracciare l’evoluzione dei gusti della clientela
- Massimizzare i profitti delle vendite
- Diminuire le scorte di magazzino
Processo
Un insieme di attività tra loro collegate, svolte all'interno di un’organizzazione, che creano valore trasformando delle risorse (input del processo) in un prodotto finale (output del processo) a valore aggiunto, destinato ad un soggetto interno o esterno all’organizzazione.
Focus sui processi
Elementi importanti di un processo
…
Attori: le persone coinvolte nel processo (direttamente o indirettamente)
Obiettivi:
- del processo
- degli attori coinvolti. Gli obiettivi degli attori possono essere anche in contrasto tra loro. Gli attori coinvolti possono avere obiettivi non allineati con gli obiettivi del processo (es., comportamenti opportunistici)
- Dati e Strutture Dati coinvolte
Relazioni tra dati, obiettivi e processi
Processi, obiettivi, dati gestiti si influenzano reciprocamente
Esempio dal caso precedente
Il registratore di cassa nasce per obiettivi fiscali
- Fa parte del processo di controllo del pagamento dell’IVA (Imposta sul Valore Aggiunto)
- Non nasce per raccogliere informazioni sull’utente
Il processo di profilazione degli utenti richiede di raccogliere info sulle generalità di un acquirente. Per questo è stata introdotta la lettura delle tessere nei registratori di cassa
Perché si studiano i database relazionali in un corso di laurea in statistica?
(La maggior parte dei) dati trattati da uno statistico
- sono raccolti / memorizzati / gestiti tramite database
- La maggior parte dei database usa la tecnologia relazionale
Le strutture dati richieste per il funzionamento ottimale dei database relazionali influiscono
- Sul dato
- Sui processi di raccolta, gestione, estrazione ed analisi del dato
Per questo è molto importante che voi approfondiate questo argomento
Tipologie di strutture dati
I dati, sulla base del livello di strutturazione, si dividono in 3 categorie:
- Dati completamente non strutturati
- Dati semi-strutturati
- Dati fortemente strutturati
Utilità della strutturazione
Devo selezionare 3 persone su N possibili candidati
Requisiti:
- Conoscenza lingua inglese
- Esperienza sui database relazionali
Se un impiegato ha compilato la tabella qua sotto, non ho necessità di leggere i curricula
Una struttura dati (come quella qua sopra) anche di grosse dimensioni, può essere gestita con strumenti di elaborazione automatica delle informazioni
Se venisse richiesto di valutare altre expertise (es., conoscenza della statistica) …… cosa dovrebbe accadere alla struttura dati?
Uso dei dati e obiettivi
Considerazioni
Una struttura dati facilita lo svolgimento di un compito
- Nell’esempio precedente l’individuazione dei CV è favorita da una struttura dati
- Strumenti informatici possono essere usati per estrarre agevolmente da dati con una forte strutturazione anche di grosse dimensioni (es., la tabella dei cv precedente ma con migliaia di righe)
Al cambiare del compito/obiettivo/… la struttura dati potrebbe dover essere modificata. Perché? Perché dati e strutture dati sono modelli
Modello
Modello: una rappresentazione ridotta e semplificata della realtà, compiuta da un soggetto, che conserva gli aspetti più significativi, utili per risolvere uno problema o in generale per raggiungere uno specifico obiettivo
Aspetti salienti:
- Soggetto che costruisce il modello
- Scopo del modello
- Cosa entra a far parte del modello e cosa no
Database relazionali
Data Base: una collezione di dati (di solito di grosse dimensioni) organizzata, utilizzata per gestire (inserire, ricercare e recuperare) informazioni in modo rapido, di solito attraverso strumenti informatici
Esempi: elenco telefonico, guida TV, gestione prenotazioni linee aeree, carriera studenti universitari
Terminologia:
- DataBase Management System (DBMS): il software che gestisce i dati
- Esempio: Oracle®, MySQL®, SQLServer®
- Database (DB): l’insieme dei dati
- Nel linguaggio comune, DB viene spesso usato sia per indicare i dati sia per indicare il software
Organizzazione dei dati
Database (DB):
- Un insieme di dati
- Organizzati in tabelle (chiamate anche relazioni)
Ogni tabella è composta da:
- Attributi, chiamati anche campi o field (corrispondono alle colonne della tabella qua sopra)
- Tuple, chiamate anche record (corrispondono alle righe della tabella qua sopra)
Un DBMS può gestire più DB contemporaneamente.
Come risolvere i problemi legati alle ripetizioni?
Un database relazionale memorizza i dati in tabelle distinte collegate tra loro. Può sembrare innaturale, ma ha dei vantaggi.
Dati distribuiti su più tabelle
Separiamo i dati degli autori dalle opere e colleghiamoli con delle chiavi.
- Chiave primaria: un attributo che permette di identificare univocamente una tupla all’interno di una tabella
- Chiave esterna: permette di identificare una tupla all’interno di un’altra tabella (chiamata anche chiave straniera o chiave secondaria)
- Per disambiguare attributi omonimi (cioè attributi di tabelle diverse ma con lo stesso nome), premetto il nome della tabella al nome dell’attributo
Qual è la chiave primaria della tabella auto?
Tra gli attributi Auto.Targa e Manutenzioni.Targa, qual è chiave primaria e qual è la chiave secondaria?
Criterio: basta osservare i valori duplicati:
- Non sono ammessi per la chiave primaria
- Possibili (e frequenti) per la chiave secondaria
Considerazioni
- Ripetere più volte la stessa informazione può favorire l’insorgere di errori
- Stesso dato scritto in modo diverso
- Aggiornamenti non effettuati su tutte le copie
- Durante la cancellazione qualche copia potrebbe salvarsi
La suddivisione della tabella di partenza nelle 2 tabelle (autori e opere) si chiama normalizzazione. Sarà approfondita in seguito, durante la progettazione dei DB. La normalizzazione riduce la ripetizione di informazioni e quindi le possibili cause di errore.
Interrogazione di un DB
Per comprendere come si svolge l’interrogazione di un DB introduciamo l’algebra relazionale
Algebra: modello matematico che descrive operandi e operatori
- Operandi: tabelle
- Operatori:
- Proiezione π
- Selezione σ
- Prodotto cartesiano x
- Join
- …
Combinando opportunamente gli operandi è possibile ricostruire l’unitarietà dell’informazione che si perde spargendo i dati su tabelle distinte.
Proiezione e selezione
- Seleziona alcuni attributi di una tabella
- Seleziona alcune tuple di una tabella
Prodotto cartesiano
Provare tutte le combinazioni possibili. Spesso è abbinato ad una operazione di selezione σ (TabA x TabB)= =TabA.codicefornitore TabB.codicefornitore. Il predicato di selezione viene anche chiamato condizione
Join
Nome dato a prodotto cartesiano seguito da selezione. Indicato con: condizione
Esempio di interrogazione: Date le tabelle (una complicazione delle precedenti)
- FORNITURA: (DATAFORNITURA, QT, CODICEPEZZO)
- PEZZI: (CODICEPEZZO, NOMEPEZZO, CODICEFORNITORE)
- FORNITORI: (CODICEFORNITORE, NOMEFORNITORE)
Cosa restituisce questa espressione?
π (NOMEPEZZO, DATAFORNITURA, QT σ (NOMEFORNITORE=‘GIANI’⨯ ⨯FORNITURA PEZZI FORNITORI cond 1 cond 2))
Dove Cond1: FORNITURA.CODICEPEZZO=PEZZI.CODICEPEZZO
Cond2: PEZZI.CODICEFORNITORE= FORNITORI.CODICEFORNITORE
Introduzione SQL
Architettura Client/Server dei DBMS
Problema
- Analogia con il mondo della diplomazia
- Immaginate una riunione internazionale
- I delegati non parlano tutte le lingue del mondo
Lingua franca: una lingua che viene usata come strumento di comunicazione fra persone che hanno diverse lingue madri
Nel mondo dei DB relazionali, il linguaggio SQL svolge il ruolo di lingua franca
SQL (Structured Query Language)
Interrogazioni in SQL
- FORNITURA: (DATAFORNITURA, QT, CODICEPEZZO)
- PEZZI: (CODICEPEZZO, NOMEPEZZO, CODICEFORNITORE)
- FORNITORI: (CODICEFORNITORE, NOMEFORNITORE)
Le stringhe vanno racchiuse tra apici, così non possono essere confuse con i nomi degli attributi e le parole chiave del linguaggio SQL
SELECT DATAFORNITURA, QT, NOMEPEZZO FROM FORNITURA, PEZZI, FORNITORI WHERE FORNITURA.CODICEPEZZO=PEZZI.CODICEPEZZO AND PEZZI.CODICEFORNITORE=FORNITORI.CODICEFORNITORE AND FORNITORI.NOMEFORNITORE='giani';
Query generiche
- SELECT Attributo1, Attributo2
- FROM Tabella1
- WHERE condizione;
* Significa tutti gli attributi
- SELECT *
- FROM Tabella1, Tabella2, TabellaN
- WHERE condizione;
Le stringhe vanno racchiuse tra apici, così non possono essere confuse con i nomi degli attributi e le parole chiave del linguaggio SQL
Esempi di condizione
- Attributo1<>Attributo2 AND (Attributo1='riso' OR Attributo2='cottura')
- eta >10 AND genere='femminile'
I numeri non vanno racchiusi tra apici
Nota: una SELECT SQL deve terminare con il ;
Il ; aiuta a capire qual è il confine tra due SELECT, dove finisce un comando ed inizia il successivo.
Scelta dei nomi: regole per scegliere i nomi di attributi e tabelle
- Un nome di attributo o tabella non può iniziare con una cifra numerica (Es. 1eta)
- Possono essere presenti cifre numeriche dalla seconda lettera del nome in avanti (Es. tab2, t2bis, …)
- Maiuscole e minuscole non fanno differenza (Es. Attrib2 è equivalente a attrib2)
- All’interno di una stessa tabella non ci può essere più di un attributo con lo stesso nome (niente duplicati)
- Non si possono usare i nomi riservati ai comandi del linguaggio (es., select, from, …)
WHERE
- Nella WHERE vanno inserite delle espressioni booleane
- Una tupla rende l'espressione vera la tupla sarà inserita nei risultati
- Le espressioni si valutano su tuple singole non possono essere testate condizioni che fanno riferimento a gruppi di tuple:
- Es. di condizione scorretta: Prezzo > [… funzione che calcola la media di tutti i prezzi …]
- Es. di condizione corretta: Prezzo > 500
Operatori
| Simbolo | Nome | Esempio |
|---|---|---|
| = | Uguale | cognome = 'Rossi' |
| <> | Diverso da | gg_bisestile <> 29 |
| > | Maggiore | eta > 18 |
| < | Minore | posti < 5 |
| >= | Maggiore uguale | altezza >= 1.70 |
| <= | Minore uguale | peso <= 80 |
Possono essere utilizzati gli operatori logici AND, OR, NOT (Es. (eta > 18) and (eta < 25))
L'operatore AS
Tabelle (in grassetto le chiavi primarie) Attributi diversi ma con lo stesso nome (codice_regista) sono presenti su più tabelle, occorre disambiguare gli attributi con la notazione nometabella.nome-attributo
SELECT titolo FROM film, regista WHERE film.codice_regista=regista.codice_regista and cognome='Spielberg';
La query può essere riscritta in questo modo, utilizzando l'operatore AS
SELECT titolo FROM film as f, regista as r WHERE f.codice_regista=r.codice_regista and cognome='Spielberg';
Il linguaggio SQL è case insensitive, and è equivalente a AND
ORDER BY
Come posso ordinare i risultati di una query?
Es.: tab1= {matricola, cod_pers} tab2= {cod_pers, eta, cognome, nome}
SELECT * le tuple sono FROM tab1, tab2 ordinate in base al valore dell'attributo WHERE … età ORDER BY tab2.eta;
Nota: gli attributi presenti nella clausola ORDER BY, devono apparire anche nella clausola SELECT
Altri esempi di ORDER BY: le tuple sono ordinate in base all'attributo età, per le tuple con gli stessi valori di età, si ordina in base al cognome
- ORDER BY eta, cognome
- ORDER BY eta ASC (normalmente non occorre specificare ASC)
- ORDER BY cognome DESC
- ORDER BY eta ASC, cognome DESC
A volte conviene utilizzare l'operatore AS per rinominare attributi dal nome lungo
SELECT descrizione_prodotto AS dp, … FROM … WHERE … ORDER BY dp
Notazione usata nei manuali SQL
Notazione per spiegare i comandi
- Le parti comprese tra [ ] sono opzionali
- Le {} indicano che occorre scegliere un’opzione tra { opzione1 | opzione 2 | … | opzioneN }
Esempio sul comando ORDER BY
[ORDER BY order_expression [{ASC | DESC}] ]
- L’intero comando order by è opzionale
- [{ASC | DESC}] significa che
- ASC o DESC possono essere omessi, l’opzionalità è data da []
- Se li voglio inserire ne posso inserire solo 1
Introduzione modello ER
Fasi della progettazione di un DB
Progettazione concettuale
- Scopo: tradurre il risultato dell’analisi dei requisiti in una descrizione formale indipendente dalla tecnologia usata dal DBMS
- Output: Modello Entità Relazioni (ER)
Progettazione logica
- Scopo: tradurre lo schema concettuale in uno schema logico dipendente dalla tecnologia (paradigma) utilizzato per gestire i dati
- Output: … (dipende dalla tecnologia)
(Proget.) Schema concettuale
Uno schema concettuale viene rappresentato per mezzo del modello Entità Relazioni (ER)
Proprietà fondamentali del modello ER
- Rappresentazione dei concetti tramite descrizione formale indipendente dalla tecnologia usata dal DBMS
- Focus sui concetti, non sui dettagli implementativi
- Fornisce una descrizione sintetica dei dati (visione d’insieme)
(Proget.) Schema logico
La progettazione logica ha lo scopo di tradurre lo schema concettuale in uno schema logico
- Schema logico: fortemente dipendente dalla tecnologia (paradigma) utilizzato per gestire i dati
- Diverse scelte possibili (ad ogni scelta corrisponde una famiglia di prodotti)
- Relazionale
- Grafi
- Documenti
Modello ER
- Entità: classi di oggetti con proprietà comuni ed esistenza autonoma ai fini dell’applicazione di interesse
- Relazione: rappresentano legami logici, significativi per l’applicazione di interesse tra due o più entità
Entità Relazione Entità Cardinalità delle relazioni
Modello Entità Relazioni (ER): Modello Concettuale
Modello Relazionale: Modello Logico
Modello Relazionale dati memorizzati in tabelle (chiamate anche relazioni)
Cardinalità delle relazioni
Cardinalità: [minima, massima]
3 famiglie di casi possibili
- […, 1]:[…, 1] o in maniera sintetica 1:1 (spesso le cardinalità minime si omettono)
- […, 1]:[…, N] o in maniera sintetica 1:N
- […, N]:[…, N] o in maniera sintetica N:N
Come si implementano le relazioni in un database relazionale?
Traduzione relazione N:N (da modello ER a modello Relazionale)
Iscrizione.Matricola è chiave primaria o esterna? – Chiave esterna
Iscrizione.Id è chiave primaria o esterna? – Chiave esterna
Iscrizione.Id e Iscrizione.Matricola (assieme) fungono da chiave primaria per la tabella ponte (Iscrizione)? – Si
Modello Relazionale (sono riportati solo i nomi delle tabelle e gli attributi)
- STUDENTE (matricola, cognome, nome)
- CORSO (id, nome)
- ISCRIZIONE (matricola, id_corso) tabella ponte
Traduzione relazione 1:N (da modello ER a modello Relazionale)
Traduzione (semplificata) verso il Modello Relazionale
- LINEA (id, origine, destinazione)
- AUTOBUS (targa, numero posti, id_linea)
NB: id_linea svolge il ruolo di chiave esterna
La relazione 1:N può essere anche tradotta come una relazione N:N, cioè aggiungendo una tabella ponte
Traduzione relazione 1:1 (da modello ER a modello Relazionale)
Traduzione (ulteriormente semplificata) verso il Modello Relazionale
- Coniugati(id_marito, nome_moglie, id_moglie)
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Basi di dati completi
-
Basi di dati - appunti
-
Appunti Basi di dati
-
Appunti completi corso Basi di dati