Film concret

Soit le schéma relationnel suivant :

1
Film (#isan:char(33), titre:varchar(25), entrees:integer, nomReal=>Realisateur(nom), prenomReal=>Realisateur(prenom))
2
Realisateur (#nom:varchar(25), #prenom:varchar(25), ddn:date)

Soit la requête suivante portant sur ce schéma implémenté sous PostgreSQL :

1
SELECT f.titre AS film, r.ddn AS real
2
FROM Film f, Realisateur r
3
WHERE f.nomReal=r.nom AND f.prenomReal=r.prenom

Question

Proposer une optimisation de cette requête sous la forme de la vue matérialisée vTopFilms.

Solution

1
-- Materialized view creation
2
CREATE TABLE vTopFilms (
3
film varchar(25), 
4
real varchar(25)
5
);
6
7
-- Materialized view initialization
8
INSERT INTO vTopFilms
9
SELECT f.titre, r.ddn
10
FROM Film f, Realisateur r
11
WHERE f.nomReal=r.nom AND f.prenomReal=r.prenom ;