Basi di Dati - unirc.itunirc.it/documentazione/materiale_didattico/597_2008_80... · 2011. 8....

75
Informatica - G. Caminiti Basi di Dati

Transcript of Basi di Dati - unirc.itunirc.it/documentazione/materiale_didattico/597_2008_80... · 2011. 8....

  • Informatica - G. Caminiti

    Basi di Dati

  • Informatica - G. Caminiti

    Basi di dati e sistemi informativi• Una base di dati è un insieme organizzato di dati utilizzati

    per il supporto allo svolgimento delle attività di un ente…– Azienda, ufficio, persona…

    • Un sistema informativo è una combinazione di risorse umane, materiali e di procedure per: – la gestione…– la raccolta…– l’archiviazione…– l’elaborazione…– lo scambio…

    …delle informazioni necessarie per le attività di un ente.

  • Informatica - G. Caminiti

    Sistema informativo, commenti• Ogni organizzazione ha un sistema informativo,

    eventualmente non esplicitato nella struttura• Quasi sempre, il sistema informativo è di

    supporto ad altri sottosistemi, e va quindistudiato nel contesto in cui è inserito

    • Il sistema informativo è di solito suddiviso in sottosistemi (in modo gerarchico o decentrato), più o meno fortemente integrati

  • Informatica - G. Caminiti

    Sistema organizzativo

    • Insieme di risorse e regole per lo svolgimentocoordinato delle attività (processi) al fine del perseguimento degli scopi

  • Informatica - G. Caminiti

    Risorse

    • le risorse di una azienda (o ente, amministrazione): – persone– denaro– materiali– informazioni

  • Informatica - G. Caminiti

    Sistema organizzativo e sistema informativo

    • Il sistema informativo è parte del sistemaorganizzativo

    • Il sistema informativo esegue/gestisceprocessi informativi (cioè i processi checoinvolgono informazioni)

  • Informatica - G. Caminiti

    Sistemi informativi e automazione

    • Il concetto di “sistema informativo” èindipendente da qualsiasiautomatizzazione: – esistono organizzazioni la cui ragion d’essere

    è la gestione di informazioni (p. es. servizianagrafici e banche) e che operano da secoli

  • Informatica - G. Caminiti

    Sistema Informatico

    • porzione automatizzata del sistemainformativo:la parte del sistema informativo che gestisce

    informazioni con tecnologia informatica

  • Informatica - G. Caminiti

    Sistema InformaticoSistema azienda

    Sistema organizzativo

    Sistema informativo

    Sistema informatico

  • Informatica - G. Caminiti

    Gestione delle informazioni

    • Raccolta, acquisizione• Archiviazione, conservazione• Elaborazione, trasformazione, produzione• Distribuzione, comunicazione, scambio

  • Informatica - G. Caminiti

    Gestione delle informazioni• Nelle attività umane, le informazioni vengono

    gestite in forme diverse: – idee informali– linguaggio naturale (scritto o parlato, formale o

    colloquiale, in varie lingue) – disegni, grafici, schemi– numeri e codici

    • e su vari supporti– mente umana, carta, dispositivi elettronici

  • Informatica - G. Caminiti

    Gestione delle informazioni• Nelle attività standardizzate dei sistemi

    informativi complessi, sono state introdotte col tempo forme di organizzazione e codifica delle informazioni

    • Ad esempio, nei servizi anagrafici si è iniziatocon registrazioni discorsive e poi– nome e cognome– estremi anagrafici– codice fiscale

  • Informatica - G. Caminiti

    Informazioni e dati

    • Nei sistemi informatici (e non solo), le informazioni vengono rappresentate in modo essenziale, spartano: attraverso i dati

  • Informatica - G. Caminiti

    Informazioni e dati

    informazione: notizia, dato o elemento checonsente di avere conoscenza più o menoesatta di fatti, situazioni, modi di essere.

    dato: ciò che è immediatamente presentealla conoscenza, prima di ognielaborazione; (in informatica) elementi di informazione costituiti da simboli chedebbono essere elaborati

  • Informatica - G. Caminiti

    Informazione = contenuto + struttura

    • Informazione non strutturata– Molto contenuto, poca struttura– Un romanzo e il suo indice (magari solo capitoli

    numerati)• Informazione strutturata

    – Molta struttura, contenuto rigidamente codificato (es. schedario di una biblioteca)

    – I sistemi informativi delle organizzazioni, le basi di dati

  • Informatica - G. Caminiti

    Dati e informazioni• Un esempio:

    Mario 275su un foglio di carta sono due dati e non significano molto

    • Se il foglio di carta viene fornito in risposta alla domanda “A chi mi devo rivolgere per il problema X; qual è il suo numero di telefono?”, allora i dati possono essere interpretati per fornire informazione e arricchire la conoscenza

  • Informatica - G. Caminiti

    Perché i dati?

    • La rappresentazione precisa di forme piùricche di informazione e conoscenza èdifficile

    • I dati costituiscono spesso una risorsastrategica, perché più stabili nel tempo di altre componenti (processi, tecnologie, ruoli umani):– ad esempio, i dati delle banche o delle

    anagrafi

  • Informatica - G. Caminiti

    Base di dati

    (accezione generica, metodologica) • Insieme organizzato di dati utilizzati per il

    supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona)

    (accezione specifica, metodologica e tecnologica)

    • insieme di dati gestito da un DBMS

  • Informatica - G. Caminiti

    Che cos'è l'informatica?

    • Scienza del trattamento razionale, specialmente per mezzo di macchineautomatiche, dell’informazione, considerata come supporto alla conoscenza umana e alla comunicazione (Accad. di Francia)

    Due anime:– metodologica– tecnologica

  • Informatica - G. Caminiti

    Base di dati

    (accezione generica, metodologica) • Insieme organizzato di dati utilizzati per il

    supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona)

    (accezione specifica, metodologica e tecnologica)

    • insieme di dati gestito da un DBMS

  • Informatica - G. Caminiti

    Sistema di gestione di basi di datiDataBase Management System

    (DBMS)• Sistemi software in grado di gestire

    collezioni di dati che sono– Molto grandi– Condivise da più utenti e più applicazioni– Persistenti: il ciclo di vita dei dati non è

    limitato alle singole esecuzioni dei dati che li usano

  • Informatica - G. Caminiti

    Tabelle come modo per organizzare i dati

  • Informatica - G. Caminiti

    Problema: le tabelle non hannovincoli

  • Informatica - G. Caminiti

    Tabelle: un tipo speciale di liste

    • Un database (DB) registra dati

    • Un database relazionale utilizza tabelle e descrive le relazioni fra i differenti tipi di dati

    • In un database le tabelle sono come le liste in uno spreadsheet, ma con l’aggiunta di vincoli– i vincoli limitano il tipo di dati che possono essere

    inseriti nel DB, ma rendono possibile eseguire operazioni molto più complesse e potenti

  • Informatica - G. Caminiti

    Entità• Qualsiasi cosa possa essere

    identificata da un numero prefissato di caratteristiche (attributi)– Gli attributi hanno un nome e un valore – I valori rappresentano i dati memorizzati nella

    tabella

    • Per create una tabella si specifica il nome dell’entità (ovvero della tabella), i suoi attributi e il tipo di valore che si può inserire in ogni attributo

  • Informatica - G. Caminiti

    Proprietà delle entità

    • Istanze di tabelle:– Una tabella è inizialmente vuota. Ha un nome

    e intestazioni di colonna (i nomi degli attributi) ma le righe sono vuote

    – Ogni riga rappresenta un’entità

    – Un’istanza di database è una tabella con un insieme specifico di righe

  • Informatica - G. Caminiti

    Proprietà delle entità (cont.)

    • Strutture, contenuti e metadati– separiamo la struttura dell’informazione

    dall’informazione stessa

    – i metadati di una tabella includono almeno il suo nome, i nomi degli attributi, il tipo di valori che ogni attributo può assumere e la chiave primaria

    – alcune proprietà non sono metadati: l’ordine delle righe ad esempio non è importante

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

    Proprietà delle entità (cont.)

    • Unicità delle entità– una tabella di database non può avere righe

    duplicate

    – dev’esserci almeno una caratteristica distintiva per ogni entità

    – alcune caratteristiche possono essere uguali, ma non tutte

  • Informatica - G. Caminiti

    Proprietà delle entità (cont.)• Chiavi

    – qualsiasi insieme di attributi per cui le entità sono tutte diverse si chiama chiave candidata

    – ne scegliamo una e la chiamiamo chiave primaria

    – una chiave dev’essere in grado di distinguere tutte le possibili entità, non solo quelle presenti nel particolare stato corrente della tabella

    – se nessuna combinazione di attributi si qualifica chiave candidata, occorre assegnare a ogni entitàun codice numerico distinto (ID)

    • pensiamo ad esempio ai numeri di matricola assegnati agli studenti dall’università

  • Informatica - G. Caminiti

    Creare lo schema

    • come si dovrebbe costruire uno schema per le tabelle dell’esempio iniziale (arcipelaghi)?

    ArcipelaghiNome Character,20Oceano Character,20Num_Isole Integer

    Chiave primaria: Nome

  • Informatica - G. Caminiti

    Operazioni sulle tabelle

    • L’uso principale dei database è la ricerca di informazioni– gli utenti specificano cosa vogliono sapere e il

    database lo trova• le operazioni fondamentali applicabili alle

    tabelle sono cinque: selezione, proiezione, unione, differenza e prodotto

  • Informatica - G. Caminiti

    Operazioni sulle tabelle (cont.)

    • l’operazione di selezione– prende alcune righe di una tabella per crearne

    un’altra• si deve specificare la tabella da cui prelevare le righe e il

    test di selezione

    • sintassi: Select Test From Tabella

    • il Test è applicato a ogni riga per decidere se includerla o no nella tabella risultato

    • il Test usa nomi degli attributi, costanti numeriche e operatori relazionali

    • se il Test è verificato, la riga è aggiunta nella tabella risultato; altrimenti è ignorata

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

    Select Interesse=‘Spiagge’ From Nazioni

  • Informatica - G. Caminiti

    Studenti di Giurisprudenza

    Cognome Nome Matricola CdL Punteggio

    Rossi Mario 123456 G 90

    Verdi Carlo 182839 G 100

    Neri Giorgio 162384 SE 70

    Bianchi Giuseppe 138927 SE 80

  • Informatica - G. Caminiti

    Es. Selezione

    Cognome Nome Matricola CdL Punteggio

    Rossi Mario 123456 G 90

    Verdi Carlo 182839 G 100

    Select CdL=‘G’ From Studenti

  • Informatica - G. Caminiti

    Operazioni sulle tabelle (cont.)• L’operazione di proiezione

    – prende alcune colonne di una tabella esistente e ne crea un’altra

    – si deve specificare il nome della tabella esistente e le colonne (il nome dei campi) da includere nella nuova tabella

    – sintassi:• Project Lista_di_campi From Tabella

    – la nuova tabella avrà il numero di colonne specificato e lo stesso numero di righe di quella originale, a meno che la nuova tabellaelimini un campo chiave: in questo caso, eventuali righe duplicate nella nuova tabella saranno eliminate

  • Informatica - G. Caminiti

    Project Nome, Dom, Interesse from Nazioni

  • Informatica - G. Caminiti

    Project Interesse from Nazioni

    InteresseSpiagge

  • Informatica - G. Caminiti

    Es. Proiezione

    Project Cognome, Nome FROM Studenti

    Cognome Nome

    Rossi Mario

    Verdi Carlo

    Neri Giorgio

    Bianchi Giuseppe

  • Informatica - G. Caminiti

    Operazioni sulle tabelle (cont.)• L’operazione di unione

    – combina due tabelle (che hanno gli stessi attributi)– sintassi:

    • Tabella1 + Tabella2

    • L’operazione di differenza– rimuove da una tabella tutte le righe contenute in una

    seconda tabella – sintassi:

    • Tabella1 - Tabella2

    • L’operazione di prodotto– crea una super-tabella che ha tutti i campi di entrambe le

    tabelle originali – combina tutte le righe – sintassi:

    • Tabella1 x Tabella2

  • Informatica - G. Caminiti

    Es. Unione e Differenza

    Scienze_Economiche = (Select CdL=‘SE’ From Studenti)

    Giurisprudenza = (Select CdL=‘G’ From Studenti)

    Facoltà = Scienze_Economiche + Giurisprudenza

    Giurisprudenza = Studenti – Scienze_Economiche

  • Informatica - G. Caminiti

    Prodotto(Docenti)

    Cognome Nome Materia CdLSaitta Roberto Dir. Amministrativo GLiguori Pasquale Dir. Civile GQuattrone Antonio Informatica SERossi Sandro Dir. Navigazione SEMorabito Nicola Storia Dir. Romano G

  • Informatica - G. Caminiti

    Es. Prodotto (Studenti x Docenti)

    Cognome Nome Matricola CdL Punti Cognome1 Nome1 Materia CdL2

    Rossi Mario 123456 G 90 Saitta Roberto Dir. Amm. G

    Rossi Mario 123456 G 90 Liguori Pasquale Dir. Civile G

    Rossi Mario 123456 G 90 Quattrone Antonio Informatica SE

    Rossi Mario 123456 G 90 Rossi Sandro Dir. Nav. SE

    Rossi Mario 123456 G 90 Morabito Nicola St.Dir.Rom. G

    Verdi Carlo 182839 G 100 Saitta Roberto Dir. Amm. G

    Verdi Carlo 182839 G 100 Liguori Pasquale Dir. Civile G

    Verdi Carlo 182839 G 100 Quattrone Antonio Informatica SE

    Verdi Carlo 182839 G 100 Rossi Sandro Dir. Nav. SE

    Verdi Carlo 182839 G 100 Morabito Nicola St.Dir.Rom. G

    ………

  • Informatica - G. Caminiti

    L’operazione di join

    • Combina due tabelle, come il prodotto, ma non produce necessariamente tutte le combinazioni di righe– se le tabelle hanno un campo che contiene lo

    stesso tipo di dato, la nuova tabella concatena solo le righe in cui c’è una corrispondenza su quel campo

    – sintassi:

  • Informatica - G. Caminiti

    L’operazione di join (cont.)

    • Corrispondenza è un confronto che considera un particolare attributo di ogni tabella

    • Il sistema verifica se i campi corrispondenti nelle due tabelle contengono lo stesso dato; in tal caso viene creata una riga nella tabella risultato

  • Informatica - G. Caminiti

    Es. JoinStudenti ►◄ Docenti On CdL

    Cognome Nome Matricola CdL Punti Cognome1 Nome1 MateriaRossi Mario 123456 G 90 Saitta Roberto Dir. AmministrativoRossi Mario 123456 G 90 Liguori Pasquale Dir. CivileRossi Mario 123456 G 90 Morabito Nicola Storia Dir. RomanoVerdi Carlo 182839 G 100 Saitta Roberto Dir. AmministrativoVerdi Carlo 182839 G 100 Liguori Pasquale Dir. CivileVerdi Carlo 182839 G 100 Morabito Nicola Storia Dir. RomanoNeri Giorgio 162384 SE 70 Quattrone Antonio InformaticaNeri Giorgio 162384 SE 70 Rossi Sandro Dir. NavigazioneBianchi Giuseppe 138927 SE 80 Quattrone Antonio InformaticaBianchi Giuseppe 138927 SE 80 Rossi Sandro Dir. Navigazione

  • Informatica - G. Caminiti

    Il database fisico

    • La ridondanza è una cosa molto, molto, molto brutta– Non si devono mai replicare informazioni

    scrivendole in più posti diversi nel database• Per evitare inconsistenza tra le copie

    – potremmo cambiare un dato in un posto e dimenticare di cambiarlo in un altro

    • I dati incoerenti sono chiamati garbage– spazzatura, perché la loro presenza è peggio della

    mancanza assoluta di dati

  • Informatica - G. Caminiti

    Il database fisico (cont.)

    • Una sola copia di ogni dato– evitare le duplicazioni favorisce la coerenza

    interna, ma non assicura che i dati siano corretti

    • L’informazione potrebbe essere necessaria in più parti del DB– è meglio tenere una lista singola e permettere

    agli altri di accedervi

  • Informatica - G. Caminiti

    Il database fisico (cont.)

    • La cosa migliore è mantenere una tabella separata e la sua chiave– piuttosto che ripetere l’informazione, si tiene

    una tabella separata con una chiave che funge da identificatore unico (chiave esterna)

    – per reperire i dati, si fa una ricerca usando la chiave esterna

  • Informatica - G. Caminiti

    Lo schema di un database

    • I metadati di una tabella sono chiamati schema del database– struttura e progetto

    • Immaginiamo un DB universitario con due tabelle, Studente e Residenza:

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

    Collegare tabelle mediante relazioni

    • Le due tabelle sono distinte, ma non indipendenti

    • Il Num_Matricola le collega– si dice che tra le due entità c’è una relazione

    • corrispondenza tra le righe• le relazioni fanno parte dei metadati• la relazione è bidirezionale (possiamo trovare l’indirizzo per

    ogni studente ma anche lo studente per ogni indirizzo)

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

    Ricostruire le tabelle con il join

    • Le relazioni tra due tabelle permettono di costruirne una terza (Lista_Master) che contiene le informazioni combinate di entrambe le tabelle– utilizziamo l’operazione di join naturale

    Lista_Master = Studente >< Residenza OnNum_Matricola

  • Informatica - G. Caminiti

    Progettare uno schema di database

    • Poniamo che l’ufficio del Preside e il centro sportivo necessitino entrambi delle informazioni sugli indirizzi– definiamo le tabelle senza l’indirizzo ma

    con Num_Matricola come chiave primaria

    – ogni nuova tabella ha una relazione uno-a-uno con la tabella Residenza e Studente (sia l’ufficio del Preside che il centro sportivo possono cercare il nome degli studenti)

  • Informatica - G. Caminiti

    Database logici e fisici

    • Partendo dal nostro insieme base di quattro tabelle, ne possiamo creare altre personalizzate per i vari dipartimenti e uffici – Il database logico non esiste fisicamente

    • È ricreato ogni volta che è necessario, usando i valori correnti del DB fisico

    • I database logici contengono informazioni duplicate, ragion per cui non li memorizziamo in modo permanente (cosa che creerebbe ridondanza)

    • DB logici personalizzati (noti come viste) permettono a ogni gruppo di utenti di vedere i dati da un punto di vista particolare

  • Informatica - G. Caminiti

    Database logici: creare viste sui dati

    • Le viste sono tabelle logiche costruite mediante l’applicazione di operazioni alle tabelle fisiche

    • Le operazioni che creano le viste sono chiamate query o interrogazioni– il join naturale è una query

    • Ogni tabella dotata di nome è una tabella fisica registrata sull’hard disk oppure una tabella logica creata da un’interrogazione

  • Informatica - G. Caminiti

    Creare la vista del Preside

    • Contiene informazioni selezionate dalle tabelle fisiche

  • Informatica - G. Caminiti

    Riunire tre tabelle con un join

    • Primo passo: notate che la vista del Preside contiene informazioni prese da tre tabelle

    • L’operazione di join associa l’informazione per ogni studente

    • Per ogni studente si possono riunire le informazioni prese da tutte e tre le tabelle

  • Informatica - G. Caminiti

    “Sfoltire” i dati nella tabella

    • Recupera solo le colonne che il Preside vuole vedere

    • La strategia del “join più sfoltimento” è un approccio standard– si crea una “supertabella” mediante il join di

    diverse tabelle fisiche

    – quindi si estraggono solo le informazioni che interessano l’utente

  • Informatica - G. Caminiti

    Vista del Preside

    Raccogli_Dati_Preside = (Borsista >< (Studente >< Residenza On

    Num_Matricola) On Num_Matricola

    Vista_Preside = Project Nome, Cognome, Città, Dipartimento, Media_Voti

    From Raccogli_Dati_Preside

  • Informatica - G. Caminiti

    La vista del centro sportivo

  • Informatica - G. Caminiti

    Linguaggi di interrogazione: SQL• SQL (Structured Query Language):

    – è un linguaggio standard di uso larghissimo

    – fornisce una struttura specifica di query per tecniche come “join più sfoltimento”

    – ogni venditore usa un proprio dialetto SQL, ma le interrogazioni semplici sono più o meno uguali:

    • SELECT lista di campi• FROM tabella/e• WHERE vincoli sulle righe

  • Informatica - G. Caminiti

    La clausola ON di SQL

    • Dopo il SELECT c’è una lista di campi

    • Il FROM specifica le tabelle da riunire nel Join, la clausola ON il campo da usare come riferimento per far corrispondere le righe

  • Informatica - G. Caminiti

    La clausola WHERE di SQL

    • La clausola WHERE permette di specificare condizioni sulle righe: il Preside ad esempio vuole vedere solo gli studenti con una media uguale o superiore al 28

  • Informatica - G. Caminiti

    Diagrammi entità-relazione• La creazione di nuove tabelle coinvolge relazioni

    • Le relazioni entrano a far parte dello schema di un database per indicare le connessioni tra le informazioni; i join le realizzano in pratica

    • Se c’è una relazione, probabilmente saràapplicata nella costruzione del database logico

    • Gli amministratori di un database ne documentano la struttura riportando su un diagramma le relazioni

  • Informatica - G. Caminiti

    Diagrammi entità-relazione (cont.)

  • Informatica - G. Caminiti

    Diagrammi entità-relazione (cont.)

    • Relazioni uno-a-uno– ogni riga della prima entità è associata al più a una

    riga della seconda entità

    • Relazioni uno-a-molti– molte righe della prima entità possono essere

    associate a una singola riga della seconda entità

    • Nei diagrammi ER questi tipi di relazione possono essere rappresentati in modi diversi

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

  • Informatica - G. Caminiti

    Basi di DatiBasi di dati e sistemi informativiSistema informativo, commentiSistema organizzativo RisorseSistema organizzativo e �sistema informativoSistemi informativi e automazioneSistema Informatico  Sistema Informatico  Gestione delle informazioni Gestione delle informazioni Gestione delle informazioniInformazioni e dati Informazioni e dati Informazione = contenuto + strutturaDati e informazioniPerché i dati? Base di dati Che cos'è l'informatica?Base di dati Sistema di gestione di basi di dati�DataBase Management System (DBMS)Tabelle come modo per organizzare i datiProblema: le tabelle non hanno vincoli�Tabelle: un tipo speciale di listeEntitàProprietà delle entitàProprietà delle entità (cont.)Proprietà delle entità (cont.)Proprietà delle entità (cont.)Creare lo schemaOperazioni sulle tabelleOperazioni sulle tabelle (cont.)Studenti di GiurisprudenzaEs. SelezioneOperazioni sulle tabelle (cont.)Es. ProiezioneOperazioni sulle tabelle (cont.)Es. Unione e DifferenzaProdotto�(Docenti)Es. Prodotto �(Studenti x Docenti)L’operazione di join L’operazione di join (cont.)Es. JoinIl database fisicoIl database fisico (cont.)Il database fisico (cont.)Lo schema di un database Collegare tabelle mediante relazioniRicostruire le tabelle con il joinProgettare uno schema di database Database logici e fisiciDatabase logici: creare viste sui datiCreare la vista del PresideRiunire tre tabelle con un join“Sfoltire” i dati nella tabellaVista del PresideLa vista del centro sportivoLinguaggi di interrogazione: SQLLa clausola ON di SQL La clausola WHERE di SQLDiagrammi entità-relazioneDiagrammi entità-relazione (cont.)Diagrammi entità-relazione (cont.)