Corso di Laurea in Ingegneria Informatica -
Università di Roma "La Sapienza"
Corso di Progetto di Applicazioni Software - A.A. 2010/2011
Esercitazione 3:
Approccio procedurale alla implementazione dei vincoli di
integrità
Obiettivi dell'esercitazione:
- Implementare vincoli semplici e ciclici con
approccio procedurale.
L'esercitazione parte dalla base di dati
creata
nell'esercitazione 2.
Esercizio 1
Obiettivo: definire la
politica di reazione alla violazione di vincoli di foreign key
Passare in rassegna tutti i vincoli di foreign key
definiti nello schema ed impostare la politica di reazione
più ragionevole per ogni operazione critica.
Esercizio 2
Obiettivo: implementare
vincoli semplici
Implementare i seguenti vincoli, in maniera tale che per
ogni operazione critica sia
rispettata la politica di reazione alla violazione che
più ragionevole.
- Per ogni c,n,
(c,n)∈DOTTORE ⇔ n={(d,ca,c) |
(d,ca,c)∈VISITA, anno(d)=anno corrente}⏐.
- Per ogni c,n,
(c) ∈ GOLD ⇔ (c,n) ∈ DOTTORE, con
n>500.
- Per ogni d,ca,cf,cf’,
(d,ca,cf) ∈VISITA e (ca,cf’)
∈PAZIENTE ⇒ cf≠cf’.
La soluzione relativa al vincolo 1 è disponibile ai link: Vincolo1.pdf e Vincolo1.sql.
Esercizio 3
Obiettivo: Implementare vincoli di inclusione ciclici
Nello schema è presente il vincolo di inclusione
PAZIENTE[codice_assistito]⊆VISITA[codice_assistito] che forma
un
ciclo con il vincolo di foreign key
VISITA[codice_assistito]⊆PAZIENTE[codice_assistito].
- Implementare il vincolo in maniera tale che sia impedito il
successo delle operazioni che porterebbero alla sua violazione.
- Implementare una stored procedure per l'inserimento
transazionale di una visita e di un dottore (e
conseguentemente di
una persona).