Exercices Corrigés Dépendances fonctionnelles(Forme Normale) – Partie 3

La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec les dépendances fonctionnelles et normalisation des bases de données. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur les Dépendances fonctionnelles et Normalisation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!

Vous pouvez lire notre tutoriel sur les dépendances fonctionnelles et normalisation des bases de données avant de résoudre les exercices suivants.

 
 

Rappel:

Vous savez que la dépendance fonctionnelle A -> B signifie que B dépend de A, c’est-à-dire qu’à partir de la valeur de A, nous pouvons trouver la valeur de B dans la relation.

Donc, pour prouver que A -> B est valide dans une relation, l’une des conditions suivantes doit être vraie :

  • Condition1 : toutes les valeurs de A doivent être uniques.
  • Condition2 : toutes les valeurs de B doivent être identiques.
  • Condition3 : Si deux ou plusieurs tuples de la relation ont la même valeur pour l’attribut A, alors il doit également y avoir la même valeur pour l’attribut B.

 
 

1. Voici une instance de R (A, B, C). Choisir les dépendances fonctionnelles qui peuvent s’appliquer à R.


(1) Ne satisfait à aucune des trois conditions.
(2) Satisfait l’une des conditions ci-dessus.
(3) Satisfait l’une des conditions ci-dessus.
(4) Satisfait l’une des conditions ci-dessus.
(5) Ne satisfait à aucune des trois conditions.
(6) Ne satisfait à aucune des trois conditions.
(7) Satisfait l’une des conditions ci-dessus.
(8) Ne satisfait à aucune des trois conditions.
(9) Satisfait l’une des conditions ci-dessus.
 
 

2. Considérons la relation R = (A, B, C, D) avec les dépendances fonctionnelles suivantes :
(DF1) A -> B
(DF2) C -> D

2.1) Déterminer la ou les clés candidates de R.

Il n’y a qu’une seule clé candidate : {A, C}.
 
2.2) Choisissez l’une des clés candidates que vous avez spécifiées dans la partie 2.1 et prouvez qu’il s’agit bien d’une clé candidate. Vous pouvez utiliser les axiomes d’Armstrong, les règles d’Union et de Décomposition dans votre preuve.

Preuve que AC est une super-clé :

1. A C -> B D     (règle d'union sur DF1, DF2)
2. A C -> A B C D (Augmentation sur (1))

Preuve que AC est une clé candidate :

  • C seul n’est pas une super-clé car il ne détermine pas A.
  • De même, A seul n’est pas une super-clé car il ne détermine pas C.
 
2.3) Déterminez la forme normale maximale dans laquelle se trouve R. Expliquez votre réponse. (Par exemple, si vous pensez que R est en 2FN, vous devez expliquer pourquoi il est en 2FN).

  • La relation est en 1FN.
  • Elle n’est pas en 2FN en raison des dépendances partielles (par exemple, DF1, DF2).
 
2.4) Décomposez R , si nécessaire, de sorte que toutes les relations résultantes soient dans BCNF. Montrez que chacune de vos relations (décomposées) est bien dans BCNF.

  1. Décomposer en S = (A, B) et T = (A, C, D). S est en BCNF parce que la seule clé candidate A est aussi le seul déterminant fonctionnel applicable à S.
  2. Décomposez ensuite T en U = (C, D) et V = (A, C).
  3. U est en BCNF car la seule clé candidate C est aussi le seul déterminant fonctionnel applicable à U. V est en BCNF car il n’y a pas de dépendance fonctionnelle non triviale applicable à V.
 
 

3. Parmi les règles suivantes concernant les dépendances fonctionnelles, quelles sont celles qui sont correctes et quelles sont celles qui sont incorrectes? Pour les règles incorrectes, donnez l’exemple de relation le plus simple que vous puissiez trouver où la règle ne s’applique pas.
1) Si A -> B et BC -> D, alors AC -> D
2) Si AB -> C, alors A -> C
3) Si A -> B1,...,Bn et C1,...,Cm -> D et {C1,...,Cm} est un sous-ensemble de {B1,...,Bn}, alors A -> D
4) Si A -> C et B -> C et ABC -> D, alors A -> D
1) est correct.
2) est incorrect sachant que R(A,B,C) avec R={(1,2,3),(1,4,5)}.
3) est correct.
4) est incorrect sachant que R(A,B,C,D) avec R={(1,2,3,4),(1,5,3,6)}.
 
 

4. Considérons une relation R(A,B,C,D,F) avec les dépendances fonctionnelles suivantes :
A -> B
CD -> F
F -> A
B -> D

Spécifier toutes les clés minimales pour R.

Les clés minimales pour la relation R sont: AC, BC, CD, CF.
 
 

5. Considérons l’instance de relation suivant :

5.1) On peut constater que B → A semble s’appliquer à l’instance donnée. Vérifiez si toutes les dépendances suivantes s’appliquent à l’instance :

1) A -> B
2) A -> C
3) B -> C
4) C -> A
5) C -> B
1) A -> B    Non, car A = Bob.
2) A -> C    Non, car A = Alex.
3) B -> C    Non, car B = 2.
4) C -> A    Non, car C = ADA.
5) C -> B    Non, car C = ADA.
 

5.2) Déterminez le nombre minimal de tuples qui peuvent être ajoutés à l’instance ci-dessus pour invalider B → A. Justifiez votre réponse en montrant un ou plusieurs exemples de ces tuples.

Il faut deux tuples pour invalider une dépendance fonctionnelle. Ainsi, le nombre minimum de tuples à ajouter à l’instance est 1.

Nous pouvons par exemple ajouter le tuple (Emily, 2, ADA) à l’instance.

 
 

6. Considérons une relation R(A,B,C,D,E,F,G,H) avec les dépendances fonctionnelles suivantes :
1) A -> BCD
2) AD -> E
3) EFG -> H
4) F -> GH

6.1) Sur la base de ces dépendances fonctionnelles, il existe une clé minimale pour R. Quelle est-elle ?

La clé minimale pour R est AF.
 

6.2) L’une des quatre dépendances fonctionnelles peut être supprimée sans modifier la clé. Laquelle ?

La dépendance fonctionnelle qu’on peut supprimer sans modifier la clé minimale est EFG → H.
 
 

7. Considérons une relation R(A,B,C,D,E,F) avec les dépendances fonctionnelles suivantes :
1) A -> C
2) DE -> F
3) B -> D

7.1) Sur la base de ces dépendances fonctionnelles, il existe une clé minimale pour R. Quelle est-elle ?

La clé minimale pour R est ABE.
 

7.2) Ajoutez à l’ensemble des dépendances fonctionnelles ci-dessus la dépendance A → B. Supposons maintenant que nous voulions que A soit une clé. Citez une dépendance fonctionnelle supplémentaire qui, si elle est ajoutée à l’ensemble, fait de A une clé. Comme exigence supplémentaire, la nouvelle dépendance fonctionnelle ne doit avoir qu’un seul attribut sur le côté gauche et qu’un seul attribut sur le côté droit.

Les dépendances fonctionnelles suivantes font de A une clé A → E (ou B → E ou C → E ou D → E).
 
 

8. Considérons une relation R(A,B,C,D). Supposons que la dépendance fonctionnelle BC → D existe dans R. Créez une instance de R qui viole cette DF.

Pour violer cette DF, nous avons besoin de deux tuples ayant la même valeur pour B et C, mais des valeurs différentes pour D.

 
 

9. Les ensembles A → BC et A → B, A → C sont-ils équivalents? Si oui, expliquez pourquoi. Si non, construisez une instance de R qui satisfait l’un des ensembles de DF mais pas le deuxième.

Elles sont équivalentes – il n’existe pas d’instance de la relation qui satisfait l’une mais pas l’autre. Cela peut être prouvé, et maintenant que vous connaissez le test de fermeture, la preuve est très concise :

  • Supposons que A → BC.
    • Sous cette hypothèse, A+=ABC.
    • Donc A → B, et A → C.
  • Supposez que A → B, et A → C.
    • Sous cette hypothèse, A+=ABC.
    • Donc A → BC.

Par conséquent, chaque ensemble de DF découle de l’autre. Ils sont équivalents.

 
 

10. Les ensembles AB → C et A → B, B → C sont-ils équivalents? Si oui, expliquez pourquoi. Si non, construisez une instance de R qui satisfait l’un des ensembles de DF mais pas le deuxième.

Ils ne sont pas équivalents, comme le montre l’exemple suivant. Elle satisfait à AB → C mais pas à A → C, B → C :

 
 

11. Les ensembles AB → C et A → B, A → C sont-ils équivalents? Si oui, expliquez pourquoi. Si non, construisez une instance de R qui satisfait l’un des ensembles de DF mais pas le deuxième.

Ils ne sont pas équivalents, comme le montre l’exemple suivant. Elle satisfait à AB → C mais pas à A → B, A → C :

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *