Estratto del documento

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)
Anteprima
Vedrai una selezione di 10 pagine su 56
Appunti Basi di Dati - completi Pag. 1 Appunti Basi di Dati - completi Pag. 2
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 6
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 11
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 16
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 21
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 26
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 31
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 36
Anteprima di 10 pagg. su 56.
Scarica il documento per vederlo tutto.
Appunti Basi di Dati - completi Pag. 41
1 su 56
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 aina.belloni 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 Milano - Bicocca o del prof Cesarini Mirko.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community