Vous êtes sur la page 1sur 3

Université Oran1 M1 - TC Module : BDA 2022/2023

TD1 : Exercices de rappels

Exercice 1
Soit R1 (A, B, C, D, E, F ) une relation avec l’ensemble de dépendances suivant :

{A, B → C, A, B → D, A, B → E, A, B → F, B → C, D → E, D → F }

1. Donner l’ensemble minimal de dépendances. Quelles est la clé de R1 ?

2. Quelle est la forme normale de R1 ?

3. On décompose la relation R1 en R11 et R12 : R11 (A, B, D, E, F ) et R12 (B, C). Quelles sont
les formes normales des relations R11 et R12 ?

4. Proposer une décomposition sans perte d’information de R11 .

Exercice 2
On considère la relation R(A, B, C, D, E, F ) sur laquelle sont définies les dépendances fonctionnelles
suivantes :

A, B → C, D → C, D → E, C, E → F, E → A
Compléter les cases vides du tableau suivant :

A B C D E F
1 110 54
x 2 j 100 n 52
w 1 i 110 m
2 100 52

Exercice 3
Soit la table suivante de la relation Personne :
Personne Numero Nom Prenom Naissance
1 Bonicoli Pierre-Louis 1964
2 Grossetete Sandrine 1968
3 Renaud Stephane 1980
4 Rum Alexandra 1978
Que valent les expressions suivantes ?

1. σN umero<3∧N om̸=′ Bonicoli′ (P ersonne)

2. ΠN om,P renom (σN umero>1 (P ersonne))

3. ΠP renom (σP renom̸=′ Sandrine′ (ΠN om,P renom (P ersonne)))

1
Exercice 4
On considère les relations suivantes :

Personne(CIN, NOM, Prenom, Adresse)

Voiture(NCarteGrise, CIN, Modele)

Moto(NCarteGrise, CIN, Modele)

Ecrire en algèbre relationnelle les expressions pour :

1. Afficher les personnes qui possèdent une voiture mais pas de moto.

2. Afficher les personnes qui possèdent une voiture et une moto.

3. Afficher les personnes qui ne possèdent ni voiture ni moto.

Exercice 5
On suppose qu’une bibliothèque gère une base de données dont le schéma est le suivant (les lés
primaires des relations sont soulignées) :

Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEffetive)

Retard(Personne, Livre, DateEmprunt, PenalitéRetard)

Exprimer, lorsque cela est possible, les requêtes suivantes en algèbre relationnelle et en SQL.

1. Quelles sont les personnes ayant emprunté le livre "Recueil Examens BD" ?

2. Quelles sont les personnes n’ayant jamais rendu de livre en retard ?

3. Quelles sont les personnes ayant emprunté tous les livres (empruntés au moins une fois) ?

4. Quels sont les livres ayant été empruntés par tout le monde (i.e. tous les emprunteurs) ?

5. Quelles sont les personnes ayant toujours rendu en retard les livres qu’elles ont empruntés ?

Exercice 6
On considère le schéma relationnel suivant, modélisant une base de recettes de cuisine

• TypesIngrédients(numérotype, descriptiontype) contenant par exemple le tuple (2, viande)

• Ingrédients(numingrédient, nomingrédient, numtypeingrédient, numtypemesure) contenant


par exemple le tuple (3, bœuf, 2, 5) le numéro de type de mesure décrit l’unité de mesure
utilisée pour cet ingrédient.

• Mesures(numtypemesure, descriptionmesure) contenant par exemple le tuple (5, gramme)

• IngrédientsRecette(numrecette, numordreingrédient, numingrédient, quantité) contenant par


exemple le tuple (12, 1, 3, 500)

• Recettes(numrecette, nomrecette, numtyperecette, duréepréparation, niveaudifficulté) con-


tenant par exemple le tuple (12, bœuf Strogonoff, 1, 45, 1)

• TypeRecettes(numtyperecette, descriptiontyperecette) contenant par exemple (1, plat prin-


cipal)

2
Pour chacune des requêtes ci-dessous, donnez une écriture SQL :

1. La quantité de sucre incorporée dans la recette ’Gateau tout chocolat’.

2. Liste des ingrédients (nom) en ordre alphabétique qui ne sont utilisés dans aucune recette.

3. Le nombre de recettes par type de recettes

4. Les recettes qui ont la même durée que la recette de l’aligot

Expliquez ce que présente chacune des requêtes suivantes :

1. SELECT r.nom
FROM Recettes r, IngrédientsRecette ir, Ingrédients i
WHERE r.numRecette = ir.numRecette
AND ir.numIngrédient = i.numIngrédients
AND i.nom = ’sucre’
AND ir.quantité = (SELECT MAX(ir.quantité)
FROM Ingrédients i, IngrédientsRecette ir
WHERE i.numIngrédient = ir.numIngrédient
AND i.nom = ’sucre’)

2. SELECT COUNT(*)
FROM Recettes
WHERE numTypeRecette = ( SELECT numTypeRecette
FROM TypeRecettes
WHERE descriptionTypeRecette= "plat principal")

Pour chacune des requêtes ci-dessous, donnez l’arbre algébrique optimisé :

1. Liste des recettes contenant du bœuf et d’une durée inférieure à 30’

2. Les ingrédients utilisés dans la recette du clafoutis aux cerises

Vous aimerez peut-être aussi