Data Base Relazionali Modello Relazionale dei dati Basi di Dati Relazionali 1 Progettazione di DB METODOLOGIA DI PROGETTO IN TRE FASI Descrizione formalizzata e completa della realtà di interesse REALTA' DI INTERESSE PROGETTAZIONE CONCETTUALE SCHEMA CONCETTUALE PROGETTAZIONE LOGICA Modello dei dati adottato dal DBMS Specifica dei parametri fisici di memorizzazione e ricerca dei dati SCHEMA LOGICO PROGETTAZIONE FISICA SCHEMA FISICO Basi di Dati Relazionali 2
Progettazione di DB Relazionali Modello del Database (e.g., E/R) Schema Relazionale Supporto fisico di memoria Diagramma (E/R) Tabelle: nome delle colonne: attributi righe: tuple Organizzazione in file e file di indice Basi di Dati Relazionali 3 DB Relazionali: Strumenti MODELLI DI RAPPRESENTAZIONE CONCETTUALE Modello Entità-Relazioni METODOLOGIE DI PROGETTO Top-Down, Bottom-up METODI FORMALI DI OTTIMIZZAZIONE Processi di Normalizzazione (Ristrutturazione Tabelle) LINGUAGGI DEL DBMS RELAZIONALE SQL, Linguaggi Grafici, (definizione schemi relazionali, aggiunta, modifica e cancellazione dati, interrogazioni) Nome Birra FattaDa Indir Produt Nome Basi di Dati Relazionali 4
Relazioni Relazione Binaria A e B sono due insiemi (Domini); un sottoinsieme del prodotto cartesiano R A B notazioni alternative: (a,b) R a R b Esempio A {1,3,5}; B {2,4}; A B {(1,2), (1,4), (3,2), (3,4), (5,2), (5,4)} R {(1,2), (1,4), (5,2)} A {Famiglie}; B {Case}; R Relazione di proprietà Basi di Dati Relazionali 5 Relazioni Generalizzando R D 1 D 2 D 3... D N Grado della relazione: N Domini: D 1,D 2,D 3...D N Esempio Generalità {Nome} {Cognome} {Data nascita} {Città} Basi di Dati Relazionali 6
Dominio Un dominio è un insieme di valori scalari ed un nome che lo identifica: il nome di un dominio è univoco all interno di un database. Un dominio non è altro che un tipo di dati Un dominio rappresenta la più piccola unità di dati rappresentabile. I dati di un dominio sono scalari, sono atomici, non ulteriormente scomponibili Basi di Dati Relazionali 7 Domini e Attributi Dominio Tipo Troppo generico per la definizione semantica di una relazione Esempio Paternità {Nome} {Cognome} {Nome} Paternità {Char-String} {Char-String} {Char-String} Attributo Paternità {Nome-Padre} {Cognome} {Nome-Figlio} Basi di Dati Relazionali 8
Intestazione e corpo di una relazione Una Relazione R, su una collezione di domini D1,D2,, Dn consiste di due parti: intestazione» un insieme fisso di n attributi, o meglio di coppie <nome-attributo:nome-dominio>: {<A1:D1>, <A2:D2>,, <An:Dn>} corpo» Il corpo (body) consiste di un insieme di m tuple, dove ciascuna tupla è un insieme di coppie <nome-attributo:valore-attributo>: {<A1:vi1>, <A2:vi2>,, <An:vin>}, (i=1,2,, m) Basi di Dati Relazionali 9 Grado e Cardinalità di una relazione Il termine n èdetto grado della relazione Gli attributi A1,A2,, An di una relazione R sono tutti distinti! I domini non è detto... Il termine m èdetto cardinalità della relazione In ciascuna tupla c è una coppia <Aj:vij> per ciascun attributo Aj dell intestazione. Per ciascuna coppia <Aj:vij> vij è un valore dal dominio Dj che è associato all attributo Aj. Basi di Dati Relazionali 10
Tuple Una tupla è un mapping dai nomi degli attributi ai valori: Es: Prodotto {Nome} {Prezzo} {Categoria} {Produttore} Nome gizmo Prezzo $19.99 Categoria gadgets Produttore GizmoWorks Talora ci si riferisce ad una tupla come (attenzione all ordine degli attributi): (gizmo, $19.99, gadgets, GizmoWorks) o Prodotto (gizmo, $19.99, gadgets, GizmoWorks). Basi di Dati Relazionali 11 Relazioni e Tabelle Nome degli attributi Nome Prezzo Categoria Produttore gizmo $19.99 gadgets GizmoWorks Ferro da Stiro $29.99 elettrodomes Philips Autofocus $149.99 fotografia Canon Tuple Cinepresa $203.99 fotografia Hitachi Basi di Dati Relazionali 12
Ancora Terminologia Schema Relazionale: nome della relazione + nomi attributi + tipi degli attributi Istanza di una relazione: un insieme di tuple. Le tuple sono tutte diverse! Schema del Database: un insieme di schemi relazionali. Istanza di un Database: una istanza di relazione per ciascuna relazione nello schema. Basi di Dati Relazionali 13 Informazione incompleta e valori nulli In molti casi, i dati disponibili possono non corrispondere esattamente al formato previsto: ad esempio, in una relazione PERSONA(Cognome, Nome, Indirizzo, Telefono) il valore dell attributo telefono potrebbe non essere disponibile per tutte le tuple Non corretto rappresentare l assenza di informazione con un valore del dominio Soluzione: un valore speciale, detto NULL Basi di Dati Relazionali 14
Vincoli di Integrità In molti casi, non è vero che un qualsiasi insieme di tuple sullo schema rappresenti informazioni corrette ESAMI Studente Voto Lode Corso 200768 36 05 937653 28 lode 01 937653 30 lode 04 276545 25 01 Basi di Dati Relazionali 15 Vincoli di Integrità STUDENTI Matricola Cognome Nome Data di Nascita 200768 Verdi Fabio 12/02/1972 937653 Rossi Luca 10/10/1971 937653 Bruni Mario 01/12/1971 ESAMI Studente Voto Lode Corso 200768 36 05 937653 28 lode 01 937653 30 lode 04 276545 25 01 Basi di Dati Relazionali 16
Vincoli di Integrità Ogni vincolo può essere visto come un predicato, una funzione che associa ad ogni istanza il valore vero o falso se il predicato assume valore vero diciamo che l istanza soddisfa il vincolo in generale ad uno schema di base di dati vengono associati un insieme di vincoli e si considerano corrette (o lecite, o ammissibili) le istanze che soddisfano tutti i vincoli E possibile classificare i vincoli a seconda degli elementi della base dati che ne sono coinvolti Basi di Dati Relazionali 17 Vincoli Intrarelazionali e Interrelazionali Un vincolo è intra-relazionale se il suo soddisfacimento è definito rispetto a singole relazioni della base dati un vincolo di tupla è un vincolo che può essere valutato su ciascuna tupla indipendentemente dalle altre» come caso particolare, un vincolo definito con riferimento a singoli valori viene detto vincolo su valori o vincolo di dominio Un vincolo è inter-relazionale se coinvolge più relazioni Basi di Dati Relazionali 18
Vincoli di tupla: esempi (VOTO >= 18) AND (VOTO <= 30) (VOTO = 30) OR (LODE IS NULL) PAGAMENTI(Data, Importo, Ritenute, Netto) Netto = Importo - Ritenute Basi di Dati Relazionali 19 Operatori di confronto A uguale a B A = B A diverso da B A <> B A maggiore di B A > B A minore di B A < B A maggiore o uguale a B A >= B A minore o uguale a B A <= B Basi di Dati Relazionali 20
Chiavi delle relazioni Un sottoinsieme S degli attributi dello schema di una relazione R è detto chiave di R se: Univocità: Nessuna istanza di R può possedere due tuple che abbiano gli stessi valori in tutti gli attributi di S Minimalità (o irriducibilità): Non esiste un sottoinsieme degli attributi di S che goda della proprietà precedente N.B. Un sottonsieme di attributi S che gode della proprietà di univocità ma non di quella di minimalità, viene detto superchiave di R Basi di Dati Relazionali 21 Chiavi candidate e chiavi primarie Una relazione può avere più chiavi: Chiave candidata: ogni possibile sottoinsieme di attributi che soddisfa le proprietà di univocità e minimalità Chiave primaria: la chiave adottata nell accesso a tuple della relazione (le altre chiavi vengono dette chiavi alternative) Un attributo si dice primo se fa parte di almeno una chiave Basi di Dati Relazionali 22
Chiavi: esempio STUDENTI Matricola Cognome Nome Data di Nascita Corso 4328 Rossi Luigi 29/04/59 Informatica 6328 Rossi Dario 29/04/59 Informatica 4766 Rossi Luca 01/05/61 Civile 4856 Neri Luca 01/05/61 Meccanica 5536 Neri Luca 05/03/58 Meccanica Matricola: è una chiave primaria (Cognome, Nome, Data di Nascita): èuna chiave (Matricola, Corso): è una superchiave (Nome, Corso): non è una superchiave Basi di Dati Relazionali 23 Chiavi: esempio STUDENTI Matricola Cognome Nome Data di Nascita Corso 6328 Rossi Dario 29/04/59 Informatica 4766 Rossi Luca 01/05/61 Civile 4856 Neri Luca 01/05/61 Meccanica 5536 Neri Luca 05/03/58 Civile NB: (Cognome, Corso): non è una chiave Le due proprietà di univocità e minimalità devono valere per tutte le possibili istanze di una relazione Basi di Dati Relazionali 24
Chiavi: esempio in una casa editrice AUTORI(NOME, DATA_NASCITA, INDIRIZZO, COD_FISC) LIBRI(CODICE, TITOLO, COSTO, GENERE, CONTRATTO) AUTORI-LIBRI(CF_AUTORE, COD_LIBRO) GENERE(GENERE, COLLOCAZIONE, RESPONSABILE) le chiavi AUTORI LIBRI AUTORI-LIBRI GENERE COD_FISC CODICE (CF_AUTORE, COD_LIBRO) GENERE Basi di Dati Relazionali 25 Chiavi e valori nulli Poiché in una relazione non vi possono essere due tuple uguali, ogni relazione ha almeno una chiave che consiste dell insieme di tutti i suoi attributi Poiché una chiave primaria è usata per accedere alle tuple della relazione i suoi attributi non possono assumere valori non specificati (valore NULL) Basi di Dati Relazionali 26
Creazione tabelle in ACCESS (DDL) chiave primaria Attributo Tipo e dimensione Vincolo di dominio Not Null Basi di Dati Relazionali 27 Vincoli di Tupla e Vincoli di Dominio Vincolo di tupla Vincolo di dominio Basi di Dati Relazionali 28
Vincoli di integrità referenziale (Chiavi esterne) Un vincolo di integrità referenziale tra un insieme di attributi X di una relazione R1 e un altra relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell istanza di R1 compaiono come valori della chiave (primaria) di un istanza di R2 L insieme di attributi X di R1 viene detto foreign key Se la chiave in questione ha più attributi allora la corrispondenza tra valori deve essere attributo per attributo Basi di Dati Relazionali 29 Chiavi esterne: esempio STUDENTI CORSI Matricola Cognome Nome Data di Nascita 200768 Verdi Fabio 12/02/1972 937653 Rossi Luca 10/10/1971 937676 Bruni Mario 01/12/1971 Codice Titolo Docente 01 Ana lis i G ia ni 03 Chim ic a Me lli 04 Chim ic a Me lli ESAMI Studente Voto Lode Corso 200768 26 03 937653 28 01 937653 30 lode 04 Foreign keys Basi di Dati Relazionali 30
Foreign key: esempio AGENTI AUTO INFRAZIONI Matricola CF Cognome Nome 567 RSSM Rossi Mario 456 NRE L Ne ri Luigi 638 NREP Neri Piero Prov Numero P roprie ta rio Indiriz z o RM 2F7643 Verdi Pietro Via Tigli RM 1A2396 Verdi Piero Via Tigli RM 4E 5432 Bini Luc a Via Ac e ri MI 2F7643 Luci Gino Via Aceri Codice Data Agente Art Prov Numero 143256 25/10/92 567 44 RM 4E5432 987554 26/10/92 456 34 RM 4E5432 987555 26/10/92 456 34 RM 2F7643 630876 15/10/92 456 53 MI 2F7643 539856 12/10/92 567 44 MI 2F7643 Basi di Dati Relazionali 31 Chiavi esterne e Relazioni tra Tabelle Se gli attributi X di una tabella TB costituiscono una una chiave esterna per una tabella TA, allora esiste una relazione tra le due tabelle relazione uno a uno: ogni valore della chiave di TA compare al più una volta in TB. relazione uno a molti: ogni valore della chiave di TA può comparire più volte in TB. Basi di Dati Relazionali 32
Chiavi esterne: esempio STUDENTI MATRICOLA NOME COGNOME DATA DI NASCITA CORSI CODICE TITOLO DOCENTE 1 1 m m ESAMI STUDENTE VOTO LODE CORSO Basi di Dati Relazionali 33 Aggiornamenti Il database mantiene uno stato corrente, memorizzato su un qualche supporto informatico: dischi, cd, nastri,... Le operazioni elementari di aggiornamento dei dati sono: 1) aggiungere una tupla 2) cancellare una tupla 3) modificare un attributo in una tupla Questi sono gli aggiornamenti normali, frequenti. Aggiornare lo schema è raro e piuttosto doloroso. Basi di Dati Relazionali 34
Foglio Dati Basi di Dati Relazionali 35 Maschere Basi di Dati Relazionali 36
Integrità referenziale: Problemi Un valore di foreign key rappresenta un riferimento ad una tupla, detta target Bisogna assicurare che un database non include alcun valore di foreign key invalido (problema di integrità referenziale) Il vincolo che i valori di una data foreign key devono corrispondere a valori della chiave di una tupla è noto come vincolo di integrità referenziale Cosa succede se eliminiamo una tupla la cui chiave costitusce una foreign key per una tupla di un altra relazione? Basi di Dati Relazionali 37 Integrità referenziale: Regole Cosa dovrebbe succedere al tentativo di eliminare la tupla target referenziata da una foreign key? RESTRICTED: l operazione di eliminazione è ristretta alle situazioni in cui non c è una tale corrispondenza (è impedita negli altri casi) CASCADE: l operazione di eliminazione elimina in cascata le tuple che referenziano con chiavi esterne le tuple eliminate Le stesse regole si applicano ai tentativi di aggiornare il target (valori della chiave) referenziato da una foreign key Basi di Dati Relazionali 38
Integrità referenziale Aggiornamento, Eliminazione: Cascade /Restricted Basi di Dati Relazionali 39