Corso di Laurea in Ingegneria Informatica - Università di Roma "La Sapienza"

Corso di Progetto di Applicazioni Software - A.A. 2008/2009

Esercitazione 3


Obiettivi dell'esercitazione:


L'esercitazione parte dallo schema logico ottenuto nell'esercitazione 2.



Esercizio 1 

Obiettivo: definire stored procedures e triggers

Risolvere i punti 1,2,3 dell'obiettivo 2.1 dell'esercitazione 2.
Per farlo, si usi il trucco di usare una stored procedure che lancia sempre un'eccezione quando viene invocata, e.g.:

CREATE PROCEDURE eccezione ()
BEGIN DECLARE c1 VARCHAR(14);
DECLARE crs CURSOR FOR
(SELECT *
FROM mysql.user
WHERE 0=1);
OPEN crs;
FETCH crs INTO c1;
END


Esercizio 2

Obiettivo: gestione dei vincoli di foreign key ciclici con transazioni

Nello schema sono presenti diversi vincoli di foreign key ed inclusione ciclici. In presenza di vincoli ciclici, se proviamo a popolare lo schema, l'inserimento viene bloccato. Le coppie di vincoli ciclici sono le seguenti:
  1. (a) studente[matricola] ⊆ pianodistudio[studente], (b) pianodistudio[studente] ⊆ studente[matricola]
  2. (a) relazionefinale[studente] ⊆ argomento[relazione], (b) argomento[relazione] ⊆ relazionefinale[studente]
Quesito 1: Risolvere il problema di cui sopra adottando due soluzioni diverse.
Quesito 2: Interrogarsi sulla politica di cancellazione/aggiornamento relative ai vincoli di foreign key.

Le soluzioni degli esercizi saranno disponibili fra una settimana sul sito web del corso.