MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE



Documenti analoghi
Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

MODELLO RELAZIONALE. Introduzione

Vincoli di integrità

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale

Il Modello Relazionale

MAX, SUM, AVG, COUNT)

IL MODELLO RELAZIONALE

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

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Il modello relazionale dei dati e stato introdotto da Codd. nel 1970 (E.F. Codd, \A relational model of data for large

Modulo 2 Data Base 2

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Elena Baralis 2013 Politecnico di Torino 1

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

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

Organizzazione degli archivi

Definizione di domini

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

BASE DI DATI: sicurezza. Informatica febbraio ASA

Partite string string int int. Perché studiare il Modello Relazionale? Capitolo 2. Relazione: tre accezioni. Basi di dati relazionali: definizioni

Progettazione di Basi di Dati

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

Basi di dati 9 febbraio 2010 Compito A

Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Il modello relazionale

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Il Modello Relazionale

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 5

Data Base Relazionali

Basi di Dati: Corso di laboratorio

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

DIP. FUNZIONALI E FORME NORMALI esempi cfr. Albano Ghelli Orsini Basi di dati relazionali e a oggetti Zanichelli, 1997, cap.6 RIDONDANZE E ANOMALIE

Il Modello Relazionale

Informatica per le discipline umanistiche 2 lezione 10

Rappresentazione grafica di entità e attributi

Basi di dati. Concetti Introduttivi ESEMPIO. Fisica, Analisi, Informatica. Entità Relazioni Interrogazioni. Database 2

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Normalizzazione. Normalizzazione. Normalizzazione e modello ER. Esempio. Normalizzazione

Corso sul linguaggio SQL

Lezione V. Aula Multimediale - sabato 29/03/2008

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Corso di Informatica (Basi di Dati)

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

I Sistemi Informativi

MODELLO E/R. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il modello relazionale dei dati

TEORIA sulle BASI DI DATI

ALGEBRA RELAZIONALE RIEPILOGO

Progettazione di Database. Un Esempio

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

I database. Cosa sono e a cosa servono i Database

Modello relazionale. ing. Alfredo Cozzi 1

BASI DI DATI - : I modelli di database

Gestione delle tabelle

Operazioni sui database

DATABASE. A cura di Massimiliano Buschi

Il modello relazionale

Progettazione di un Database

Basi di dati. Le funzionalità del sistema non vanno però ignorate

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione

Introduzione alla teoria dei database relazionali. Come progettare un database

Il linguaggio SQL: DDL di base

Database. Si ringrazia Marco Bertini per le slides

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

Linguaggio SQL. Structured Query Language

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

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

Le Basi di Dati. Le Basi di Dati

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

DBMS (Data Base Management System)

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Corso di Informatica (Basi di Dati)

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Informatica (Basi di Dati)

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Volumi di riferimento

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL - Tipi di dato Il linguaggio SQL

Laboratorio di Basi di Dati e Web

Base di dati e sistemi informativi

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Corso di Informatica RDBMS RDBMS. Corso di Laurea in Conservazione e Restauro dei Beni Culturali

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Unità C1 Modello logico

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

Introduzione all Algebra Relazionale

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Transcript:

MODELLO RELAZIONALE Definizione di relazione Schema e istanza Chiave Valori nulli Predicati e vincoli di integrità Vincolo di integrità referenziale cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE E.F.Codd A relational model for large shared data banks, Communication of ACM, vol.13, n.6, pp 377-387, 1970 Da allora fino alla metà degli anni 80 la ricerca sulle basi di dati è stata caratterizzata dallo studio teorico di vari aspetti riguardanti il modello, dalla ricerca di tecniche efficienti per la sua implementazione Primi prototipi realizzati agli inizi anni 70; dalla metà degli anni 80 i sistemi relazionali risultano dominanti sul mercato INGRES, SYSTEM R, DB2, ORACLE, INFORMIX, MYSQL, ACCESS cesarini-bdsi mod relazionale 2 1

RELAZIONE - definizione Consideriamo un insieme di attributi X = {X 1, X 2, X n } X i è un nome, una stringa Es: nome, indirizzo, codice, xyz, titolo, sposato Un insieme di domini base D = {D 1, D 2, D m } D i è un insieme di valori atomici Es: int, real, char, string, boolean, Una funzione dom che associa ad ogni X i un D j dom(x i ) = D j Es: dom(codice) = int, dom(titolo) = string, dom(sposato) = boolean Tupla (tuple): dato X = {X 1, X 2, X n } una tupla su X è una n-pla di coppie [X 1 :v 1, X 2 :v 2, X n :v n ] tali che v i dom(x i ) cesarini-bdsi mod relazionale 3 RELAZIONE - definizione Esempio di tupla X = { libro_id, titolo, autore} dom(libro_id) = int, dom(titolo) = string, dom(autore) = string [libro_id: 321, titolo: codice a zero, autore: Ken Follett ] Relazione: una relazione è un insieme di tuple definite sullo stesso insieme di attributi Es: {[libro_id: 321, titolo: codice a zero, autore: Ken Follett ], [ libro_id: 128, autore: Umberto Eco, titolo: il nome della rosa]} Rappresentazione tabellare di una relazione libro_id autore titolo _ 321 Ken Follett codice a zero 128 Umberto Eco il nome della rosa cesarini-bdsi mod relazionale 4 2

RELAZIONE Rappresentazione di una relazione in forma tabellare: Colonne: ogni colonna è associata ad un attributo Righe: ogni riga rappresenta una tupla L ordine delle colonne e l ordine delle righe non hanno importanza (nella definizione si parla di insiemi ) Non ci sono righe duplicate Arietà di una relazione: numero di attributi su cui è definita (numero delle colonne nella tabella) Cardinalità di una relazione: numero delle tuple che la costituiscono (numero delle righe nella tabella) cesarini-bdsi mod relazionale 5 SCHEMA / ISTANZA Schema di relazione: R(X) R è un nome di relazione X = {A 1, A 2, A n } è un insieme di attributi Ogni attributo ha associato il proprio dominio Schema di base di dati: B = {R 1 (X 1 ), R 2 (X 2 ), R k (X k )} insieme di schemi di relazione Istanza di relazione su uno schema R(X): r un insieme di tuple su X Istanza di base di dati su uno schema B: b b = {r 1,, r k } r i istanza di R i (X i ) cesarini-bdsi mod relazionale 6 3

SCHEMA/ISTANZA esempio Schema LIBRO(inv, autore, titolo) dom(inv) = UTENTE(codfisc, nome, cognome, ind) dom(codfisc) = PRESTITO(libro, utente, data-prest, data-rest) dom(libro) = Istanza libro inv autore titolo _ 124 Umberto Eco Il nome della rosa 125 Ken Follett Codice a zero utente codfisc nome cognome ind _ RSSFRN54T60B028I Franco Rossi Prato BNCCHR80B46F051D Chiara Bianchi Empoli prestito libro utente data-prest data-rest _ 125 RSSFRN54T60B028I 24/10/01 3/12/01 cesarini-bdsi mod relazionale 7 notazione X un insieme di attributi t una tupla t[x] valori che la tupla t assume in corrispondenza degli attributi X Es: t: [inv: 125, autore: Ken Follett, titolo: Codice a zero ] t[inv] = 125 t[autore, titolo] = Ken Follett, Codice a zero Nota: quando non necessario non indicheremo esplicitamente la funzione dom cesarini-bdsi mod relazionale 8 4

CHIAVE Chiave candidata: un insieme di attributi X di R tali che In qualsiasi istanza r di R non possono esistere due tuple t e t tali che t[x] = t [X] La proprietà precedente non vale per nessun sottoinsieme proprio di X Attributo primo: attributo che appare almeno in una chiave candidata Chiave primaria: fra le chiavi candidate ne viene scelta una come chiave primaria Es: PERSONA (cod_fisc, num_sanitario, nome, cognome, età) Chiavi candidate: cod_fisc num_sanitario Superchiave: insieme di attributi che include una chiave cesarini-bdsi mod relazionale 9 CHIAVE - esempi AUTORE (nome, nazionalità, data-nascita, data-morte) Chiave: nome, nazionalità, data-nascita, data-morte AUTORE (codice, nome, nazionalità, data-nascita, data-morte) Chiave: codice STUD (matricola, nome, indirizzo) Chiave: matricola se siamo in uno specifico ateneo STUD ( matricola, ateneo, nome, ind) Chiave: matricola, ateneo ad esempio in una biblioteca cui accedono studenti di vari atenei STUD (matricola, ateneo, cod-fisc, nome, ind) Chiave: matricola, ateneo Chiave: cod-fisc cesarini-bdsi mod relazionale 10 5

Schemi su cui discutere la chiave LIBRO (inv, autore, titolo) STUDENTE (matricola, nome, cognome, corso_di_laurea) PRESTITO (libro, studente, data-prestito, data-restituzione) dom(libro.inv) = dom(prestito.libro) dom(studente.matricola) = dom(libro.studente) FORNITORE (codice, nome, indirizzo) ORDINE (numero, fornitore, data) DETTAGLI (num-ordine, articolo, quantità) dom(fornitore.codice) = dom(ordine.fornitore) dom(dettagli.num-ordine) = dom(ordine.numero) PAZIENTE (cod-san, cod-fisc, nome, cognome, indirizzo) MEDICO (codice, nome, cognome, cod-fiscale, p-iva) VISITA (medico, paziente, data) dom(medico.codice) = dom(visita.medico) dom(visita.paziente) =? APPUNTAMENTO (cliente, operatore, servizio, data, ora) cesarini-bdsi mod relazionale 11 VALORI NULLI Assenza di valore in una tupla per un attributo A: valore nullo, NULL NULL D i i Motivazione valori nulli: Valore sconosciuto esiste ma non lo conosciamo Valore inesistente attributo inapplicabile Senza informazione può esistere o no, se esiste non lo conosciamo CITTA -PREF CAMPIONI città ind-prefettura _ Roma via IV novembre Firenze NULL sconosciuto Empoli NULL inapplicabile nome data-nasc data-morte Rossi 17/10/1910 21/9/1982 Bianchi NULL 3/10/1958 sconosciuto Verdi 14/8/1940 NULL sconosciuto inappl. cesarini-bdsi mod relazionale 12 6

VINCOLI DI INTEGRITA Predicato che associa ad ogni istanza (di relazione o di base di dati) il valore VERO o FALSO Istanza che soddisfa i vincoli di integrità: corretta, legale Esempi di vincoli: di dominio 18 voto 30 età 110 di tupla (NOT (lode = si )) OR (voto = 30) di chiave t[cod-fisc] t [cod-fisc] Vincolo di integrità di una entità La chiave primaria di una relazione non può avere valore nullo o una componente nulla Se un sistema permette di definire dei vincoli di integrità, ogni aggiornamento dei dati che li viola viene rifiutato cesarini-bdsi mod relazionale 13 PREDICATI Predicato semplice A op c con A attributo, c dom(a), op {<,<=,=,>,>=,<>} A op B con A e B attributi con domini confrontabili nota: altri operatori utilizzabili in SQL verranno introdotti successivamente Predicato composto predicato che combina predicati semplici tramite gli operatori logici AND, OR, NOT Esempi (voto>=18) AND (voto<=30) invio= posta OR invio= fax (media>=27) AND (ccl= geologia OR ccl= biologia ) stipendio>200 AND anzianità<3 città-nascita=città-residenza I predicati vengono usati per definire vincoli di integrità (di dominio o di tupla) per definire condizioni di selezione (come vedremo) cesarini-bdsi mod relazionale 14 7

VALUTAZIONE DEI PREDICATI Tabelle di verità (v = vero, f = falso) AND v f OR v f NOT v f v v f v v v f v f f f f v f La valutazione di un predicato semplice dà luogo a uno dei valori vero o falso I predicati composti vengono valutati applicando gli operatori logici (cfr. tabelle di verità) ai valori ottenuti dai predicati semplici Ordine di valutazione degli operatori logici: NOT, AND, OR Possono essere usate le parentesi per specificare un preciso ordine di valutazione cesarini-bdsi mod relazionale 15 VINCOLO DI INTEGRITA REFERENZIALE Consideriamo due schemi R1 e R2; siano X = A 1 A 2 A p un insieme di attributi di R1 K = B 1 B 2 B p la chiave primaria di R2 si ha un vincolo di integrità referenziale tra l insieme X di R1 e la chiave K di R2 se in ogni istanza della base di dati si ha che per ogni tupla t 1 di r1 esiste una tupla t 2 di r2 tale che t 1 [A i ] = t 2 [B i ] i = 1, 2, p Nota: i domini di A i e B i devono essere uguali X è chiamata chiave esterna (foreign key) di R1 cesarini-bdsi mod relazionale 16 8

INTEGRITA REFERENZIALE esempi LIBRO (inv, autore, titolo) STUDENTE (matr, nome, cognome, Ccl) PRESTITO (libro, stud, data) PRESTITO.libro ref LIBRO.inv Ogni valore che compare in PRESTITO.libro deve comparire anche in LIBRO.inv, ma non il viceversa I libri che vengono dati in prestito devono essere inventariati nell archivio LIBRO; ci possono essere libri che nessuno ha chiesto in prestito PRESTITO.stud ref LIBRO.inv ORDINE (num, fornitore, data) DETTAGLI (num-ordine, articolo, quantità) FORNITORE (codice, nome, indirizzo) DETTAGLI.num-ordine ref ORDINE.num ORDINE.fornitore ref FORNITORE.codice cesarini-bdsi mod relazionale 17 INTEGRITA REFERENZIALE esempi PAZIENTE (codice-san, nome, cognome, ind, cod-fisc) MEDICO (codice, nome, cognome, fisc, p-iva) VISITA (medico, paziente, data) VISITA.medico ref MEDICO.codice VISITA.paziente ref PAZIENTE.codice-san) STUDENTE (matr, nome, indirizzo, corso_di_laurea) CORSO (codice, nome, prof) ESAME (matr, corso, voto, data) ESAME.matr ref STUDENTE.matr ESAME.corso ref CORSO.codice cesarini-bdsi mod relazionale 18 9

Trattamento del vincolo di integrità referenziale FORNITORE(codice, nome, indirizzo) ORDINE (num, fornitore, data) ORDINE.fornitore ref FORNITORE.codice Inserimento non si può inserire nella tabella ORDINE una riga con un valore di fornitore che non compare come codice in una riga di FORNITORE database valido: FORNITORE codice nome indirizzo ORDINE num fornitore data _ 212 Rossi FI 5 217 6/3/00 217 Bianchi NA 7 212 4/7/01 18 217 5/8/01 L inserimento in ORDINE della tupla [19 218 6/2/02] viene rifiutato dal sistema cesarini-bdsi mod relazionale 19 Trattamento del vincolo di integrità referenziale FORNITORE(codice, nome, indirizzo) ORDINE (num, fornitore, data) ORDINE.fornitore ref FORNITORE.codice FORNITORE codice nome indirizzo ORDINE num fornitore data _ 212 Rossi FI 5 217 6/3/00 217 Bianchi NA 7 212 4/7/01 18 217 5/8/01 Cancellazione - supponiamo di cancellare dalla tabella FORNITORE la riga relativa al fornitore 212 default: la cancellazione viene rifiutata dal sistema perché risulterebbe una violazione del vincolo cascade: la riga viene cancellata ma vengono anche cancellate da ORDINE tutte le righe con fornitore = 212 nota:queste sono le opzioni previste da ACCESS cesarini-bdsi mod relazionale 20 10

Trattamento del vincolo di integrità referenziale FORNITORE(codice, nome, indirizzo) ORDINE (num, fornitore, data) ORDINE.fornitore ref FORNITORE.codice FORNITORE codice nome indirizzo ORDINE num fornitore data _ 212 Rossi FI 5 217 6/3/00 217 Bianchi NA 7 212 4/7/01 18 217 5/8/01 Modifica - supponiamo di modificare nella tabella FORNITORE il codice 217 in 218 default: la modifica viene rifiutata dal sistema perché risulterebbe una violazione del vincolo cascade: la modifica viene accettata ma vengono anche modificati in ORDINE tutti i valori 217 di fornitore in 218 nota:queste sono le opzioni previste da ACCESS cesarini-bdsi mod relazionale 21 11