TD+corrige - Bases de Donnees
TD+corrige - Bases de Donnees
TD+corrige - Bases de Donnees
www.mathet.info
www.fb.com/groups/www.mathet.info
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
***************TD 1****************
Partie A :
Soit la relation
PERSONNE
Nom Age Ville
Marc 29 Paris
Catherine 32 Lyon
Sophie 54 Paris
Claude 13 Montpellier
Serge 40 Lyon
Exercice 1. Donnez les résultas des requêtes suivantes :
Requête 1 :
Age=30(PERSONNE)
Requête 2 :
Age(PERSONNE)
Requête 3 :
Age(Nom=’Serge’(PERSONNE))
Partie B :
Soient R et S les relations suivantes : A B
a b
R
a f
c b
d e
S
B C
b c
e a
b d
g b
Où les attributs A, B, C sont définis sur les domaines des lettres de l’alphabet.
Exercice 1. Donnez le résultat des requêtes suivantes :
Requête 1 :
R S
Requête 2:
A=C(B/B’(R)S)
B,C(R S)=S
Exercice 3. Soit T(A, B) une relation où A et B prennent leurs valeurs dans le même
domaine. Supposons qu’on veuille sélectionner les seuls n-uplets <a, b> tels que <b, a>
est également un n-uplet de T.
Partie C :
Exercice 1. Soit le schéma de base de données suivant :
Partie A
Soit la relation
PERSONNE
Nom Age Ville
Marc 29 Paris
Catherine 32 Lyon
Sophie 54 Paris
Claude 13 Montpellier
Serge 40 Lyon
Requête 1 :
Age=30(PERSONNE)
Requête 2 :
Age(PERSONNE)
Solution :
29
32
54
13
40
Requête 3 :
Age (Nom=’Serge’(PERSONNE))
Solution :
40
Requête 1 :
Les personnes (nom, âge, ville) qui habitent Paris.
Requête 2 :
Les personnes (nom, âge, ville) qui ont moins de 30 ans.
Solution : Age<30(PERSONNE)
1
Requête 3 :
Les villes dans la relation PERSONNE
Solution : Ville(PERSONNE)
Requête 4 :
Les noms des personnes habitant à Paris
Solution : Nom(Ville=’Paris’(PERSONNE))
Partie B
Soient R et S les relations suivantes :
R
A B
a b
a f
c b
d e
S
B C
b c
e a
b d
g b
Où les attributs A, B, C sont définis sur les domaines des lettres de l’alphabet.
Requête 1 :
R S A B C
Solution: a b c
a b d
Requête 2 :
c b c
A=C(B/B’(R)S)
c b d
d e a
Solution :
A B’ B C
a b e a
a f e a
c b b c
d e b d
A,B(R S)=R
2
B,C(R S)=S
Solution : NON
A,B(R S)
A B
a b
c b
d E
B,C(R S)
B C
b c
b d
e a
Exercice 3. Soit T(A, B) une relation où A et B prennent leurs valeurs dans le même
domaine. Supposons qu’on veuille sélectionner les seuls n-uplets <a, b> tels que <b, a> est
également un n-uplet de T.
Solution 1 :
a. On fait une copie de T dans S(A, B) S := T
b. On renomme l’attribut A en A1 et B en B1 S :=A/A1, B/B1 (S)
c. S a maintenant pour schéma S(A1, B1)
d. Le résultat est: T B= A1A= B1 S
e.
Solution 2 : T B/A, A/B (T)
Partie C :
Exercice 1. Soit le schéma de base de données suivant :
2) listez les numéros d’étudiants dont la moyenne générale dans le programme du 1er
cycle est supérieure ou égale à 12.5 et la moyenne générale dans le programme de
2ème cycle est inférieure à 12.5.
Solution :
3
Exercice 2. Soit le schéma de base de données suivant :
2) Listez les noms des universités et emplacements, qui sont fréquentées par des
employés dont le salaire est supérieur ou égal à 1000 Euros.
4
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
***************TD 2**************
A B B C
a b b c
c b e a
d e b d
R S
Calculer :
(a) RS
(b) R-S
(c) R S (jointure naturelle)
(d) A( R )
(e) A=C(RS)
1
La première indique les bars que chaque buveur fréquente. La deuxième nous indique
les bières servies par chaque bar. La dernière indique la bière préférée par chaque
buveur. Exprimer en (i) algèbre relationnelle, (ii) calcul relationnel « tuple » et (iii)
calcul relationnel « domaine » :
a) Trouver les bars qui servent une bière que le buveur Charles aime.
b) Trouver les buveurs qui fréquentent au moins un bar qui sert une bière
qu’ils aiment.
c) Trouver les buveurs qui fréquentent uniquement les bars qui servent des
bière qu’ils aiment. (On suppose que chaque buveur aime au moins une
bière et fréquente au moins un bar).
d) Trouver les buveurs qui ne fréquentent aucun bar qui sert une bière qu’ils
aiment.
2
Correction de TD 2
Exercice 1. Soient R et S les deux relations suivantes :
A B B C
a b b c
c b e a
d e b d
R S
Calculer :
(a) RS
a b
c b
d e
b c
e a
b d
(b) R-S
a b
c b
d e
A B C
a b c
a b d
c b c
c b d
d e a
(d) A( R )
a
c
d
(e) A=C(RS)
a b e a
c b b c
d e b d
1
Ignorer les noms d’attributs dans le résultat de l’union et de la différence
2
Exercice 5. Supposons que nous disposons d’une base de données qui consiste en
les trois relations suivantes :
Fréquente(Buveur, Bar)
Sert(Bar, Bière)
Aime(Buveur, Bière)
La première indique les bars que chaque buveur fréquente. La deuxième nous indique les
bières servies par chaque bar. La dernière indique la bière préférée par chaque buveur.
Exprimer en (i) algèbre relationnelle, (ii) calcul relationnel « tuple » et (iii) calcul relationnel
« domaine » :
a) Trouver les bars qui servent une bière que le buveur Charles aime.
Bar(Sert (buveur=”Charles”Aime))
3
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
TD 3
1
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
TD 3 : Complément exercices
Voici deux relations pour modéliser les actions détenues par des personnes :
Une personne travaille pour une société qui est obligatoirement cotée en bourse
(codeEmployeur). Cette personne détient des actions de quelques sociétés identifiées par
leur code boursier. Le codeEmployeur a le même domaine que celui de codeBoursier.
Tous les attributs sont valués, c'est-à-dire qu’aucun attribut ne peut avoir un NULL.
(a) Formulez deux requêtes SQL équivalentes pour trouver les nss des personnes qui
ont des actions, mais aucune cependant de leur société-employeur.
(b) En supposant maintenant qu’une personne peut ne pas avoir d’actions, formulez
une requête SQL pour trouver celles qui détiennent des actions dont aucune de
leur société-employeur.
(c) En supposant que chaque employé ne détient pas obligatoirement des actions,
formulez une requête SQL pour trouver le nom de ceux qui détiennent des
actions de plus de cinq sociétés cotées en bourse.
1
******************TD 3**********************
4. Obtenez toutes les livraisons dont la quantité est dans l’intervalle fermé
300-750.
No_S, No_P, No_J, Quantité(Quantité > 300Quantité <750 (SPJ))
No_P, NomP, Couleur, Poids ((No_S, NomS, Statut (Ville=’’Londres’’(S))) (SPJ P))
10. Obtenez les numéros de pièces pour les pièces fournies par un fournisseur de Londres
à un projet de Londres.
11. Obtenez tous les couples de noms de villes telles qu’un fournisseur de la première ville
fournisse un projet de la seconde ville.
12. Obtenez les numéros de projet pour les projets fournis par au moins un fournisseur
n’ayant pas la même ville que le projet.
13. Obtenez tous les couples de numéros de pièces tels qu’un fournisseur fournisse les
deux pièces correspondantes.
2
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
***************TD 4 ****************
Exercice 1 :
Exercice 2 :
Supposons que nous disposons d’une base de données qui consiste en les trois relations
suivantes :
Fréquente(Buveur, Bar)
Sert(Bar, Bière)
Aime(Buveur, Bière)
La première indique les bars que chaque buveur fréquente. La deuxième nous
indique les bières servies par chaque bar. La dernière indique la bière préférée par
chaque buveur. Exprimer en SQL les requêtes suivantes :
a) Trouver les bars qui servent une bière que le buveur Charles aime.
b) Trouver les buveurs qui fréquentent au moins un bar qui sert une bière
qu’ils aiment
1
Correction de TD4
Exercice 1 :
1. Donner la liste des numéros des wagons de type « frigo » disponibles à la gare de
Tours et dont la capacité est supérieure à 10.
SELECT NO-WAGON
FROM WAGON
WHERE TYPE-WAGON = “frigo”
AND ETAT = “libre”
AND CAPACITE >= 10
2. Donner les types de wagon du train 4002.
SELECT NO-LIGNE
FROM LIGNE P
WHERE NO-LIGNE IN
SELECT NO-LIGNE
FROM LIGNE
WHERE GARE = “Tours” AND RANG < P.RANG
4. Donner la liste des trains qui partiront de Tours le 10.10.2002
SELECT LIGNE.NO-LIGNE
FROM LIGNE P TRAFIC
WHERE LIGNE.NO-LIGNE IN
SELECT NO-LIGNE
FROM LIGNE
WHERE GARE = “Tours” AND RANG < P.RANG
AND TRAFIC.NO-LIGNE = LIGNE.NO-LIGNE
AND JOUR = 10.10.2002
5. Donner les numéros de ligne tels qu’il existe un train tous les jours.
1
SELECT UNIQUE NO-LIGNE
FROM TRAFIC P
WHERE (SELECT NO-JOUR
FROM TRAFIC
WHERE NO-LIGNE = P.NO-LIGNE)
CONTAINS
(SELECT NO-JOUR
FROM TRAFIC)
6.Quelle est la gare d’arrivée de la ligne l10 ?
SELECT GARE
FROM LIGNE
WHERE RANG = (SELECT MAX (RANG)
FROM LIGNE
WHERE NO-LIGNE = 10)
AND NO-LIGNE = 10
7. Donner la liste des gares qui seront empruntées par un wagon allant d’Angers à
Béziers ?
SELECT GARE
FROM LIGNE P
WHERE LIGNE.NO-LIGNE IN
((SELECT NO-LIGNE
FROM LIGNE
WHERE P.RANG >= LIGNE.RANG AND GARE = “Angers”)
INTERSECT
(SELECT NO-LIGNE
FROM LIGNE
WHERE P.RANG <= LIGNE.RANG AND GARE = “Béziers”))
8.Donner les numéros de lignes tels qu’il existe un train les jeudi et vendredi.
2
WHERE NO-JOUR = 3
10. Donner la liste des wagons qui partiront de Tours le 10.10.2002 et dont la
gare de destination finale est Béziers.
Exercice 2 :
Supposons que nous disposons d’une base de données qui consiste en les trois relations suivantes :
Fréquente(Buveur, Bar)
Sert(Bar, Bière)
Aime(Buveur, Bière)
La première indique les bars que chaque buveur fréquente. La deuxième nous indique les bières
servies par chaque bar. La dernière indique la bière préférée par chaque buveur. Exprimer en
SQL les requêtes suivantes :
a) Trouver les bars qui servent une bière que le buveur Charles aime.
SELECT Sert.Bar
FROM Sert, Aime
WHERE Aime.Buveur=”Charles” AND Sert.Bière=Aime.Bière
b) Trouver les buveurs qui fréquentent au moins un bar qui sert une bière qu’ils
aiment.
SELECT Fréquente.Buveur
FROM Fréquente, Sert, Aime
WHERE Fréquente.Bar=Sert.Bar AND Sert.Bière=Aime.Bière
AND Fréquente.Buveur = Aime.Buveur.
3
Correction de TD5
Exercice 1 :
Soit la base STATION DE SKI de schéma:
hotel (nomh, noms, adresse,tel,nb_chambres)
station (noms,gare)
activite (type_activite,noms)
Les clés primaires sont soulignées, les clés étrangères sont en italique gras.
1) Donner les commandes SQL permettant la création des 3 tables.
NB : Pour déclarer la clé primaire, ajoutez une commande
PRIMARY KEY (liste_attributs_clé_primaire)
à la suite des autres attributs et avant de refermer la parenthèse finale.
Pour une clé étrangère, ajoutez la commande
FOREIGN KEY (liste_attributs_clé_secondaire) REFERENCES (liste_table.attributs)
On fait l’hypothèse que tous les attributs sont d’un type imaginaire TEXTE.
2) Que se passe-t-il (et expliquez pourquoi !) quand quelqu’un veut insérer…
a) dans la table station, deux tuples pour une même gare mais avec des stations différentes ?
b) dans la table station, deux tuples pour une même station mais avec des gares différentes ?
c) dans la table hotel, deux hôtels portant le même nom mais dans des stations différentes ?
d) dans la table station, deux noms identiques avec la même gare.
e) dans la table activite, deux types d’activités différentes mais dans la même station ?
f) dans la table activite, un même type d’activité mais dans deux stations différentes ?
g) dans la table activite, une activité qui existe déjà dans la station choisie ?
h) dans la table activite, un type d’activité dans une station pas encore existante dans la
table station (mais qui sera insérée lors de la requête suivante).
3) Donner les requêtes suivantes en SQL en utilisant si possible les fonctions d’agrégat
(UNION, MINUS, INTERSECT) et les fonctions de calcul (AVG( ), COUNT( ), SUM( ) plus
les GROUP BY si besoin est). (Plusieurs solutions sont possibles, proposez des choses
originales !)
SELECT [DISTINCT] (liste_attributs) | *
a) Liste des stations ayant la même gare qu’une FROM (liste_tables)
autre station. [WHERE (Conditions)]
b) Nombre d’hôtels de plus de 50 chambres dans [ORDER BY liste_attributs [ASC|DESC] ]
[GROUP BY liste_attributs]
les stations ne possédant que des hôtels de plus [HAVING (Conditions sur les functions de
de 20 chambres. calcul)]
2
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
********************TD 6*******************
Exercice 1 :
Exercice 2 :
Exercice 3 :
On considère la requête suivante :
SELECT nom, etage, solde, adresse
FROM Employe, Departement, Compte, Banque
WHERE Employe.noDep=Departement.noDep
AND Departement.noCompte=Compte.noCompte
AND Compte.noBanque=Banque.noBanque
Exercice 4 :
On considère une base de données avec les deux relations suivantes :
Soit la requête : trouver le titre du film et la date de naissance pour les actrices qui sont
apparues dans des films en 1996.
1
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
***************TD 7***************
Exercice 1 :
Soit la base STATION DE SKI de schéma:
hotel (noms,nomh,categorie,adresse,tel,nb_chambres)
station (noms,gare)
activite (type_activite,noms)
Sélection :
Projection :
Jointure :
Exercice 2 :
1. On considère les deux relations suivantes :
TRAIN(NO-TRAIN, NO-WAGON)
1
WAGON(NO-WAGON, TYPE-WAGON, POIDS-VIDE, CAPACITE,
ETAT,GARE)
Exercice 3 :
Sur la base de données suivante :
PERSONNE (NumPer, Nom, Prénom, Age)
Décrivant des personnes en donnant leur numéro, nom, prénom et age
COSTUME (NumCostume, NomCostume, Taille)
Décrivant des costumes à louer, en donnant leur numéro, leur nom, et la taille qui
peut prendre les valeurs : ’4-6’, ’8-10’, ’12-14’, ’S’, ’M’, ’L’
LOCATION (NumCostume, NumPer, DateLocation, DuréeLocation)
DateLocation est donnée sous forme jj/mm/aa
- Client(N°_téléphone, Nom_ client), qui contient des informations sur les clients.
- Plans_Appels(Plan_Id, Plan_nom), qui contient des informations sur les
différents plans d’appels offérent par la compagnie.
- Appels(De, Vers, Temps, Jour, Mois, Année, Durée, Plan_Id, Coût), qui contient
des informations sur chaque appel.
Supposons que la compagnie de téléphone s’intéresse à déterminer les plans d’appels qui
ont rapporté plus de 1 millions d’Euros au cours de l’une des années comprises entre
1990 et 1995. La requête SQL suivante peut être utilisée pour exprimer ce besoin :
2
TD7
Exercice 1
hotel (noms,nomh,categorie,adresse,tel,nb_chambres)
station (noms,gare)
activite (type_activite,noms)
Requête 2 :
nom de station (noms) et la gare de la station pour les stations ayant pour activité le
tennis.
Sélection :
Projection :
Jointure :
Exercice 2
TYPE-WAGON
TYPE-WAGON
NO-TRAIN=4002
NO-TRAIN=4002
Exercice 3
Exercice 4
Considérons une base de données contenant des informations utiles pour une compagnie de téléphone.
La base de données maintient les tables suivantes :
- Client(N°_téléphone, Nom_ client), qui contient des informations sur les clients.
- Plans_Appels(Plan_Id, Plan_nom), qui contient des informations sur les différents plans
d’appels offérent par la compagnie.
- Appels(De, Vers, Temps, Jour, Mois, Année, Durée, Plan_Id, Coût), qui contient des
informations sur chaque appel.
Supposons que la compagnie de téléphone s’intéresse à déterminer les plans d’appels qui ont rapporté
plus de 1 millions d’Euros au cours de l’une des années comprises entre 1990 et 1995. La requête SQL
suivante peut être utilisée pour exprimer ce besoin :
La compagnie téléphonique maintient également des vues matérialisées qui résument la performance
de chacun de ses plans d’appels sur des périodes choisies. En particulier, nous supposons que la vue
matérialisée suivante V1(Plan_Id, Mois, Année, Gains) est disponible :
**************TD 8**************
Partie 1 :
A partir d'un ensemble F de dépendances fonctionnelles entre les attributs d'un schéma
de relation R, on peut en déduire d'autres à partir des trois propriétés suivantes
(axiomes d'Armstrong) :
1. initialiser (X)+ à X,
2. trouver une dépendance fonctionnelle de F possédant en partie
gauche des attributs inclus dans (X)+,
3. ajouter dans (X)+ les attributs placés en partie droite de la
dépendance fonctionnelle,
4. répéter les étapes b) et c) jusqu'à ce que (X)+ n'évolue plus.
Exercice 1 :
Exercice 2:
Partie 2 :
Exercice 1 :
Supposons le schéma de relation R(A B C D E) avec l’extension :
a1 b2 c2 d3 e2
a1 b2 c2 d1 e4
a2 b3 c2 d1 e5
a2 b4 c5 d1 e5
Parmi les dépendances fonctionnelles suivantes, lesquelles ne s’appliquent par à R ?
1) ED
2) DE
3) CA
4) EB
5) EA
6) BC
7) BD
8) BA
Exercice 2:
AB
CD
CE
ABB
ACD
2
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
A partir d'un ensemble F de dépendances fonctionnelles entre les attributs d'un schéma de
relation R, on peut en déduire d'autres à partir des trois propriétés suivantes (axiomes
d'Armstrong) :
La fermeture d'un ensemble d'attributs X, notée (X)+, représente l'ensemble des attributs
de R qui peuvent être déduits de X à partir d'une famille de dépendances fonctionnelles en
appliquant les axiomes d'Armstrong. Ainsi, Y sera inclus dans (X)+ ssi X -> Y.
1. initialiser (X)+ à X,
2. trouver une dépendance fonctionnelle de F possédant en partie gauche des
attributs inclus dans (X)+,
3. ajouter dans (X)+ les attributs placés en partie droite de la dépendance
fonctionnelle,
4. répéter les étapes b) et c) jusqu'à ce que (X)+ n'évolue plus.
Exercice 1 :
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que AB -> E,
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que BG -> C,
Question : en utilisant la notion de fermeture d'un ensemble d'attributs, montrer que AB -> G.
Partie 2 :
Exercice 1 :
Supposons le schéma de relation R(A B C D E) avec l’extension :
a1 b2 c2 d3 e2
a1 b2 c2 d1 e4
a2 b3 c2 d1 e5
a2 b4 c5 d1 e5
Parmi les dépendances fonctionnelles suivantes, lesquelles ne s’appliquent par à R ?
1) ED
2) DE
3) CA
4) EB
5) EA
6) BC
7) BD
8) BA
Solution :
DE
CA
EB
BD
Exercice 2:
AB
CD
CE
ABB
ACD
A+ = {A, B}
C+ = {C, D, E}
AB+ = {A, B}
AC+ = {A, B, C, D, E}
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
**********TD 9**********
Exercice 1 :
AB
B, CD
A, CD
DE
A, CE
Exercice 2 :
3 autres règles peuvent se déduire des 3 premières règles d’Armstrong.
Tout ensemble de dépendances fonctionnelles peut être représenté sous forme canonique
i.e. où la partie droite des dépendances fonctionnelles n’est formée que d’un seul attribut
(conséquence de l’union et la décomposition).
Exercice 3 :
Les deux ensembles d’axiomes {(A1), (A2), (A3)} et {(B1), (B2), (B3)} sont équivalents, ce
qui veut dire que pour tout ensemble F de dépendances fonctionnelles, le même
ensemble de dépendances fonctionnelles peut être déduit.
Démontrez l’équivalence.
1
Correction de TD 9
Exercice 1 :
AB
B, CD
A, CD
DE
A, CE
Solution:
Exercice 2 :
3 autres règles peuvent se déduire des 3 premières règles d’Armstrong.
Tout ensemble de dépendances fonctionnelles peut être représenté sous forme canonique
i.e. où la partie droite des dépendances fonctionnelles n’est formée que d’un seul attribut
(conséquence de l’union et la décomposition).
Exercice 3
2
Université A.Mira/Béjaïa.
Département : Informatique.
Module : BDD (3ieme années).
**********TD 10**********
Calcul des Clés :
Exercice 1
Soit le schéma relationnel (A, B, C, D) avec les dépendances fonctionnelles ={AB C, B
D, BC A}. Quelles sont les clés ?
Exercice 2 :
Soit le schéma relationnel (A, B, C, D) et ={AB, B C, A D, D C}.
Montrer que A est la seule clé.
Exercice 3 :
Soit le schéma relationnel (A, B, C, D) et = {AB, B C, D B}. Trouver les clés.
Exercice 4 :
Soit le schéma relationnel
(Cours, Professeur, Horaire, Salle, Etudiant, Note) et
={C P, HS C, HP S, CE N, HE S}
Montrer que la seule clé est HE.
Exercice 5 :
Soit le schéma relationnel (A, B, C, D) et =. Quelles sont les clés ?
Troisième forme normale
Exercice 1 :
Est-ce que le schéma
(Rue, Ville, CodePostal)
={RV C, C V}
Est en 3FN ?
Définition 3FN : AXF : A est une superclé ou X appartient à une clé.
Exercice 2
Montrer que les schémas suivants ne sont pas en 3FN :
Schéma 1:
(A, B, C, D)
={AB C, B D, BC A}
Schéma 2 :
(A, B, C, D)
={AB, BC, AD, DC}
Schéma 3 :
(C, P, H, S, E, N)
={C P, HSC, HPS, CEN, HES}
Schéma 4 :
(F, A, N, P)
={FA, FNP}
Schéma 5 :
(M, A, D, R)
={MAD, MDR}
1
1
TD 10
Calcul des Clés
Exercice 1 :
Soit le schéma relationnel (A, B, C, D) avec les dépendances fonctionnelles ={AB C, B D, BC
A}. Quelles sont les clés ?
Solution :
1. B n’apparaît dans le membre droit d’aucune dépendance, donc B appartient à la clé.
2. Montrons que B n’est pas une clé : B+={B, D} U
3. Essayons de montrer si AB, BC et BD sont des clés :
Etape 1 :
AB+={A, B}{C, D}=U
En effet, C vient de AB C et D vient de B D.
Donc AB est une superclé.
Etape 2 :
BC+={B, C}{A, D}=U
En effet, A vient de BC A, D vient de B D.
Donc BC est une superclé.
Etape 3 :
BD+={B, D}{D}U
Donc BD n’est pas une superclé.
Donc, comme
(a) B doit apparaître dans toute clé
(b) B n’est pas une clé
(c) AB, BC sont des superclés
Alors AB et BC sont les deux seules clés.
Exercice 2 :
Soit le schéma relationnel (A, B, C, D) et ={AB, B C, A D, D C}.
Montrer que A est la seule clé.
Solution :
1. A appartient à toute clé parce que A n’apparaît dans aucun membre droit de dépendance.
2. A+={A, B, C, D}=U donc A est une clé
3. de 1) et du fait que tout sous ensemble V de U contenant une clé ne peut être qu’une suprclé et
non pas une clé, on en déduit que A est la seule clé.
Exercice 3 :
Soit le schéma relationnel (A, B, C, D) et = {AB, B C, D B}. Trouver les clés.
Solution :
1. A et D n’apparaissent dans aucun membre droit de dépendance et font partie de toute clé.
2. Si AD est une clé, alors c’est la seule
AD+={A, B, C, D} = U
Donc AD est la seule clé.
Exercice 4 :
Soit le schéma relationnel
(Cours, Professeur, Horaire, Salle, Etudiant, Note) et
={C P, HS C, HP S, CE N, HE S}
Montrer que la seule clé est HE.
1
Solution :
Etape 1 : H et E sont les deux attributs qui n’apparaissent dans aucun membre de droite de
dépendance.
Etape 2 :
HE1={H,E}{S}={H, E, S}
S vient de HES.
HE2={H, E, S}{C}={H, E, S, C}
C vient de HS C.
HE3={H, E, S, C}{P, N}
P vient de C P, N, vient de CE N.
HE+=HE3=U
Donc HE est une clé – de 1) c’est la seule clé.
Exercice 5 :
Soit le schéma relationnel (A, B, C, D) et =. Quelles sont les clés ?
Solution :
Etant donné qu’il n’y a pas de dépendances fonctionnelles, aucun attribut dans l’univers n’apparaît du
côté droit d’une dépendance fonctionnelle. Donc la seule clé est composée de tous les attributs dans R.
Exercice 1 :
Est-ce que le schéma
(Rue, Ville, CodePostal)
={RV C, C V}
Est en 3FN ?
Définition 3FN : AXF : A est une superclé ou X appartient à une clé.
Solution :
1. Les clés sont RV et CR.
2. Montrons que pour toute dépendance de F, AX, soit A est une superclé, soit X appartient à
une clé :
RV C : RV est une clé.
C V : V appartient à la clé RV.
Donc est en 3FN. Donc il n’est pas nécessaire de décomposer . Remarquez toutefois que certaines
redondances ne sont pas éliminées dans une relation 3FN :
Exercice 2 :
Montrer que les schémas suivants ne sont pas en 3FN :
Schéma 1:
(A, B, C, D)
={AB C, B D, BC A}
2
Solution :
Clés: AB et BC (voir exercice plus haut). Dans la dépendance BD, B n’est pas une superclé et D
n’appartient à aucune clé. Donc le schéma n’est pas en 3FN.
Schéma 2 :
(A, B, C, D)
={AB, BC, AD, DC}
Solution :
Clé: A (voir exercice plus haut). Dans la dépendance BC, B n’est pas une superclé et C n’appartient
pas à une clé (de même pour la dépendance DC). Donc le schéma n’est pas en 3FN.
Schéma 3 :
(C, P, H, S, E, N)
={C P, HSC, HPS, CEN, HES}
Solution :
Aucune dépendance sauf la dernière satisfait les critères de 3FN. Donc ce schéma n’est pas en 3FN.
Schéma 4 :
(F, A, N, P)
={FA, FNP}
Solution :
FN est la seule clé. Dans la dépendance FA, F n’est pas une superclé et A n’appartient pas à une clé.
Schéma 5 :
(M, A, D, R)
={MAD, MDR}
Solution :
MA est seule clé. Dans la dépendance MDR, MD n’est pas une superclé et R n’appartient pas à la clé