Il modello relazionale

Documenti analoghi
RELAZIONI E BASI DI DATI

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, IL MODELLO RELAZIONALE

Ordo et connexio rerum idem est ac ordo et connexio idearum

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

I modelli logici dei dati

Il modello logico dei dati

Le basi di dati. Lez. 3: Il Modello Relazionale

Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2010/2011. Basi di dati

Modello relazionale: Concetti Base. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Vincoli di integrità Normalizzazione

Le basi di dati. Base di dati = dati + DBMS.

Progettazione di basi di dati

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

I database. Introduzione alla teoria delle basi di dati

Informatica. Il modello relazionale: Relazioni e tabelle. Relazioni con attributi

CAPITOLO V. DATABASE: Il modello relazionale

Indicare quale o quali delle seguenti affermazioni sono vere?

Database. Cos è un database? Intro Tipi di entità Mapping ER/EER à Relazionale

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO e SCHEMA FISICO Costruzione delle tabelle

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

Modello Relazionale. Architettura a tre livelli di un DBMS

BASE DI DATI: sicurezza. Informatica febbraio ASA

Modulo 2 Data Base - Modello Relazionale

Le Basi di dati: progettazione concettuale

Cardinalità e identificatori. Informatica. Generalizzazioni. Generalizzazioni. Generalizzazioni. Generalizzazioni

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Normalizzazione. Definizione

Modulo 2 Data Base 2

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

LA NORMALIZZAZIONE. Prima parte

<Nome Tabella>.<attributo>

Il modello relazionale

Modello Entità-Relazione

Caratteristiche di un linguaggio ad alto livello

Vincoli di integrità

Unità A2. Progettazione concettuale. Obiettivi. Astrazione. Astrazione per aggregazione

MODELLO RELAZIONALE. Introduzione

Cardinalità. Informatica. Cardinalità. Cardinalità. Cardinalità. Cardinalità. Cardinalità delle associazioni:

Informatica Industriale Modello funzionale: Informazione Modello Entità-Relazione

Il modello Entity-Relationship: elementi avanzati

Elena Baralis 2013 Politecnico di Torino 1

Progettare Basi di Dati

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, La normalizzazione

Normalizzazione di Basi di Dati

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un negozio di libri online:

BASI DATI: algebra relazionale

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Progettazione concettuale usando il modello Entità-Relazione (ER)

IL MODELLO ENTITY RELATIONSHIP. il modello ER 1

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

01 - Elementi di Teoria degli Insiemi

Basi di dati (nuovo ordinamento) 16 giugno 2008 Compito A

Normalizzazione di Basi di Dati. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni

Transcript:

Il modello relazionale

Il modello relazionale Modello logico dei dati Basato sul concetto di relazione o tabella Relazione: da teoria degli insiemi 2

Il modello relazionale Garantisce indipendenza fisica dei dati Utenti che accedono ai dati e programmatori che sviluppano applicazioni fanno riferimento al livello logico dei dati Agli utenti e ai programmatori, non serve sapere come i dati sono memorizzati fisicamente 3

Prodotto cartesiano Prodotto cartesiano di due insiemi A e B AxB = {(x1,x2) x1 A e x2 B} dove (x1,x2) sono coppie ordinate di elementi Per esempio: A = {1,2,4}, B= {a,b} AxB = {(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)} 4

Relazione matematica Relazione matematica su insiemi A e B (domini della relazione) = sottoinsieme di AxB Esempio: AxB = {(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)} Una relazione matematica su insieme A e B potrebbe essere: R={(1,a),(1,b),(4,b)} 5

Relazioni e tabelle DB costituiti da relazioni finite su domini eventualmente infiniti Finito o infinito? Per esempio: {z z è un numero naturale} è un insieme infinito {y y è un numero naturale tra 1 e 50 compresi} è un insieme finito 7

Relazioni e tabelle In un DB non possono esserci insiemi infiniti Sistemi di calcolo gestiscono solo insiemi finiti 8

Relazioni e tabelle Relazioni rappresentate graficamente come tabelle 1 1 1 B 4 b 9

Prodotto cartesiano Prodotto cartesiano di n insiemi D1, D2,, Dn D1x xdn = {(z1,,zn) z1 D1,, zn Dn} dove (z1,,zn) sono n-uple ordinate di elementi 10

Prodotto cartesiano Esempio: n=3: D1={0,1}, D2={a,b}, D3={rosso,blu} Che cos è D1xD2xD3? Cioè, che cos è {0,1}x{a,b}x{rosso,blu}? 11

Prodotto cartesiano Esempio: n=3: D1={0,1}, D2={a,b}, D3={rosso,blu} Che cos è D1xD2xD3? Cioè, che cos è {0,1}x{a,b}x{rosso,blu}? {(0,a,rosso), (0,a,blu), (0,b,rosso), (0,b,blu), (1,a,rosso), (1,a,blu), (1,b,rosso), (1,b,blu)} 12

Relazione matematica Relazione matematica sugli insiemi D1,,Dn (domini della relazione) = un sottoinsieme di D1x xdn Esempio: relazione sugli insiemi {0,1}, {a,b}, {rosso,blu} {(0,b,blu), (1,a,rosso), (1,b,rosso), (1,b,blu)} 13

Relazioni e tabelle Esempio: risultati partite di calcio Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 14

Relazioni e tabelle Esempio: risultati partite di calcio Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 Sequenza di caratteri (stringa) Numero naturale (intero) 15

Relazioni e tabelle Esempio: risultati partite di calcio Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 Sequenza di caratteri Numero naturale (intero) (stringa) Questa relazione: un sottoinsieme di Stringa x Stringa x Intero x Intero 16

Relazioni e tabelle n-upla di relazione contiene dati tra loro collegati, che verificano la relazione n-uple sono ordinate: ordine dei loro elementi è significativo Per esempio: (Juventus,Lazio,3,2) significa che il risultato della partita Juventus-Lazio, giocata in casa dalla Juventus, è 3 a 2 17

Relazioni e tabelle Una relazione è un insieme: n-uple della relazione devono essere distinte (no righe ripetute in tabella) n-uple non sono tra loro ordinate (tabelle con stesse righe ordinate in modo diverso rappresentano la stessa relazione) Insieme: collezione di elementi L ordine degli elementi non è importante Un insieme non contiene duplicati 18

Relazioni e Basi di Dati Studenti Un DB è solitamente costituito da più relazioni (tabelle) le cui tuple contengono valori comuni (usati per stabilire corrispondenza tra tuple) Per esempio: tabelle che descrivono studenti, esami e corsi Matricola Cognome Nome DataNascita 276545 Rossi Maria 25/11/1981 485745 Neri Anna 23/04/1982 200768 Verdi Fabio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 29

Relazioni e Basi di Dati Esami Studente Voto Corso 276545 28 01 485745 27 04 200768 25 01 Corsi 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 Esempio: Lavoratori Matricola 276545 485745 200768 Si possono rappresentare informazioni complesse mediante tabelle diverse 31

Schemi di relazioni e di DB Schema di relazione: R(X) Costituita da simbolo R (nome della relazione) e da insieme di nomi di attributi X={A1,,An} Per esempio: Esami(Studente,Voto,Corso) Esami Studente Voto Corso 276545 28 01 485745 27 04 200768 25 01 587614 24 04 32

Schemi di relazioni e di DB Schema di base di dati: R={R1(X1),,Rn(Xn)} Insiemi di schemi di relazione con nomi diversi Esempi: Università = {Studenti(Matricola,Cognome,Nome,DataNascita) Esami(Studente,Voto,Corso), Corso(Codice,Titolo,Docente)} 33

Schemi di relazioni e di DB Istanza di relazione su schema R(X) Insieme r di tuple su X Istanza di base di dati su schema R={R1(X1),,Rn(Xn)} Insieme r di relazione r={r1,,rn} dove ogni ri è una relazione sullo schema Ri(Xi) 34

Esempi di relazione DA MARIO Ricevuta n. 1357 Del 5/2/04 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/04 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/04 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 35

Esempi di relazione Le ricevute hanno una struttura che prevede alcune informazioni fisse Numero, data e totale e un numero di righe variabile Non è possibile rappresentare l insieme delle ricevute con un unica relazione Non sarebbe possibile rappresentare le righe in un numero non predeterminato 36

Esempi di relazione Dettaglio Ricevute Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00 Num. Q.tà 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 37

Esempi di relazione La base di dati nella slide precedente rappresenta correttamente le ricevute solo a due condizioni: Non interessa mantenere traccia dell ordine con cui le righe compaiono in ciascuna ricevuta In una ricevuta non compaiono due righe uguali In entrambi i casi, si può risolvere il problema aggiungendo un attributo, che indica la posizione della riga sulla ricevuta 38

Esempi di relazione Dettaglio Ricevute Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00 Num. Riga Q.tà 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è 392,00

Esempi di relazione Dettaglio Ricevute Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00 Num. Riga Q.tà 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è 392,00

Informazione incompleta e valori nulli 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 41

Informazione incompleta e valori nulli NULL: valore nullo Assegnato agli elementi di tuple inesistenti o sconosciuti NULL è valore aggiuntivo rispetto al dominio di un attributo 42

Informazione incompleta e valori nulli In basi di dati, i due casi sopra trattati come assenza di informazione In assenza di informazione su un attributo bisogna usare NULL perché non si confonde con altri valori del dominio dell attributo 43

Informazione incompleta e valori nulli Per esempio: 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 44

Informazione incompleta e Studenti valori nulli Non tutti gli attributi di una relazione devono poter assumere valore nullo In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Matricola Cognome Nome DataNascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL Verdi Fabio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 45

Informazione incompleta e Studenti valori nulli Non tutti gli attributi di una relazione devono poter assumere valore nullo In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Matricola Cognome Nome DataNascita OK 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL Verdi Fabio 12/02/1982 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 46

Informazione incompleta e Studenti valori nulli Non tutti gli attributi di una relazione devono poter assumere valore nullo In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Matricola Cognome Nome DataNascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1982 NULL Verdi Fabio 12/02/1982 No: matricola usata per correlare relazione 587614 Rossi Luca 10/10/1981 937653 Bruni Mario 01/12/1981 47

Informazione incompleta e Esami valori nulli Studente Voto Corso 276545 28 01 No: informazione inutile Corsi NULL 27 NULL 200768 25 01 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli 48

Informazione incompleta e Esami valori nulli Studente Voto Corso 276545 28 01 No: informazione inutile Corsi NULL 27 NULL 200768 25 01 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli 49

Informazione incompleta e Esami valori nulli Studente Voto Corso 276545 28 01 NULL 27 NULL 200768 25 01 Corsi No: codice usato Per correlare relazione 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL NULL Chimica Belli 50

Informazione incompleta e Esami valori nulli Studente Voto Corso 276545 28 01 NULL 27 NULL 200768 25 01 Corsi 587614 24 NULL Codice Titolo Docente 01 Analisi Giani 03 Chimica NULL OK NULL Chimica Belli 51

Vincoli di chiave Chiave : insieme di attributi usato per identificare univocamente le tuple di una relazione Superchiave : un insieme K di attributi è detto superchiave di una relazione r se r non contiene due tuple t1 e t2 con t1[k] = t2[k] K è una chiave di r se è una superchiave minimale di r L insieme di tutti gli attributi di una relazione e superchiave della relazione (non ci possono essere 41 due tuple identiche in una relazione)

Chiavi {Nome, Corso} non è una chiave Matricola Cognome Nome Nascita Corso 4328 Rossi Luigi 29/04/79 Informatica 6328 Rossi Dario 29/04/79 Informatica 4766 Rossi Luca 01/05/81 Fisica 4856 Neri Luca 01/05/81 Economia 5536 Neri Luca 05/03/78 Economia 42

Chiavi e Superchiavi {Matricola, Corso} è una superchiave, ma non una chiave -> {Matricola} è sufficiente Matricola Cognome Nome Nascita Corso 4328 Rossi Luigi 29/04/79 Informatica 6328 Rossi Dario 29/04/79 Informatica 4766 Rossi Luca 01/05/81 Fisica 4856 Neri Luca 01/05/81 Economia 5536 Neri Luca 05/03/78 Economia 43

Chiavi e Superchiavi {Matricola} è una superchiave minimale, quindi una chiave Il valore di Matricola identifica univocamente gli studenti in modo non ambiguo Matricola Cognome Nome Nascita Corso 4328 Rossi Luigi 29/04/79 Informatica 6328 Rossi Dario 29/04/79 Informatica 4766 Rossi Luca 01/05/81 Fisica 4856 Neri Luca 01/05/81 Economia 5536 Neri Luca 05/03/78 Economia 44

Chiavi In questa relazione i dati anagrafici identificano univocamente una persona: {Cognome, Nome, Nascita} è casualmente una chiave (ma potrebbero esistere due studenti con lo stesso nome, cognome e data di nascita) Matricola Cognome Nome Nascita Corso 4328 Rossi Luigi 29/04/79 Informatica 6328 Rossi Dario 29/04/79 Informatica 4766 Rossi Luca 01/05/81 Fisica 4856 Neri Luca 01/05/81 Economia 5536 Neri Luca 05/03/78 Economia 45

Vincoli di chiave Il fatto che ogni schema di relazione abbia almeno una chiave garantisce Identificabilità univoca dei dati Definizione di corrispondenze tra dati contenuti in relazioni diverse (i riferimenti tra relazioni vanno fatti attraverso delle chiavi) Per esempio: nella base di dati Università Studente corrisponde a Matricola della relazione Studenti Corso corrisponde a Codice della relazione 46 Corsi

Chiavi Corsi Codice Titolo Docente 01 Analisi Giani 03 Chimica Melli 04 Chimica Belli Studenti Matricola Cognome Nome DataNascita 276545 Rossi Maria 25/11/1981 485745 Neri Anna 23/04/1982 200768 Verdi Fabio 12/02/1982 587614 Rossi Luca 10/10/1981 587614 Bruni Mario 01/12/1981 47

Chiave e valori nulli Una delle chiavi della relazione viene definita Chiave primaria : la chiave primaria non può avere valori nulli Identificata mediante sottolineatura ({Matricola}) Usata per stabilire corrispondenza tra tabelle Se nessun attributo della relazione può prendere il ruolo di chiave primaria se ne definisce uno aggiuntivo a tale scopo (codice univoco attribuito ad ogni tupla quando viene inserita) Prima ancora della nascita delle basi di dati, codici identificativi erano utilizzati per garantire identificazione univoca dei soggetti di un dominio (numero di matricola, codice fiscale, targa di un autovettura) 48

Vincoli di integrità referenziale Per esempio, per le relazioni: Studenti(Matricola,Cognome,Nome,DataNascita) Corsi(Codice,Titolo,Docente) Esami(Numero,Studente,Voto,Lode,Corso) Un valore può comparire nell attributo Studente di una tupla della relazione Esami solo se compare anche come valore di Matricola in un istanza della relazione Studenti 49

Vincoli interrelazionali Vincoli di integrità referenziale: Servono a garantire che i riferimenti tra tabelle siano possibili Un vincolo di integrità referenziale fra un insieme di attributi X di una relazione R1 ed una relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell istanza di R1 compaiono come valori della chiave (primaria) dell istanza di R2 50

Vincoli di integrità referenziale Studente Voto Corso 276545 28 33 485745 26 04 200768 30 01 587614 24 04 Esami Vincolo Integrità referenziale: Matricola Nome DataNascita 276545 Maria Rossi 25/11/1981 485745 Anna Guidi 23/04/1982 200768 Fabio Verdi 12/02/1982 587614 Luca Romani 10/10/1981 457455 Mario Giani 01/12/1981 Studenti IR: Esami(Studente)! Studenti(Matricola) 51