IL MODELLO RELAZIONALE

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

Il Modello Relazionale

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

MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE

Il Modello Relazionale

MODELLO RELAZIONALE. Introduzione

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

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

Organizzazione degli archivi

Il Modello Relazionale

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

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

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

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

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

Progettazione di Basi di Dati

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

BASI DI DATI - : I modelli di database

Vincoli di integrità

Il modello relazionale

Rappresentazione grafica di entità e attributi

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

Informatica per le discipline umanistiche 2 lezione 10

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Operazioni sui database

Introduzione ai database relazionali

LA NORMALIZZAZIONE. Introduzione

Definizione di domini

BASE DI DATI: sicurezza. Informatica febbraio ASA

Elena Baralis 2013 Politecnico di Torino 1

FORME NORMALI E DIPENDENZE

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

La progettazione concettuale: il modello ER. 17/12/2007 Unità di Apprendimento A2 1

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

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

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

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

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Modello relazionale. ing. Alfredo Cozzi 1

Modellazione dei dati in UML

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

Lezione 2. Il modello entità relazione

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

Gestione delle tabelle

Database. Si ringrazia Marco Bertini per le slides

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

Elementi di Algebra Relazionale

DBMS (Data Base Management System)

DATABASE. nozioni di base

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

Lezione 8. La macchina universale

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

Capitolo 13. Interrogare una base di dati

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Appunti sulla Macchina di Turing. Macchina di Turing

Informatica (Basi di Dati)

Modulo 2 Data Base 2

I Sistemi Informativi

Basi di Dati. Conversione Modello ER in Modello Relazionale. K. Donno - Conversione Modello ER in Modello Relazionale

Progettaz. e sviluppo Data Base

I libri di testo. Carlo Tarsitani

Normalizzazione. Relazionali

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

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

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

TEORIA sulle BASI DI DATI

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

(anno accademico )

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

PROCESSO DI INDICIZZAZIONE SEMANTICA

DATABASE. A cura di Massimiliano Buschi

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

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

70555 Informatica Sicurezza Mario Rossi Anna Bianchi. Esempio istanza:

DFD DISPENSA DEL CORSO DI SISTEMI INFORMATIVI UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA

Facoltà di Farmacia - Corso di Informatica

Database 1 biblioteca universitaria. Testo del quesito

Realizzazione di una classe con un associazione

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

PROGETTAZIONE CONCETTUALE

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

Fondamenti dei linguaggi di programmazione

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

Archivi e Basi di Dati

Nozione di algoritmo. Gabriella Trucco

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

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

Introduzione al corso

Esame di INFORMATICA

Limiti della gestione tradizionale degli archivi. Prof. Francesco Accarino IIS Altiero Spinelli

Data Base Relazionali

1. PRIME PROPRIETÀ 2

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Raffinamento dello schema e forme normali. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Le Basi di Dati. Le Basi di Dati

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

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

Transcript:

IL MODELLO RELAZIONALE E i vincoli per le basi di dati relazionali 2 La storia Introdotto nel 1970 da E. F. Ted Codd http://en.wikipedia.org/wiki/edgar_f._codd (centro ricerche IBM) Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks, http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf Il modello usa il concetto di relazione matematica come suo componente elementare e ha il suo fondamento teorico nella teoria degli insiemi e nella logica dei predicati del primo ordine.

3 Le basi Il modello relazionale rappresenta la base di dati come una collezione di relazioni Pensiamo a una relazione come a una tabella di valori: ogni riga della tabella rappresenta una collezione di dati collegati. Una riga rappresenta un fatto che tipicamente corrisponde ad un entità o a un associazione del modello reale. 4 Un esempio

5 I termini giusti Una riga è detta tupla Un intestazione di colonna è detta attributo La tabella è detta relazione Il tipo di dati che descrive i tipi di valori che possono apparire in ogni colonna è rappresentato da un dominio di possibili valori 6 Dominio (1) Un dominio D è un insieme di valori atomici. Per atomici si intende che ogni valore nel dominio è indivisibile, per lo meno per quanto riguarda il modello relazionale. Bisogna specificare un nome per il dominio. Un metodo comune per indicare un dominio consiste nello specificare un tipo di dati, da cui sono tratti i valori dei dati che formano il dominio. Esempio: Nomi: l insieme delle stringhe di caratteri che rappresentano i nomi di persona. Età_impiegati: possibili età degli impiegati di un azienda; ogni età deve avere un valore compreso tra 15 e 80 anni. Nomi_dipartimenti_universitari: l insieme dei nomi dei dipartimenti universitari in un università (ad esempio: informatica, ingegneria )

7 Dominio (2) Per ogni dominio viene anche specificato un tipo di dati o formato. Esempio: Il tipo di dati di Nomi_dipartimenti_universitari è l insieme di tutte le stringhe di caratteri che rappresentano nomi validi di dipartimenti; Il tipo di dati di Età_impiegati è un numero intero compreso tra 15 e 80 8 Lo schema Uno schema di relazione R è indicato con R(A 1, A 2,, A n ), dove: R è il nome della relazione A 1, A 2,, A n è l elenco di attributi Ogni attributo A i fornisce il nome del ruolo interpretato da un certo dominio D nello schema di relazione R. D è detto dominio di A i ed è indicato con dom(a i ) Il grado (o arità) di una relazione è il numero n di attributi presenti nel suo schema di relazione.

9 Lo schema, un esempio STUDENTE(Nome, SSN, Telefono_di_casa, Indirizzo, Telefono_ufficio, Età, MV) oppure STUDENTE(Nome: string, SSN: string, Telefono_di_casa: string, Indirizzo: string, Telefono_ufficio: string, Età: integer, MV: real) dom(nome) = Nomi dom(ssn) = Numeri_previdenza_sociale 10 Relazione Una relazione (o stato di relazione) r dello schema di relazione R(A 1, A 2,, A n ) è indicato anche con r(r) ed è un insieme di n-tuple, r = {t 1, t 2,, t m } Ogni n-tupla t è un elenco ordinato di n valori t = < v 1, v 2,, v n > dove ogni valore v i con 1 i n è un elemento di dom(a i ) oppure è uno speciale valore null Il valore i-esimo nella tupla t, che corrisponde all attributi A i, è indicato con t[a i ] o t[i]

11 Esempio STUDENTE 12 Definizione formale Una relazione (o stato di relazione) r(r) è una relazione matematica di grado n sui domini dom(a 1 ), dom(a 2 ),, dom(a n ), cioè un sottinsieme del prodotto cartesiano dei domini che definiscono R: r(r) (dom(a 1 ) x dom(a 2 ) x x dom(a n ))

1. Ordinamento delle tuple di una relazione Dal punto di vista logico non c è alcuna preferenza per un ordinamento rispetto ad un altro (per definizione gli elementi di un insieme matematico non hanno ordine). Dal punto di vista fisico un ordine c è necessariamente (c è una riga prima/dopo un altra). 13 2. Ordinamento dei valori all interno di una tupla Dalla definizione sono valori ordinati ma, a livello logico, l ordine degli attributi e dei loro valori non è importante basta che si mantenga corrispondenza tra attributi e valori. 14

15 3. Valori e valori null nelle tuple Ogni valore nella tupla è un valore atomico, cioè non divisibile in parti componenti usando la struttura del modello relazionale di base. Non sono consentiti attributi composti e/o multivalore. I valori nulli vengono utilizzati per rappresentare i valori di attributi sconosciuti o non applicabili a una certa tupla. 4. Interpretazione (significato) di una relazione Lo schema di relazione può essere interpretato come una dichiarazione, ossia un tipo di asserzione. Ogni tupla nella relazione può perciò essere interpretata come un fatto o una particolare istanza dell asserzione. Le relazioni possono rappresentare: fatti su entità fatti su associazioni 16

17 Vincoli del modello relazionale In una base di dati ci sono generalmente molte relazioni e le tuple in esse contenute sono di solito collegate in vari modi. Lo stato dell intera base di dati corrisponde agli stati di tutte le sue relazioni in un particolare momento. Ci sono molti vincoli sui valori effettivi che caratterizzano uno stato della base di dati: 1. Vincoli intrinseci basati sul modello 2. Vincoli basati sullo schema 3. Vincoli basati sull applicazione 18 1. Vincoli intrinseci basati sul modello Sono vincoli intrinseci del modello dei dati Esempio: Il vincolo che una relazione non può avere tuple duplicate è un vincolo intrinseco.

19 2. Vincoli basati sullo schema Sono vincoli che possono essere espressi direttamente sugli schemi del modello dei dati specificandoli di solito nel linguaggio DDL Sono questi: a. Vincoli di dominio b. Vincoli di chiave e vincoli sui valori nulli c. Vincoli di integrità delle entità d. Vincoli di integrità referenziale 20 3. Vincoli basati sull applicazione Sono vincoli più generali e in genere non possono essere espressi direttamente negli schemi del modello dei dati Devono essere specificati e realizzati dai programmi applicativi Sono detti anche vincoli di integrità semantici o regole di business

21 2.a. Vincoli di dominio Stabiliscono che all interno di ciascuna tupla il valore di ogni attributo A deve essere un valore atomico del dominio dom(a). Ad ogni dominio è associato un tipo di dati. 2.b. Vincoli di chiave e vincoli sui valori nulli Abbiamo detto che: Una relazione è definita come un insieme di tuple [quindi] Tutti gli elementi di un insieme sono distinti per definizione [quindi] Le tuple di una relazione devono essere distinte [quindi] Nessuna coppia di tuple può assumere la stessa combinazione di valori per tutti gli attributi Di solito ci sono altri sottinsiemi di attributi di uno schema di relazione R con la proprietà che nessuna coppia di tuple in un qualsiasi stato di relazione r di R possa avere la stessa combinazione di valori per questi attributi. 22

2.b. Vincoli di chiave e vincoli sui valori nulli: la superchiave Denotiamo superchiave SK il sottinsieme di attributi per cui ogni coppia di tuple distinte, t 1 e t 2 : t 1 [SK] t 2 [SK] in uno stato di relazione r di R. Una superchiave definisce un vincolo di univocità secondo il quale nessuna coppia di tuple distinte in un stato r di R può avere lo stesso valore per SK. Ogni relazione ha almeno una superchiave di default: l insieme di tutti i suoi attributi. Una superchiave può avere attributi ridondanti 23 Quindi definiamo la chiave 2.b. Vincoli di chiave e vincoli sui valori nulli: la chiave Una chiave K di uno schema di relazione R è una superchiave di R, con la proprietà aggiuntiva che la rimozione di qualsiasi attributo A da K porta ad un insieme di attributi K che non è più una superchiave di R. Una chiave soddisfa quindi: 1. Due tuple distinte in qualsiasi stato della relazione non possono avere valori uguali per (tutti) gli attributi nella chiave [questo vale anche per le superchiavi] 2. Si tratta di una superchiave minimale, cioè una superchiave da cui non è possibile rimuovere alcun attributo mantenendo ancora valido il vincolo di univocità di 1. [questo non è richiesto alle superchiavi] 24

25 Esempio di chiave (1) In generale una superchiave formata da un solo attributo è anche chiave Una chiave formata da più attributi richiede che la proprietà di univocità sia verificata su tutti i suoi attributi 26 Chiavi candidate In generale uno schema di relazione ha più di una chiave. Ogni chiave è detta chiave candidata E comune indicare una delle chiavi candidate come la chiave primaria della relazione (i cui valori sono usati per identificare le tuple nella relazione)

27 Notazioni per uno schema di basi di dati Una base di dati in genere contiene molte relazioni, con tuple collegate tra loro S = {R 1, R 2,, R m }, schema di base di dati relazionale, è costituito da un insieme di relazioni e da un insieme di vincoli di integrità IC. DB = {r 1, r 2,, r m } di S, stato di base di dati relazionale, è un insieme di stati di relazione tali che ogni r i sia uno stato di R i e che gli stati di relazione r i soddisfino i vincoli specificati in IC. 28 Esempio di schema di base di dati

Stato di una base di dati 29 30 Stato di una base di dati [ZOOM a]

31 Stato di una base di dati [ZOOM b] 32 Attenzione ai nomi Attributi che rappresentano lo stesso concetto del mini-mondo possono avere o NON AVERE nomi uguali in relazioni diverse Inoltre attributi che rappresentano concetti diversi possono avere lo stesso nome in relazioni diverse

33 2.c. Vincoli di integrità delle entità Il vincolo di integrità delle entità stabilisce che nessuno dei valori della chiave primaria può essere nullo. Altrimenti come le distinguo? 34 2.d. Vincoli di integrità referenziale Il vincolo di integrità referenziale: è specificato tra due relazioni è usato per mantenere la consistenza fra tuple delle due relazioni Informalmente stabilisce che una tupla in una relazione che fa riferimento a un altra relazione deve far riferimento a una tupla esistente in quella relazione. Esempio: L attributo N_D di IMPIEGATO fornisce il numero del dipartimento per il quale ogni impiegato lavora; perciò il suo valore in ogni tupla di IMPIEGATO deve accordarsi con il valore di NUMERO_D di una qualche tupla nella relazione DIPARTIMENTO

2.d. Vincoli di integrità referenziale: la chiave esterna (1) Un insieme di attributi FK (foreign key) nello schema di relazione R 1, è una chiave esterna di R 1 che riferisce la relazione R 2 se soddisfa: gli attributi presenti in FK hanno gli stessi domini degli attributi di chiave primaria PK (primary key) di R 2 ; si dice che gli attributi di FK riferiscono alla relazione R 2 un valore di FK in una tupla t 1 dello stato corrente r 1 (R 1 ) o è presente come valore di PK in una qualche tupla t 2 dello stato corrente r 2 (R 2 ) o è nullo. Nel primo caso si ha t 1 [FK] = t 2 [PK] e si dice che la tupla t 1 riferisce alla tupla t 2. 35 In questa definizione: R 1 è detta relazione referenziante R 2 è detta relazione riferita si dice che sussiste il vincolo di integrità referenziale da R 1 a R 2. 2.d. Vincoli di integrità referenziale: la chiave esterna (2) In questa definizione: R 1 è detta relazione referenziante R 2 è detta relazione riferita si dice che sussiste il vincolo di integrità referenziale da R 1 a R 2. 36 In una base di dati con molte relazioni ci sono generalmente molti vincoli di integrità referenziale. I vincoli di IR nascono generalmente dalle associazioni fra le entità presenti negli schemi di relazione.

2.d. Vincoli di integrità referenziale: la chiave esterna (3) Una chiave esterna può fare riferimento alla sua stessa relazione di appartenenza I vincoli di IR possono essere rappresentati come archi orientati da ciascuna chiave esterna verso la relazione che essa riferisce. La punta della freccia punta alla chiave primaria della relazione riferita. 37 Diagramma di schema con vincoli di integrità referenziale 38

39 3. Vincoli basati sull applicazione Sono vincoli di integrità semantica che devono essere specificati nella base di dati Possono essere implementati tramite linguaggi di specifica dei vincoli oppure tramite meccanismi detti trigger e asserzioni Possono essere di due tipi: vincoli di stato (definiscono lo stato valido) vincoli di transizione (legati alla gestione dei cambiamenti della base di dati). Esempio: [stato] lo stipendio di un impiegato non dovrebbe superare lo stipendio del supervisore dell impiegato [transizione] lo stipendio di un impiegato può solo aumentare 40 Operazioni sulle relazioni Due tipi di operazioni: Operazioni di reperimento (retrieval) Operazioni di aggiornamento (update) Operazioni di reperimento: un espressione dell algebra relazionale produce una nuova relazione applicando operatori algebrici a un insieme di relazioni Operazioni di aggiornamento Inserimento Cancellazione Modifica Ogni volta che si eseguono operazioni di aggiornamento bisogna fare attenzione a non violare i vincoli di integrità specificati sullo schema della base di dati relazionale

41 Operazioni di inserimento Sono usate per inserire nuove tuple in una relazione Fornisce un elenco di valori di attributi per una nuova tupla t che deve essere inserita in una relazione R. Può violare tutti e 4 i vincoli: a. Vincoli di dominio b. Vincoli di chiave e vincoli sui valori nulli c. Vincoli di integrità delle entità d. Vincoli di integrità referenziale 42 Esempi di inserimento 1. Inserisci < Cecilia, F, Kolonsky, NULL, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, NULL, 4> in IMPIEGATO. 2. Inserisci < Alicia, J, Zelaya, 999887777, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, 987654321, 4> in IMPIEGATO. 3. Inserisci < Cecilia, F, Kolonsky, 677678989, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, 987654321, 7> in IMPIEGATO. 4. Inserisci < Cecilia, F, Kolonsky, 677678989, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, NULL, 4> in IMPIEGATO.

43 Esempi di inserimento 1. Inserisci < Cecilia, F, Kolonsky, NULL, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, NULL, 4> in IMPIEGATO. [NO, viola vincolo di integrità dell entità] 2. Inserisci < Alicia, J, Zelaya, 999887777, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, 987654321, 4> in IMPIEGATO. [NO, viola il vincolo di chiave] 3. Inserisci < Cecilia, F, Kolonsky, 677678989, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, 987654321, 7> in IMPIEGATO. [NO, viola il vincolo di integrità referenziale] 4. Inserisci < Cecilia, F, Kolonsky, 677678989, 1960-04-05, 6357 Windy Lane, Katy, TX, F, 28000, NULL, 4> in IMPIEGATO. [OK!] 44 Operazioni di cancellazione Sono usate per cancellare tuple da una relazione Deve essere specificata una condizione sugli attributi della relazione per specificare le tuple da cancellare Può violare solo il vincolo di integrità referenziale. In caso di violazioni 3 operazioni possibili: Restrict rifiuta la cancellazione Cascade tenta di far ricadere in cascata la cancellazione Set null/set default modifica i valori degli attributi referenziati

45 Esempi di cancellazione 1. Cancella la tupla di LAVORA _SU con SSN_I = 999887777 e N_P = 10. 2. Cancella la tupla di IMPIEGATO con SSN = 999887777. 3. Cancella la tupla di IMPIEGATO con SSN = 333445555. 46 Esempi di cancellazione 1. Cancella la tupla di LAVORA _SU con SSN_I = 999887777 e N_P = 10. [OK!] 2. Cancella la tupla di IMPIEGATO con SSN = 999887777. [NO, ci sono tuple in LAVORA_SU che riferiscono] 3. Cancella la tupla di IMPIEGATO con SSN = 333445555. [NO, ci sono tuple in IMPIEGATO, DIPARTIMENTO, LAVORA_SU E PERSONA_A_CARICO che riferiscono]

47 Operazioni di modifica Sono usate per cambiare i valori di uno o più attributi di tuple presenti in una relazione Deve essere specificata una condizione sugli attributi della relazione per specificare le tuple da modificare In genere la modifica di un attributo che non è né una chiave primaria né una chiave esterna non dà luogo ad alcun problema. 48 Esempi di modifica 1. Modifica a 28000 lo STIPENDIO nella tupla di IMPIEGATO con SSN = 999887777. 2. Modifica a 1 N_D per la tupla IMPIEGATO con SSN = 999887777. 3. Modifica a 7 N_D per la tupla IMPIEGATO con SSN = 999887777. 4. Modifica a 987654321 il valore di SSN per tupla di IMPIEGATO con SSN = 999887777.

49 Esempi di modifica 1. Modifica a 28000 lo STIPENDIO nella tupla di IMPIEGATO con SSN = 999887777. [OK!] 2. Modifica a 1 N_D per la tupla IMPIEGATO con SSN = 999887777. [OK!] 3. Modifica a 7 N_D per la tupla IMPIEGATO con SSN = 999887777. [NO, viola l integrità referenziale] 4. Modifica a 987654321 il valore di SSN per tupla di IMPIEGATO con SSN = 999887777. [NO, viola il vincolo di chiave primaria] 50 Esercizio

51 Esercizio Si consideri lo schema di base di dati relazionale COMPAGNIA_AEREA, che descrive una base di dati per le informazioni relative ai voli di una compagnia aerea. Ogni VOLO è identificato da un NUMERO del volo ed è composto da una o più tratte (TRATTA_VOLO) con NUMERO_TRATTA 1, 2, 3 ecc. Ogni tratta ha i suoi orari di partenza e di arrivo previsti nonché gli aeroporti interessati, e presenta tante ISTANZE_DI_TRATTA quante sono le DATE in cui il volo è programmato. 52 Esercizio Per ogni volo, sono presenti diverse TARIFFE. Per ogni istanza di tratta sono memorizzate le prenotazioni dei posti (PRENOTAZIONE_POSTI), l AEROPLANO usato su quella tratta e gli orari effettivi di partenza e arrivo, nonché gli aeroporti effettivamente utilizzati. Un AEROPLANO è identificato da un ID_AEROPLANO e possiede uno specifico TIPO_AEROPLANO. PUO _ATTERRARE collega un TIPO_AEROPLANO con l AEROPORTO su cui un aeroplano di quel tipo può atterrare. Un AEROPORTO è identificato da un CODICE_AEROPORTO.

53 Esercizio Si consideri un aggiornamento della base di dati COMPAGNIA_AEREA che permetta di inserire una prenotazione per uno specifico volo o tratta di volo in una certa data. a. Si forniscano le operazioni relative a questo aggiornamento. b. Quali tipi di vincoli è opportuno controllare? c. Quali di questi vincoli sono vincoli di chiave, di integrità dell entità e di integrità referenziale, e quali non lo sono? d. Si specifichino tutti i vincoli di integrità referenziale della Figura 3.8. 54 Esercizio a. Si forniscano le operazioni relative a questo aggiornamento. Una possibile sequenza di operazioni di aggiornamento è la seguente: INSERISCI IN PRENOTAZIONE_POSTI; MODIFICA la tupla di ISTANZA_DI_TRATTA con la condizione: impostando NUMERO_DI_POSTI_DISPONIBILI = NUMERO_DI_POSTI_DISPONIBILI 1; Queste operazioni devono essere ripetute per ogni TRATTA di volo sulla quale è eseguita la prenotazione. Si assume che la prenotazione valga per un unico posto. Per realizzare un sistema più realistico in cui sia possibile riservare più di un posto con un unica prenotazione sono necessarie operazioni più complesse.

55 Esercizio b. Quali tipi di vincoli è opportuno controllare? Dobbiamo verificare che il NUMERO_DI_POSTI_DISPONIBILI su ciascuna INSTANZA_DI_TRATTA prenotata sia maggiore di 1 prima di eseguire la prenotazione (a meno che sia consentito l overbooking) e che il NUMERO_POSTO riservato in PRENOTAZIONE_POSTI sia disponibile. 56 Esercizio c. Quali di questi vincoli sono vincoli di chiave, di integrità dell entità e di integrità referenziale, e quali non lo sono? L operazione di INSERIMENTO in PRENOTAZIONE_POSTI dovrà verificare tutti i vincoli di chiave, integrità dell entità e integrità referenziale della relazione. La verifica che il NUMERO_DI_POSTI_DISPONIBILI su ciascuna ISTANZA_DI_TRATTA prenotata sia maggiore di 1 non ricade in nessuna delle precedenti tipologie di vincolo (si tratta di un generico vincolo di integrità semantica).

57 Esercizio d. Si specifichino tutti i vincoli di integrità referenziale della Figura 3.8. Scriveremo un vincolo di integrità referenziale nella forma R.A --> S (rispettivamente, R.(X) --> T) per denotare che un attributo A (rispettivamente, un insieme di attributi X) della relazione R costituisce una chiave esterna che referenzia la chiave primaria della relazione S (rispettivamente T). TRATTA_VOLO.NUMERO_VOLO --> VOLO TRATTA_VOLO.CODICE_AEROPORTO_PARTENZA --> AEROPORTO TRATTA_VOLO. CODICE_AEROPORTO_ARRIVO --> AEROPORTO ISTANZA_DI_TRATTA.(NUMERO_VOLO, NUMERO_TRATTA) --> TRATTA_VOLO ISTANZA_DI_TRATTA.CODICE_AEROPORTO_PARTENZA --> AEROPORTO ISTANZA_DI_TRATTA. CODICE_AEROPORTO_ARRIVO --> AEROPORTO ISTANZA_DI_TRATTA.ID_AEROPLANO --> AEROPLANO TARIFFE.NUMERO_VOLO --> VOLO PUO _ATTERRARE.NOME_TIPO_AEROPLANO --> TIPO_AEROPLANO PUO _ATTERRARE.CODICE_AEROPORTO --> AEROPORTO AEROPLANO.TIPO_AEROPLANO --> TIPO_AEROPLANO PRENOTAZIONE_POSTI.(NUMERO_VOLO, NUMERO_TRATTA, DATA) --> ISTANZA_DI_TRATTA