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:


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.
  1. Per ogni c,n, 
    (c,n)∈DOTTORE ⇔ n={(d,ca,c) | (d,ca,c)∈VISITA, anno(d)=anno corrente}⏐.
  2. Per ogni c,n,
    (c) ∈ GOLD ⇔ (c,n) ∈ DOTTORE, con n>500.
  3. 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].
  1. Implementare il vincolo in maniera tale che sia impedito il successo delle operazioni che porterebbero alla sua violazione.
  2. Implementare una stored procedure per l'inserimento transazionale di una visita e di un dottore (e conseguentemente di una persona).