basi di dati - unirc.itunirc.it/documentazione/materiale_didattico/597_2008_80... · 2011. 8....
TRANSCRIPT
-
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.)