Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TD 5

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Bases de données

L2 Maths-Info 2023-2024

TD 5 – Algèbre relationnelle et SQL

x Exercice 1 : Échauffement
On considère les relations R(A,B,C), S(C,D), T(D,E), U(A,B) et W(A,B,C)
1. Dites si chacune des expressions suivantes est autorisée :

(a) R ∪ T (g) T ∪ U (m) πA,B W (s) R ⋊


⋉S
(b) R ∪ W (h) T − W (n) πC,D W (t) R ⋊
⋉B=D T
(c) R ∪ R (i) R − W (o) σA R (u) T ⋊
⋉E=A U
(d) R ∩ T (j) W − R (p) σA=7 W (v) T ⋊
⋉E=B U
(e) R ∩ W (k) R − R (q) σA=B W (w) R ⋊
⋉B<D T
(f) S ∩ S (l) πA R (r) R × T (x) W ÷ U

2. Pour chaque expression bien formée, calculer son résultat pour l’instance suivante :
S
R W
C D T
A B C A B C U
6 1 D E
1 2 3 7 8 9 A B
1 0 2 4
4 5 6 1 2 3 7 8
3 9 6 8
7 0 5 7 8 1
6 5
3. Écrire les expressions ci-dessous sous forme d’arbre et inversement.

(a) πA,C (R ∪ σB=2 W ) (c) (πD S ⋊


⋉ σD̸=E T ) ⋊
⋉R
(b) (d)

⋉ ∩


⋉ T πC πC

R σD<6 R ⋊

S S T

1
x Exercice 2 : Résidences royales. On considère le schéma suivant :

rois(numR, nomRoi, dateNais)


chateaux(numC, nomC, siecle)
resider(numR, numC, anDebut, anFin)
Les clés étrangères sont :
numR dans resider qui fait référence à numR dans rois et
numC dans resider qui fait référence à numC dans chateaux

Donnez une requête équivalente en SQL, en algèbre relationnelle et en langage naturel


des requêtes suivantes :
1. πdateNais (σ nomRoi=’Louis XVI’ (rois))
2. SELECT siecle FROM chateaux WHERE nomC='Chambord';
3. Les numéros des rois qui ont résidé dans le château numéro 5.
4. Les numéros des rois qui ont résidé dans le château de Chambord (donnez deux
requêtes d’algèbre relationnelle équivalentes).
Chaque expression d’algèbre relationnelle correspond à un plan d’excéution de la
requête correspondante. Pour la question 4, discutez l’efficacité des plans d’exécutions
correspondant aux deux expressions proposées.

x Exercice 3 : Soirées costumées. On considère le schéma suivant :

personne(surnom, nom, prenom, age, taille)


soiree(idS, lieu, date, prix, organisateur, nbmax)
participe(idS, surnom, avatar)
FK : organisateur dans soiree et surnom dans participe font référence à
surnom dans personne.
FK : idS dans participe fait référence à idS dans soiree.

Donnez des requêtes d’algèbre relationnelle pour calculer les informations suivantes :
1. Les villes où sont organisées des soirées pouvant accueillir au moins 500 personnes.
2. La liste des prénoms des personnes déguisées en Père Noël dans une soirée à Paris.
3. Les organisateurs de soirées de moins de 18 ans.
4. La liste des personnes qui ont déjà porté un déguisement de princesse Leia et un
déguisement de citrouille.
5. La liste des personnes qui ne se sont jamais déguisées en princesse Leia.
6. Les déguisements que ‘Alice72’ est la seule à avoir portés.
7. Les personnes qui ont porté au moins une fois chaque déguisement.
8. (⋆) On veut suggérer automatiquement aux utilisateurs les déguisements qu’ils n’ont
pas encore essayés. Autrement dit, on veut calculer les paires (surnom, avatar)
telles que surnom ne s’est jamais déguisé en avatar.

2
x Exercice 4 : Compagnie.
On considère le schéma relationnel suivant décrivant la base de données d’une entreprise.

Employe(mat, prenom, nom, date_naiss, adresse, sexe, salaire,


num_dep, mat_sup)
Departement(num_dep, nom_dep, mat_direct, date_debut)
Projet(num_proj, nom_proj, site_proj, num_dep)
Dependre(mat, nom, sexe, date_naiss, parent)
Site_departement(num_dep, site)
Travailler(mat, num_proj, heures)
Les clés étrangères sont :
• num_projet dans Travailler fait référence à num_projet dans Projet ;
• num_dep dans Employee, Projet et Site_departement font référence à num_dep
dans Departement ;
• mat dans Dépendre et Travailler, mat_sup dans Employee et mat_direct dans
Departement font référence à mat dans Employee.

Quelques précisions :
— Dans Departement, mat_direct est le numéro de matricule de son directeur.
— Dans Employe, num_dep représente le numéro du département auquel l’employé
est affecté et mat_sup est le numéro de matricule de son supérieur (qui n’est pas
pas forcément le directeur de département).
— La complémentaire santé d’un employé peut aussi couvrir les personnes de sa
famille ou à sa charge. La relation Dependre sert à recenser les personnes dépendant
d’un employé. L’employé est désigné par l’attribut mat et une personne à sa charge
est identifiée par son nom et on connait son sexe, sa date de naissance, et son lien
avec l’employé (dans parent).
Dans chacun des cas suivants, écrire les requêtes d’algèbre relationnelle permettant d’ex-
traire l’information demandée. Pour des questions de lisibilité, n’hésitez pas à décomposer
vos expressions.
1. Donner le nom, le prénom et l’adresse des employés qui travaillent dans le départe-
ment “Recherche”.
2. Pour chaque projet localisé à “Tours”, fournir le numéro du projet, le nom du
département dans lequel le projet a lieu et les renseignements (nom, prénom, adresse
et date de naissance) du directeur de ce département.
3. Fournir une liste des numéros de projets qui emploient une personne dont le nom
de famille est “Dupont”.
4. Fournir le nom et le prénom des employés du département numéro 5 qui ont
travaillés plus de 10 heures sur le projet “ProduitX”.
5. Fournir le nom et le prénom des responsables de département qui ont au moins
une personne à leur charge.
6. Fournir le nom et le prénom des employés qui n’ont personne à leur charge.
7. Trouver le nom et le prénom des employés qui travaillent sur tous les projets du
département numéro 5.

Vous aimerez peut-être aussi