Informatica Lezione 3 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2008-2009 delle associazioni: engono specificate per ciascuna partecipazione di entità a una associazione Descrivono il numero minimo e massimo di occorrenze di associazione cui una occorrenza dell entità può partecipare Cioè: quante volte, in una associazione tra entità, un occorrenza di una di queste entità può essere legata a occorrenze delle altre entità coinvolte associazione Assegnato a tra le entità Impiegato e Incarico Impiegato (nel contesto dell associazione Assegnato a): cardinalità minima=1, massima=5 Un impiegato può partecipare a un minimo di una occorrenza e a un massimo di cinque occorrenze dell associazione Assegnato a Cioè: ogni impiegato ha da 1 a 5 incarichi Incarico (nel contesto della associazione Assegnato a): cardinalità minima=0, massima=50 Un certo incarico può partecipare o a nessuna occorrenza oppure al massimo a 50 occorrenze dell associazione Assegnato a Cioè: un incarico può non essere assegnato ad alcun impiegato oppure può essere assegnato al massimo a 50 impiegati Impiegato (1,5) Assegnato a Incarico Impiegato Assegnato a (1,5) (0,50) Incarico Nella maggiore parte dei casi, è sufficiente utilizzare solo tre valori: Zero Uno Il simbolo N: indica genericamente un intero maggiore di uno minima: Zero: la partecipazione dell entità relativa è opzionale Uno: la partecipazione dell entità relativa è obbligatoria massima: Uno: la partecipazione dell entità relativa associa a un occorrenza dell entità una sola occorrenza (o nessuna) dell altra entità che partecipa all associazione N: c èun associazione con un numero arbitrario di occorrenze dell altra entità
Esempio: Persona Possiede (0,N) (0,1) Automobile Turista Prenota (0,N) iaggio Card. min tra Persona e Possiede 0: esistono persone che non possiedono auto Card. min tra Automobile e Possiede 0: esistono auto che non hanno proprietari Card. maxtra Persona e Possiede N: ogni persona può possedere anche pi ù di un auto Card. maxtra Automobile e Possiede 1: ogni auto ha al più un proprietario massima pari a N per entrambe le entità coinvolte Associazione molti a molti Persona Risiede (1,1) (0,N) Città Ordine endite (0,1) (1,1) attura Ogni persona può essere residente in una e una sola città Ogni città può avere qualsiasi numero di residenti (anche nessuno) Card max di Persona 1 e card max di Città N Associazione uno a molti massima pari a uno per entrambe le entità coinvolte: definisce una corrispondenza uno a uno tra le occorrenze di tali entità Associazione uno a uno minime: la partecipazione obbligatoria per tutte le entità coinvolte è rara Quando si aggiunge una nuova occorrenza di entità, spesso non sono note (o non esistono ancora) le corrispondenti occorrenze delle entità a essa collegate degli attributi: Possono essere specificate per gli attributi di entità o relazioni Descrivono il numero minimo e massimo di valori dell attributo associati a ogni occorrenza di entità o relazione Nella maggior parte dei casi, la cardinalità di un attributo è (1,1) (e viene omessa)
degli attributi : Il valore per un certo attributo può essere nullo: minimo della cardinalità=0 Possono esistere diversi valori di un certo attributo per una occorrenza: massimo della cardinalità=n Persona (0,N) Targa automobile Cognome Numero patente (0,1) degli attributi: minima=0: l attributo è opzionale (l informazione potrebbe essere non disponibile) minima=1: l attributo è obbligatorio massima=n: l attributo è multivalore Identificatori delle entità Identificatori delle entità: Sono gli attributi che permettono di identificare univocamente le occorrenze delle entità identificatore interno (o chiave interna) non possono esistere due automobili con la stessa targa Quindi, l attributo Targa può essere un identificatore interno per l entità Automobile Automobile Targa Modello Colore Identificatori delle entità Entità Persona con gli attributi Nome, Cognome, Indirizzo e Data di nascita Un identificatore interno per Persona può essere Nome, Cognome e Data di nascita (forse non sufficiente) Persona Data di nascita Cognome Nome Indirizzo Identificatori esterni Alcune volte gli attributi di una entità non sono sufficienti a identificare univocamente le sue occorrenze Per esempio, in un DB degli studenti universitari italiani, due studenti iscritti a università diverse possono avere lo stesso numero di matricola Identificatori esterni Per identificare univocamente uno studente serve, oltre al numero di matricola, anche la relativa università Un identificatore corretto per l entità Studente è costituito dall attributo Matricola e dall entità Università L identificazione è resa possibile dall associazione Iscritto a tra Studente e Università Matricola Anno iscrizione Cognome Studente (1,1) Iscritto a Università Nome Città Indirizzo
Identificatori esterni Identificatore esterno (chiave esterna): l identificazione di una entità è ottenuta utilizzando altre entità (cioè tramite gli identificatori di altre entità) Altri costrutti: identificatori delle entità Identificatori delle entità: considerazioni generali Un identificatore può coinvolgere uno o pi ù attributi Una identificazione esterna può coinvolgere una o pi ù entità Una identificazione esterna può coinvolgere una entità che è a sua volta identificata esternamente Purché non venga generato un circolo vizioso di identificazioni esterne Ogni entità deve avere almeno un identificatore, ma in generale ne può avere pi ù di uno e identificatori Codice Cognome Stipendio Età Nome Budget (0,1) Data consegna Partecipa a (0,1) Dirige (1,1) (0,1) Impiegato Afferisce a Dipartimento (0,N) (1,1) Data afferenza Progetto Data inizio Composta da Sede Telefono Nome Città Numero civico ia CAP : rappresentano legami logici tra una entità E e una o più entità E1,,En E: padre E1,,En: figli E è più generale rispetto a E1,,En, nel senso che le comprende come caso particolare E è generalizzazione di E1,,En E1,,En sono specializzazioni dell entità E l entità Persona è una generalizzazione delle entità Uomo e Donna Professionista è una generalizzazione delle entità Ingegnere, Medico e Avvocato iceversa, Uomo e Donna sono specializzazioni dell entità Persona, Ogni occorrenza di una entità figlia è anche una occorrenza dell entità padre Per esempio: una occorrenza dell entità Avvocato è anche una occorrenza dell entità Professionista
Ogni proprietà dell entità padre (attributi, identificatori, relazioni e altre generalizzazioni) è anche una proprietà delle entità figlie (ereditarietà) Per esempio: se l entità Persona ha attributi Cognome ed Età, anche le entità Uomo e Donna possiedono questi attributi Per esempio: l identificatore di Persona è un identificatore valido anche per le entità Uomo e Donna Per le entità figlie, le proprietà ereditate non vanno rappresentate esplicitamente Situazione militare Codice fiscale Cognome Età Uomo Persona Donna Due classificazioni ortogonali per le generalizzazioni: 1. Una generalizzazione è totalese ogni occorrenza della classe padre è una occorrenza di almeno una delle entità figlie, altrimenti è parziale Codice fiscale Cognome Età Persona La generalizzazione tra l entità Persona e le entità Uomo e Donna è totale t La generalizzazione tra l entit à eicolo e le entit à eicolo Automobile e Bicicletta è parziale p 2. Una generalizzazione è esclusiva se ogni occorrenza della classe padre è al più una occorrenza di una delle entità figlie, altrimenti è sovrapposta La generalizzazione tra l entità eicolo e le entità Automobile e Bicicletta è esclusiva La generalizzazione tra l entità Persona e le entità Studente e Lavoratore è sovrapposta Uomo Donna Automobile Bicicletta Situazione militare Le generalizzazioni sovrapposte possono essere trasformate in generalizzazioni esclusive: Aggiungere una o più entità figlie, per rappresentare i concetti che costituiscono le intersezioni delle entità che si sovrappongono Per esempio: aggiungere l entità StudenteLavoratore Una stessa entità può essere coinvolta in più generalizzazioni diverse Possono esserci generalizzazioni su più livelli (una gerarchia)
Modello Entità-Associazione Numero Generalizzazione iglia di (1,1) Padre di (0,N) Nome (0,N) Entità (0,N) Cardinalit à massima Costrutto Costrutto base Partecipa a Cardinalit à minima Nome (0,N) (1,1) Appartiene a Cardinalit à Attributo massima (0,1) Composto da Associazione (2,N) Cardinalit à minima Attributo composto Basi di dati - parte 3 Basi di dati relazionali: relazioni, tabelle, chiavi, vincoli Il modello relazionale Il modello relazionale: Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica di una relazione; un concetto intuitivo Garantisce indipendenza dei dati Utenti che accedono ai dati e programmatori che sviluppano applicazioni fanno riferimento al livello logico dei dati Cioè, agli utenti e ai programmatori, non serve sapere come i dati sono memorizzati fisicamente Relazioni e tabelle Relazioni rappresentate graficamente come tabelle Le righe si chiamano tuple risultati partite di calcio SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Torino Lazio 3 2 Roma Milan 2 0 Juventus Roma 0 2 Roma Milan 2 1 Relazioni e tabelle Relazioni e tabelle Una relazione è un insieme di tuple: Torino Lazio 3 2 Roma Milan 2 0 Juventus Roma 0 2 Roma Milan 2 1 Sequenza di caratteri (stringa) Numero naturale (intero) Insieme: collezione di elementi L ordine degli elementi non è importante Un insieme non contiene duplicati le tuple della relazione devono essere distinte (no righe ripetute in tabella) le tuple non sono tra loro ordinate (tabelle con stesse righe ordinate in modo diverso rappresentano la stessa relazione)
Relazioni con attributi Relazioni con attributi Attributi Usiamo nome di attributo per identificare le rispettive componenti delle tuple In una tabella: attributo intestazione di colonne della tabella SquadraDiCasa, SquadraOspitata, RetiCasa, RetiOspitata SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Torino Lazio 3 2 Roma Milan 2 0 Juventus Roma 0 2 Roma Milan 2 1 Relazioni e Basi di Dati Relazioni e Basi di Dati Un DB è solitamente costituito da più relazioni le cui tuple contengono valori comuni (usati per stabilire corrispondenza tra tuple) relazioni che descrivono studenti, esami e corsi Studenti Matricola Cognome Nome DataNascita 276545 Rossi Maria 25/11/1981 485745 Neri Anna 23/04/1982 200768 erdi abio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 Esami Corsi Studente oto Corso 276545 28 01 485745 27 04 200768 25 01 587614 24 04 Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica Belli Relazioni e Basi di Dati Sono ammissibili relazioni con un solo attributo Per esempio: Lavoratori Matricola 276545 485745 200768 Si possono rappresentare informazioni complesse mediante relazioni diverse Schemi di relazioni e di DB Schema di relazione: R(X) Costituita da simbolo R (nome della relazione) e dall insieme dei nomi di attributi X={A 1,,A n } Esami(Studente,oto,Corso) Esami Studente oto Corso 276545 28 01 485745 27 04 200768 25 01 587614 24 04
Schemi di relazioni e di DB Schema di base di dati: D={R 1 (X 1 ),, R n (X n )} Insieme di schemi di relazioni Le relazioni sono identificate per nome i nomi devono essere diversi Università = {Studenti(Matricola, Cognome, Nome, DataNascita), Esami(Studente,oto,Corso), Corso(Codice,Titolo,Docente)} Schemi di relazioni e di DB Istanza di relazione (o semplicemente relazione) su schema R(X) Insieme r di tuple su X Istanza di base di dati (o semplicemente base di dati) su schema D={R 1 (X 1 ),,R n (X n )} Insieme d di relazioni d={r 1,,r n } dove ogni r i è una relazione sullo schema R i (X i ) Esempi di relazioni Esempi di relazioni DA MARIO Ricevuta n. 1357 Del 5/2/09 3 coperti 3,00 2 antipasti 6,00 3 primi 12,00 2 bistecche 18,00 Totale 39,00 DA MARIO Ricevuta n. 2334 Del 7/2/09 2 coperti 2,00 1 antipasti 3,00 2 primi 8,00 2 orate 14,00 2 caffè 2,00 Totale 29,00 DA MARIO Ricevuta n. 3002 Del 13/2/09 3 coperti 3,00 2 antipasti 6,00 3 primi 14,00 1 Orate 18,00 1 Caprese 2,00 2 Caffè 2,00 Totale 45,00 Le ricevute hanno una struttura che prevede alcune informazioni fisse Numero, data e totale e un numero di righe variabile Esempi di relazioni Esempi di relazioni Dettaglio Ricevute Num Data Totale 1357 5/2/09 39,00 2334 7/2/09 29,00 3002 13/2/09 45,00 Num Qtà Descr Importo 1357 3 Coperti 3,00 1357 2 Antipasti 6,00 1357 3 Primi 12,00 1357 2 Bistecche 18,00 2334 2 Coperti 2,00 2334 1 Antipasti 3,00 2334 2 Primi 8,00 2334 2 Orate 14,00 2334 2 Caffè 2,00 3002 3 Coperti 3,00 3002 2 Antipasti 6,00 3002 3 Primi 14,00 3002 1 Orate 18,00 3002 1 Caprese 2,00 3002 2 Caffè 2,00 La base di dati nella slide precedente rappresenta correttamente le ricevute solo a due condizioni: Non ci interessa mantenere traccia dell ordine con cui le righe compaiono in ciascuna ricevuta In una ricevuta non compaiono due righe uguali Altrimenti, si può risolvere il problema aggiungendo un attributo, che indica la posizione della riga sulla ricevuta
Esempi di relazioni Dettaglio Ricevute Num Data Totale 1357 5/2/09 39,00 2334 7/2/09 29,00 3002 13/2/09 45,00 Num Riga Qtà Descr Importo 1357 1 3 Coperti 3,00 1357 2 2 Antipasti 6,00 1357 3 3 Primi 12,00 1357 4 2 Bistecche 18,00 2334 1 2 Coperti 2,00 2334 2 1 Antipasti 3,00 2334 3 2 Primi 8,00 2334 4 2 Orate 14,00 2334 5 2 Caffè 2,00 3002 1 3 Coperti 3,00 3002 2 2 Antipasti 6,00 3002 3 3 Primi 14,00 3002 4 1 Orate 18,00 3002 5 1 Caprese 2,00 3002 6 2 Caffè 2,00 In una tupla di una relazione un attributo può non avere valore Per esempio: Mario Rossi non ha telefono in Persone(Cognome,Nome,Indirizzo,Telefono) Oppure il valore di un attributo potrebbe esistere ma essere sconosciuto a chi inserisce i dati nel DB Per esempio: Mario Rossi ha telefono, ma non ne conosciamo il numero NULL: valore nullo Assegnato agli elementi di tuple inesistenti o sconosciuti NULL è un valore aggiuntivo rispetto al dominio di un attributo In basi di dati, i due casi sopra trattati come assenza di informazione In assenza di informazione su un attributo bisogna usare NULL perché NULL può venire confuso con gli altri valori del dominio dell attributo Numero di telefono sconosciuto potrebbe essere rappresentato con 0 (numero che nessun telefono può avere). Però questa convenzione non è generale Inoltre, per altri attributi, potrebbe non esistere valore di dominio che non si può assegnare mai usare NULL Non tutti gli attributi di una relazione devono potere assumere valore nullo Nella definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Studenti Matricola Cognome Nome DataNascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL erdi abio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 Non tutti gli attributi di una relazione devono potere assumere valore nullo Nella definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Studenti Matricola Cognome Nome DataNascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL erdi abio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 OK
Non tutti gli attributi di una relazione devono potere assumere valore nullo Nella definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Studenti Matricola Cognome Nome DataNascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL erdi abio 12/02/1982 No: matricola usata per correlare relazione 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 Esami No: informazione inutile Corsi Studente oto Corso 276545 28 01 NULL 27 NULL 200768 25 01 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli Esami No: informazione inutile Studente oto Corso 276545 28 01 NULL 27 NULL 200768 25 01 587614 24 NULL Esami Studente oto Corso 276545 28 01 NULL 27 NULL 200768 25 01 587614 24 NULL Corsi Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli Corsi No: codice usato per correlare relazione Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli Istanze incoerenti Esami Corsi Studente oto Corso 276545 28 01 NULL 27 NULL 200768 25 01 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica OK Belli Non tutte le tuple rappresentano informazione corretta per un applicazione alori nulli alori fuori del dominio di un attributo voto = 36 Tuple incoerenti (valori di più attributi non simultaneamente assegnabili) voto = 24, lode = Sì
Istanze incoerenti Non tutte le tuple rappresentano informazione corretta per un applicazione Tuple con valori uguali per attributi identificanti tuple con la stessa matricola in relazione Studenti alori inesistenti in attributi usati per corrispondenze tra relazioni studente in relazione Esami incoli di integrità Proprietà che devono essere soddisfatte dalle istanze corrette per un applicazione Sono predicati che associano ad ogni istanza il valore vero o falso ero: istanza corretta (ammissibile, lecita) also: istanza incoerente Definendo lo schema di una base di dati si associano vincoli di integrità che si riferiscono a tutte le istanze della base di dati Questi vincoli permettono di considerare corrette le sole istanze che li verificano tutti incoli di integrità incoli intrarelazionali incolo di tupla incolo di dominio incoli su assegnamento di valori ad attributi diversi di una tupla incolo di chiave incoli interrelazionali incoli intrarelazionali incoli interni a una relazione: Soddisfacimento definito rispetto ad una singola relazione della base di dati incolo di tupla: esprime condizioni sui valori di ciascuna tupla indipendentemente dalle altre tuple incolo di dominio (vincolo su valori): restrizione su dominio di attributo incoli su assegnamento di valori ad attributi diversi di una tupla incoli di tupla incoli di tupla Esprimibili mediante espressioni booleane (eventualmente usando gli operatori logici AND, OR, NOT) i cui termini contengono: Uguaglianze, disuguaglianze, ordinamenti di valori di attributo Espressione aritmetichesu valori di attributo A B A and B A B A or B A not A incolo di dominio (oto 18) AND (oto 30) incolo su più attributi NOT(Lode = Sì AND oto?30) Pagamenti(Data, Importo, Ritenute, Netto) Netto = Importo - Ritenute
incoli di tupla incoli di tupla incolo di dominio (oto 18) AND (oto 30) incolo di dominio (oto 18) AND (oto 30) Studente oto Lode 123456 30 Sì 654321 18 No 456123 24 No 321654 30 Sì 135246 25 No Tutte le tuple/record della relazione/tabella soddisfano il vincolo Quindi, diciamo che la relazione/tabella soddisfa il vincolo Studente oto Lode 123456 30 Sì 654321 18 No 456123 24 No 321654 36 Sì 135246 25 No Un record della tabella non soddisfa il vincolo Quindi, la relazione/tabella non soddisfa il vincolo incoli di tupla incoli di tupla incolo su più attributi NOT(Lode = Sì AND oto?30) incolo su più attributi NOT(Lode = Sì AND oto?30) Studente oto Lode 123456 30 Sì 654321 18 No 456123 24 No 321654 30 Sì 135246 25 No Tutte le tuple/record della relazione/tabella soddisfano il vincolo Quindi, diciamo che la relazione/tabella soddisfa il vincolo Studente oto Lode 123456 30 Sì 654321 18 No 456123 24 No 321654 26 Sì 135246 25 No Una riga della tabella non soddisfa il vincolo Quindi, la relazione/tabella non soddisfa il vincolo incoli di tupla incoli di tupla incolo su più attributi NOT(Lode = Sì AND oto?30) Pagamenti(Data, Importo, Ritenute, Netto) Netto = Importo - Ritenute Studente oto Lode 123456 30 No 654321 18 No 456123 24 No 321654 30 Sì 135246 25 No Un cambiamento in questa cella, ma comunque la tupla/record soddisfa il vincolo La relazione/tabella continua a soddisfare il vincolo Importo Ritenute Netto 30 10 20 45 15 30 50 5 45 20 8 12 5 3 2 Tutte le tuple/record della relazione/tabella soddisfano il vincolo Quindi, diciamo che la relazione/tabella soddisfa il vincolo
incoli di tupla Pagamenti(Data, Importo, Ritenute, Netto) Netto = Importo - Ritenute Importo Ritenute Netto 30 10 20 45 15 30 50 5 5 20 8 12 5 3 25 Alcune tuple/record della tabella non soddisfano il vincolo Quindi, la relazione/tabella non soddisfa il vincolo