INTRODUCTION AUX BASES DE DONNEES Algèbre relationnelle Exercices Université Panthéon-Assas Paris 2 L2 Economie-Gestion
Base de données cinéma catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur)
Films où joue Cruise ? catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=SELECTION(acteurs, nom=′ Cruise ′) Q2=JOINTURE(Q1, joue, code_acteur=code) Q3=JOINTURE(films, Q2, Q2.référence=films.référence) Rés=PROJECTION(Q3, titre) SELECT films.titre FROM acteurs, films, joue WHERE joue.code_acteur=acteurs.code AND joue.référence=films.référence AND acteurs.nom=′ Cruise ′ PROJECTION JOINTURE SELECTION joue
Acteurs du film « Mission impossible » ? catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=SELECTION(films, titre=′ Mission impossible ′) Q2=JOINTURE(Q1,joue,Q1.référence=joue.référence) Q3=JOINTURE(Q2,acteurs, code_acteur=code) Rés=PROJECTION(Q3, nom, prénom) SELECT acteurs.nom,acteurs.prénom FROM acteurs, films, joue WHERE films.référence=joue.référence AND joue.code_acteur=acteurs.code AND films.titre=′ Mission impossible ′ PROJECTION JOINTURE SELECTION Films
Films de + de 120 mn réalisés par un réalisateur américain catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=SELECTION(films, durée>120) Q2=SELECTION(réalisateurs, nationalité=′USA′) Q3=JOINTURE(Q1,Q2, réalisateur=code) Rés=PROJECTION(Q3, titre) SELECT films.titre FROM films, réalisateurs WHERE films.réalisateur=réalisateurs.code AND films.durée>120 AND réalisateurs.nationalité=′USA′ PROJECTION JOINTURE SELECTION
Films réalisés par des américains ou de durée <95mn ? catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=SELECTION(réalisateurs, nationalité=′USA′) Q2=JOINTURE(Q1,films, code=réalisateur) Q3=SELECTION(films, durée<95) Rés=UNION(PROJECTION(Q2, titre), PROJECTION(Q3, titre)) (SELECT films.titre FROM réalisateurs, films WHERE réalisateurs.code=films.réalisateur AND réalisateurs.nationalité=′USA′) UNION (SELECT films.titre FROM films WHERE films.durée<95)
Acteurs qui sont réalisateurs catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=JOINTURE(acteurs,réalisateurs,réalisateurs.nom=acteurs.nom) Rés=PROJECTION(Q2,acteurs.nom,acteurs.prénom) SELECT acteurs.nom,acteurs.prénom FROM acteurs, réalisateurs WHERE réalisateurs.nom=acteurs.nom PROJECTION JOINTURE Q2=SELECTION(Q1,réalisateurs.prénom= acteurs.prénom) AND réalisateurs.prénom=acteurs.prénom
Nom des acteurs qui n’ont jamais joué dans un film policier catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q2=JOINTURE(Q1,films, catégorie=code) Q3=JOINTURE(Q2, joue, Q2.référence=joue.référence) Q6=PROJECTION(acteurs, code, nom,prénom) Rés=PROJECTION(Q7, nom, prénom) Q7=Q6-Q5 films Acteurs qui ont joué dans un film policier Acteurs Q1=SELECTION(catégories, intitulé=′Policier′) Q4=JOINTURE(Q3,acteurs, code=code_acteur) Q5=PROJECTION(Q4, code, nom, prénom)
Nom des réalisateurs qui ont réalisé des films policiers et d’horreur catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q2=JOINTURE(Q1,films, catégorie=code) Q3=JOINTURE(Q2, réalisateurs, réalisateur=réalisateurs.code) Q5=SELECTION(catégories, intitulé=′Horreur′) Rés=PROJECTION(Q9, nom, prénom) Q9=INTERSECTION(Q4,Q8) Réalisateurs ayant réalisé des films policiers Réalisateurs ayant réalisé des films d’horreur Q1=SELECTION(catégories, intitulé=′Policier′) Q6=JOINTURE(Q5,films, catégorie=code) Q4=PROJECTION(Q3, réalisateurs.code, nom, prénom) Q7=JOINTURE(Q6, réalisateurs, réalisateur=réalisateurs.code) Q8=PROJECTION(Q7, réalisateurs.code, nom, prénom)
Titres des films réalisés par des réalisateurs qui sont acteurs dans leur film catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=JOINTURE(films,réalisateurs, code=réalisateur) Q2=JOINTURE(Q1,acteurs,Q1.nom=acteurs.nom) Q4=JOINTURE(Q3,joue, Q3.code=code_acteur) Rés=PROJECTION(Q5, titre) Q5=SELECTION(Q4,joue.référence=Q4.référence) réalisateurs films Infos sur les films dans lesquels les réalisateurs sont acteurs mais pas automatiquement dans leur film Références des films dans lesquels ils étaient acteurs Q3=SELECTION(Q2,Q1.prénom=acteurs.prénom) acteurs
Acteurs qui jouent dans tous les films de Spielberg catégories(code,intitulé) réalisateurs(code,nom,prénom,nationalité) films(référence,titre,durée,catégorie,réalisateur) acteurs(code,nom,prénom) joue(référence,code_acteur) Q1=SELECTION(réalisateurs, nom=‘Spielberg‘) Q2=JOINTURE(Q1,films, code=réalisateur) Q3=PROJECTION(Q2, référence) Rés=PROJECTION(Q5, nom, prénom) Q4=DIVISION(joue,Q3) Q5=JOINTURE(acteurs,Q4, code=code_acteur) Références des films de Spielberg Code des acteurs jouant dans tous les films de Spielberg