• Non ci sono risultati.

Basi di Dati

N/A
N/A
Protected

Academic year: 2022

Condividi "Basi di Dati"

Copied!
20
0
0

Testo completo

(1)

Corso di Informatica

Corso di Laurea in Conservazione e Restauro dei Beni Culturali

Gianluca Torta Dipartimento di Informatica

Tel: 011 670 6782 Mail: [email protected]

„lo scopo di una Base di Dati (BD) è quello di memorizzare informazioni in modo strutturato e di permetterne la modifica e il reperimento da parte di utenti e applicazioni

Basi di Dati

„usiamo quotidianamente le BD quando:

– accediamo al Sistema Informativo della azienda o istituzione in cui lavoriamo

– accediamo al nostro conto corrente via Internet – prenotiamo un volo o albergo via Internet

„al fine di assolvere efficacemente al compito di memorizzazione, la BD:

Memorizzazione dei Dati

– può memorizzare grandi quantità di dati (scalabilità)

– utilizza la memoria secondaria (persistenza) – può duplicare/archiviare (alcuni) dati su più

dispositivi di memoria secondaria (affidabilità) – permette un accesso controllato (sicurezza) – permette di specificare vincoli di integrità che

aiutino a mantenere consistenti le informazioni

(2)

„al fine di assolvere efficacemente al compito di manipolazione, la Base Dati:

Manipolazione dei Dati

– permette l’accesso agli stessi dati da parte di molti utenti, anche contemporaneamente (concorrenza)

– permette di reperire/modificare le informazioni desiderate per mezzo di potenti linguaggi di interrogazione

„un Data Base Management System (DBMS) è una applicazione che permette di creare e gestire delle Basi di Dati

DBMS

„l’effettivo utilizzo delle BD avviene invece per mezzo di applicativi che sfruttano il DBMS per accedere alle BD stesse

DBMS

Applicazione Applicazione Applicazione Applicazione Applicazione

DBMS

DB

Utente Utente Utente Utente

DB DB

(3)

„il DBMS realizza una separazione tra Base Dati e le applicazioni che la utilizzano

DBMS

„la struttura della BD, invece, tende a essere molto stabile (es. tipi di informazioni con cui descriviamo una prenotazione)

„il contenuto della BD varia normalmente molto spesso (es. prenotazioni di voli)

„le applicazioni che utilizzano la BD variano normalmente meno frequentemente del suo contenuto e più della sua struttura

„la separazione tra applicazioni e DB realizzata del DBMS è detta indipendenza fisica

Indipendenza Fisica

„se vale l’indipendenza fisica è possibile apportare modifiche al modo in cui i dati sono memorizzati senza modificare le applicazioni

„ad es. i dati vengono spostati su un altro disco, o partizionati su più dischi o indicizzati per velocizzare il reperimento

„prima dell’avvento dei DBMS le applicazioni accedevano direttamente ai dati

Indipendenza Fisica

„al cambiare della memorizzazione (fisica) dei dati l’applicazione doveva essere modificata

„con l’indipendenza fisica, l’applicazione deve essere modificata solo quando varia la struttura (logica) dei dati

(4)

„la quasi totalità dei moderni DBMS permette la gestione di BD basate sul Modello Relazionale (MR)

Modello Relazionale

„la proposta del MR risale al 1970 ed è opera del matematico E.F. Codd

„dato l’elevato livello di astrazione del MR, le prime realizzazioni commerciali risalgono alla fine degli anni ‘70

„il concetto base del MR è la relazione (o tabella, secondo l’uso comune)

Tabelle

„ogni entità è rappresentata dai valori di un insieme di attributi

„una tabella rappresenta in modo omogeneo un insieme di entità del mondo reale (es. studenti di un Corso, acquisti su una Carta di Credito)

„nel MR un DB è semplicemente un insieme di tabelle

Tabelle

„per esempio un insieme di studenti (entità reali) può essere rappresentato da una tabella con gli opportuni attributi

record attributo

campo

Studenti

(5)

„vi sono molte differenze tra le tabelle del MR e le tabelle di un Foglio Elettronico

Tabelle

„una differenza fondamentale è che la tabella del MR memorizza dei meta-dati

„alcuni di tali meta-dati sono:

– nome della tabella

– nome e tipo di ciascun attributo

Omogeneità

„uno dei vincoli fondamentali è l’omogeneità dei record di una tabella

„grazie ai meta-dati il MR può imporre vincoli

„ogni record è composto dai valori di uno stesso insieme di attributi (stesso numero, stessi nomi, stessi tipi)

„questo ci permette di trattare in modo omogeneo i record di una tabella

Chiave Primaria

„un altro vincolo fondamentale è l’unicità dei record di una tabella: dati due record essi devono differire almeno per il valore di un attributo

„la chiave primaria di una tabella è un insieme minimale di attributi i cui valori (combinati) per ciascun record devono essere univoci

(6)

Chiave Primaria

„nella tabella Studenti l’insieme di attributi {Matricola} può essere la chiave primaria

Studenti

Chiave Primaria

„invece l’insieme di attributi {Cognome, Nome} non è una buona chiave primaria

„se si iscrive un altro Mario Rossi dobbiamo modificare la struttura del DB

Studenti

Ridondanza

„uno degli scopi principali dell’adozione dei DB è l’eliminazione (riduzione) della ridondanza dei dati

„la presenza di ridondanza di dati in un sistema informativo:

– incrementa i dati da inserire e modificare – incrementa le possibilità di inconsistenza

(falsità)

– incrementa la quantità di memoria secondaria utilizzata

(7)

Ridondanza

App 1

DB 1

Sig. Rossi, Via Roma

„ridondanza indesiderabile

App 2

DB 1

Sig. Rossi, Via Roma

Ridondanza

App 1

DB 1

Sig. Rossi, Via Cigna

App 2

DB 1

Sig. Rossi, Via Roma

„ridondanza indesiderabile

Ridondanza

App 1

DB

Sig. Rossi, Via Roma

App 2

DB*

REPLICA Sig. Rossi,

Via Roma DBMS

„ridondanza utile per affidabilità

(8)

Ridondanza

App 1

DB

Sig. Rossi, Via Cigna

App 2

DB*

Sig. Rossi, Via Roma DBMS

„ridondanza utile per affidabilità

Ridondanza

App 1

DB

Sig. Rossi, Via Cigna

App 2

DB*

REPLICA Sig. Rossi,

Via Cigna DBMS

„ridondanza utile per affidabilità

Ridondanza

„la condivisione di un DB da parte di molte applicazioni riduce drasticamente i problemi legati alla ridondanza

„è desiderabile però eliminare (ridurre) la ridondanza anche all’interno di un singolo DB

(9)

Ridondanza

„una tabella con dati ridondanti

Esami

Ridondanza

„possiamo distribuire i dati su due tabelle

Esami

Studenti

Chiavi Esterne

„il legame tra le tabelle Studenti ed Esami si esprime con un vincolo di integrità referenziale

„l’attributo Matricola della tabella Esami è detto chiave esterna di Esami su Studenti

„l’integrità referenziale richiede che ogni valore della chiave esterna Matricola di Esami corrisponda a un valore della chiave (primaria) Matricola di Studenti

(10)

Chiavi Esterne

„il nome di un attributo chiave esterna può essere diverso dal nome dell’attributo chiave (primaria) cui si riferisce

ID ID IDResp

Impiegati Progetti

Chiavi Esterne

„una chiave esterna può essere composta da più attributi

Nome Citta

Stazioni OrarioFermate

CittaStaz NomeStaz

Chiavi Esterne

„una tabella può definire più chiavi esterne

Nome Citta

Stazioni

Tratte

NomeStazDa CittaStazA

CittaStazDa NomeStazA …

(11)

Tipi di Associazioni

„grazie alle chiavi esterne possiamo creare dei legami (associazioni) tra tabelle

„un’associazione tra le tabelle T1 e T2 è caratterizzata dalla cardinalità con cui T1 e T2 partecipano all’associazione

„distinguiamo tra:

– associazioni uno-a-uno – associazioni uno-a-molti – associazioni molti-a-molti

Tipi di Associazioni

„in un’associazione uno-a-uno, ogni record di T1 è associato (al più) a un record di T2 (e viceversa)

ID ID IDOrdine

Ordini Fatture

uno-a-uno

Tipi di Associazioni

„in un’associazione uno-a-molti, ogni record di T1 è associato a zero, uno o più record di T2

Nome ID ViveA

Città Persona

uno-a-molti

(12)

Tipi di Associazioni

„in un’associazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa)

ID ID

Turista Viaggio

molti-a-molti

Tipi di Associazioni

„in un’associazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa)

ID ID

Turista Viaggio

IDViag IDTur Partecipazione

Interrogazioni

„la strutturazione di una BD in tabelle, a loro volta strutturate in record con attributi omogenei, permette interrogazioni molto sofisticate

„il linguaggio formale più utilizzato per interrogare le BD relazionali è SQL

(Structured Query Language) ma esistono altri linguaggi, spesso meno potenti ma più semplici da utilizzare

(13)

Interrogazioni

„in una BD relazionale, il risultato di una interrogazione è una tabella temporanea (persiste fintanto che il risultato viene analizzato)

„in una interrogazione specifichiamo:

– gli attributi da includere nella tabella risultato – i criteri di selezione che devono essere

soddisfatti dai record della tabella risultato

Interrogazioni

„consideriamo le tabelle Studenti ed Esami viste prima

Esami

Studenti

Interrogazioni

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0507

Esami Studenti

(14)

Interrogazioni

„vogliamo spedire delle congratulazioni agli studenti che hanno superato almeno un esame con voto ≥27

Esami Studenti

Interrogazioni

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0507 con voto ≥27

Esami Studenti

Interrogazioni

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0014 o L0507 con voto ≥27

Esami Studenti

(15)

SQL

SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND

CodiceCorso = ‘L0507’

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0507

SQL

SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND

CodiceCorso = ‘L0507’ AND Voto >= 27

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0507 con voto ≥27

SQL

SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND

(CodiceCorso = ‘L0507’ OR CodiceCorso = ‘L0014’) AND Voto >= 27

„vogliamo spedire delle congratulazioni agli studenti che hanno superato l’esame L0014 o L0507 con voto ≥27

(16)

Query by Example

„il metodo di interrogazione QBE permette di costruire le interrogazioni in modo simile a come le abbiamo discusse informalmente

„vedremo l’uso delle QBE in Access

Esempio

„Il DB di una azienda contiene le seguenti tabelle:

– Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

– Stipendi

ID, Paga, Deduzioni, Sanità, Vita – Risorse_Umane

ID, Dipa, Data_ass, Commenti, Supervisor, Progetti – Calcetto

ID, Piede, Presenze, Goal, Posizione

Esempio – Chiavi Primarie

„Esplicitiamo le chiavi primarie:

– Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

– Stipendi

ID, Paga, Deduzioni, Sanità, Vita – Risorse_Umane

ID, Dipa, Data_ass, Commenti, Supervisor, Progetti – Calcetto

ID, Piede, Presenze, Goal, Posizione

(17)

Esempio - Associazioni

„Consideriamo ora le associazioni

ID ID

Impiegati Stipendi

Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

Stipendi

ID, Paga, Deduzioni, Sanità, Vita uno-a-uno

Esempio - Associazioni

„Consideriamo ora le associazioni

ID ID

Impiegati Risorse_Umane

Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

Risorse_Umane

ID, Dipa, Data_ass, Commenti, Supervisor, Progetti uno-a-uno

Esempio - Associazioni

„Consideriamo ora le associazioni

ID ID

Impiegati Calcetto

Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

Calcetto

ID, Piede, Presenze, Goal, Posizione uno-a-uno

(18)

Esempio - Associazioni

„Abbiamo individuato le associazioni:

ID Impiegati

ID Stipendi

ID

Risorse_Umane

ID Calcetto uno-a-uno

uno-a-uno uno-a-uno

Esempio - Associazioni

„Ci sono altre associazioni?

– Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

– Stipendi

ID, Paga, Deduzioni, Sanità, Vita – Risorse_Umane

ID, Dipa, Data_ass, Commenti, Supervisor, Progetti – Calcetto

ID, Piede, Presenze, Goal, Posizione

Esempio - Associazioni

„C’è un’altra associazione tra Impiegati e Risorse_Umane

ID ID Supervisor

Impiegati Risorse_Umane

Impiegati

Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass

Risorse_Umane

ID, Dipa, Data_ass, Commenti, Supervisor, Progetti uno-a-molti

(19)

Esempio - Associazioni

„Abbiamo individuato le associazioni:

ID Impiegati

ID Stipendi

ID

Risorse_Umane

ID Calcetto uno-a-uno

uno-a-uno uno-a-uno

uno-a-molti

Esempio - Ridondanza

„La data di assunzione Data_ass è ridondante

„Per rimuovere la ridondanza possiamo rimuovere l’attributo Data_ass dalla tabella Impiegati oppure dalla tabella

Risorse_Umane

„In questo caso sembra preferibile rimuovere Data_ass da Risorse_Umane perché altrimenti, il DB potrebbe non specificare la data di assunzione per qualche impiegato

Esempio - View

„Consideriamo il DB da diversi punti di vista (view)

„L’allenatore di calcetto non dovrà

(necessariamente) avere accesso a tutte le tabelle Impiegati, Stipendi, Risorse_Umane e Calcetto

„Gli sarà sufficiente avere accesso alla tabella Calcetto e a (parte) dei dati nella tabella Impiegati relativi a impiegati che giocano a calcetto

(20)

Esempio - View

„La view dell’allenatore di calcetto potrebbe essere il risultato di una query.

ID Impiegati

ID Calcetto

attributi di Calcetto attributi di Impiegati tranne Data_ass ID

ViewAllenatore

Riferimenti

Documenti correlati

Se si seleziona la casella di controllo Aggiorna campi correlati a catena quando si definisce una relazione, ogni volta che si modifica la chiave primaria di un record nella

Propriet` a, associate a uno schema di base di dati, che devono essere soddisfatte da tutte le istanze che rappresentano informazioni corrette della base di dati. • Si

studente esame voto corso crediti docente anna analisi 28 algebra 10 bianchi anna analisi 28 analisi 5 rossi anna analisi 28 disegno 5 verdi anna analisi 28 fisica 5 viola anna

-- Esiste uno studente eleggibile: seleziono la sua matricola SELECT Matricola INTO Matr.

Ogni nodo dell'albero, ad eccezione di un nodo speciale detto radice, ha un nodo padre e zero, uno o più nodi figli.. • Se un nodo non ha nessun nodo figlio è detto nodo foglia

Risultato matr cognome nome ciclo anno relatore.

DISTINCT ( π (Studenti))) ElencoNomi =  ORDER BY cognome, nome

tipo CHAR(10) qualifica CHAR(15) facolta CHAR(10) nome CHAR(20) cognome CHAR(20) codice CHAR(4) Docente.