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

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.

 
 

1. Considérons la relation R=(A,B,C,D) avec les DF suivantes :
A → B, B → C, C → D, et D → A

1.1) Déterminez l’ensemble des clés candidates de la relation R. Justifiez votre réponse en calculant la fermeture des attributs nécessaires.

| Attribut | Fermeture         | Clé candidate |
|----------|-------------------|---------------|
| A        | A⁺ = {A, B, C, D} |     ✅ Oui    |
| B        | B⁺ = {A, B, C, D} |     ✅ Oui    |
| C        | C⁺ = {A, B, C, D} |     ✅ Oui    |
| D        | D⁺ = {A, B, C, D} |     ✅ Oui    |

Ainsi, les 4 clés candidates sont: {A},{B},{C},{D}​

1.2) R est-il en 3NF? BCNF?

Rappel : Une relation est en BCNF si, pour toute DF non triviale X → Y, X est une super-clé.

| Dépendance f. | Déterminant | Super-clé ? | BCNF ? |
| ------------- | ----------- | ----------- | ------ |
| A → B         | A           |    ✅ Oui   |   ✅   |
| B → C         | B           |    ✅ Oui   |   ✅   |
| C → D         | C           |    ✅ Oui   |   ✅   |
| D → A         | D           |    ✅ Oui   |   ✅   |

Comme A, B, C et D sont tous des clés candidates, le déterminant de chaque dépendance fonctionnelle est une super-clé. Donc:

| Forme normale | Résultat |
| ------------- | -------- |
| 1NF           |  ✅ Oui  |
| 2NF           |  ✅ Oui  |
| 3NF           |  ✅ Oui  |
| BCNF          |  ✅ Oui  |

R est en 3NF et en BCNF.​

Remarque: La BCNF étant plus stricte que la 3NF, le fait que R soit en BCNF implique automatiquement que R est également en 3NF.

 
 

2. Considérons la relation suivante:
Commande(id_produit, nom_produit, id_client, nom_client, date_commande, prix_produit, montant, tva, total_brut, total_net)

Hypothèses :

  • Un id_produit identifie un seul produit, son nom, son prix et son taux de TVA.
  • Un id_client identifie un seul client et son nom.
  • La TVA peut varier d’un produit à l’autre.
  • Les commandes d’un même client passées le même jour sont regroupées. Il existe donc au maximum une commande par client et par date.
  • Le total net est calculé à partir du prix du produit et de la quantité commandée.
  • Le total brut correspond au total net augmenté de la TVA.

2.1) Déterminez les principales dépendances fonctionnelles satisfaites par la relation Commande à partir des hypothèses données.

| N°| Dépendance fonctionnelle    | Explication                                |
|---|-----------------------------| -------------------------------------------|
| 1 | id_produit → nom_produit    | Un produit possède un seul nom.
|---|-----------------------------| -------------------------------------------|
| 2 | id_produit → prix_produit   | Un produit possède un prix déterminé.
|---|-----------------------------| -------------------------------------------|   
| 3 | id_produit → tva            | Le taux de TVA dépend du produit.  
|---|-----------------------------| -------------------------------------------| 
| 4 | id_client → nom_client      | Un identifiant client correspond à un seul 
|   |                             | nom. 
|---|-----------------------------| -------------------------------------------|
| 5 | id_produit, id_client,      | Pour un produit donné, un client donné et 
|   | date_commande → montant     | une date donnée, la quantité/montant 
|   |                             | commandé est déterminé.
|---|-----------------------------| -------------------------------------------|
| 6 | prix_produit, montant →     | Le total net est calculé à partir du prix du
|   |  total_net                  | produit et du montant/quantité commandé.
|---|-----------------------------| -------------------------------------------|
| 7 | total_net, tva → total_brut | Le total brut est déterminé par le total net 
|   |                             | et la TVA.
|---|-----------------------------| -------------------------------------------|

On peut donc résumer:

id_produit → nom_produit, prix_produit, tva
id_client → nom_client
id_produit, id_client, date_commande → montant
prix_produit, montant → total_net
total_net, tva → total_brut
​​

2.2) Trouver toutes les clés candidats.

Considérons l’ensemble:

K={id_produit, id_client, date_commande}

Calculons sa fermeture:

Étape                                        | Attributs obtenus                  
-------------------------------------------- | --------------------------------
Départ                                       | id_produit,id_client,date_commande
id_produit → nom_produit, prix_produit, tva   | + nom_produit, prix_produit, tva    
id_client → nom_client                         | + nom_client                        
id_produit, id_client, date_commande → montant | + montant                           
prix_produit, montant → total_net              | + total_net                         
total_net, tva → total_brut                    | + total_brut                        

On obtient finalement:

K+={id_produit,id_client,date_commande,nom_produit,nom_client,prix_produit,montant,tva,total_net,total_brut}

Donc: {id_produit, id_client, date_commande}​ est une clé candidate.

Vérification de la minimalité:

Ensemble                               | Détermine  | Clé       |
                                       | tous les   | candidate |
                                       | attributs? | ?         |
---------------------------------------|------------|-----------|
{id_produit, id_client, date_commande} |  ✅ Oui    | ✅ Oui    |
{id_produit, id_client}                |  ❌ Non    | ❌ Non    |
{id_produit, date_commande}            |  ❌ Non    | ❌ Non    |
{id_client, date_commande}             |  ❌ Non    | ❌ Non    |

La clé candidate est: id_produit, id_client, date_commande

 
 

3. Considérons le schéma relationnel suivant :
Voiture(marque, modèle, année, couleur, concessionnaire)

Chaque tuple de la relation Voiture spécifie qu’une ou plusieurs voitures d’une marque, d’un modèle et d’une année donnés, d’une couleur donnée, sont disponibles chez un concessionnaire donné. Par exemple, le tuple

(Mercedes, Classe A, 2024, Gris, ShowCars)

Indique que des Mercedes Classe A 2024 de couleur Gris sont disponibles chez le concessionnaire ShowCars.

Pour chacun des énoncés suivants, écrivez la dépendance fonctionnelle qui traduit le mieux l’énoncé.

3.1) Le nom du modèle d’une voiture est une marque déposée par sa marque, autrement dit, deux marques différentes ne peuvent pas utiliser le même nom de modèle.

modèle -> marque

3.2) Chaque concessionnaire ne vend qu’un seul modèle de chaque marque de voiture.

concessionnaire,marque -> modèle

3.3) Si une marque, un modèle et une année de voiture sont disponibles dans une couleur particulière chez un concessionnaire donné, cette couleur est disponible chez tous les concessionnaires qui vendent la même marque, le même modèle et la même année.

marque,modèle,année -> couleur
OU
marque,modèle,année -> concessionnaire

3.4) Sur la base de vos réponses aux questions (3.1)-(3.3), déterminer toutes les clés candidates.

À partir des dépendances :

modèle → marque
concessionnaire, marque → modèle
marque, modèle, année → couleur

Les deux clés candidates sont:

{modèle, année, concessionnaire}
{marque, année, concessionnaire}

Justification :

modèle, année, concessionnaire → détermine marque, puis couleur.
marque, année, concessionnaire → détermine modèle, puis couleur.

✅ Réponse finale :

{modèle,année,concessionnaire}, {marque,année,concessionnaire}

 
 

4. Considérons les deux schémas relationnels suivants :
Schéma 1: R(A,B,C,D)
Schéma 2: R1(A,B,C), R2(B,D)

4.1) Considérons le schéma 1 et supposons que les seules dépendances fonctionnelles qui s’appliquent aux relations de ce schéma sont A → B, C → D, et toutes les dépendances qui en découlent. Le schéma 1 est-il en forme normale BCNF?

| DF    | Le déterminant est-il une super-clé ? | BCNF |
| ----- | ------------------------------------- | ---- |
| A → B | ❌ Non                                |  ❌  |
| C → D | ❌ Non                                |  ❌  |

Réponse : ❌ Non, le schéma 1 n’est pas en BCNF.

4.2) Considérez le schéma 2 et supposez que les seules dépendances fonctionnelles qui s’appliquent aux relations de ce schéma sont A → B, A → C, B → A, A → D, et toutes les dépendances qui en découlent. Le schéma 2 est-il en BCNF ?

| Relation  | DF    | Déterminant | Super-clé ? |
| --------- | ----- | ----------- | ----------- |
| R1(A,B,C) | A → B | A           |      ✅     |
| R1(A,B,C) | A → C | A           |      ✅     |
| R1(A,B,C) | B → A | B           |      ✅     |
| R2(B,D)   | A → D | —           |      —      |

Dans R1, A et B sont des clés candidates.

Dans R2(B,D), aucune DF non triviale n’est indiquée.

Réponse : ✅ Oui, le schéma 2 est en BCNF.

4.3) Supposons que nous ignorions la dépendance A → D de la partie (4.2). Le schéma 2 est-il en BCNF ?

Les dépendances restantes sont:

A → B
A → C
B → A

Dans R1, A et B sont toujours des clés candidates.

Réponse: ✅ Oui, le schéma 2 reste en BCNF.

4.4) Considérons le schéma 1 et supposons que les seules dépendances fonctionnelles qui s’appliquent aux relations de ce schéma sont A → BC, B → D, B →> CD, et toutes les dépendances qui en découlent. Le schéma 1 est-il en quatrième forme normale (4FN) ?

Non – B n’est pas une clé, donc B → C est une violation de la 4FN.

La quatrième forme normale (4FN) est un niveau de normalisation où il n’y a pas de dépendances multi valeurs non triviales autres qu’une clé candidate. Elle s’appuie sur les trois premières formes normales (1FN, 2FN et 3FN) et sur la forme normale de Boyce-Codd (BCNF). Elle indique que, en plus de satisfaire aux exigences de la BCNF, une base de données ne doit pas contenir plus d’une dépendance à valeurs multiples.

4.5) Considérez le schéma 2 et supposez que les seules dépendances fonctionnelles qui s’appliquent aux relations de ce schéma sont A → BD, D → C, A → C, B → D, et toutes les dépendances qui en découlent. Le schéma 2 est-il en 4FN?

Les dépendances sont :

A → BC
B → D
B →> CD

La dépendance multivaluée : B → CD est non triviale et B n’est pas une super-clé de R.

| DVM     | B est-il une super-clé ? | 4FN |
| ------- | ------------------------ | --- |
| B →> CD |           ❌ Non         |  ❌ |

Réponse : ❌ Non, le schéma 1 n’est pas en 4FN.

 
 

5. Considérons une relation R(A,B,C) et supposons que R contienne les quatre tuples suivants :

5.1) Spécifiez toutes les dépendances fonctionnelles complètement non triviales qui s’appliquent à cette instance de R.

|   DF   | Vérification                         | Résultat |
|--------| ------------------------------------ |----------|
| A → B  | Pour une même valeur de A, B = 1     |    ✅    |
| C → B  | Pour une même valeur de C, B = 1     |    ✅    |
| AC → B | Pour chaque combinaison (A,C), B = 1 |    ✅    |

Une DF complètement non triviale est une DF X → Y telle que X ∩ Y = ∅.

5.2) Spécifiez toutes les dépendances multivaluées (DVM) non triviales qui existent dans cette instance de R. N’incluez pas les dépendances multi-valeurs qui sont aussi des dépendances fonctionnelles.

DVM   | Vérification                                                 
----- | ------------------------------------------------------------------ | -- |
A → C | Pour chaque A, les valeurs de C peuvent varier indépendamment de B | ✅ |
C → A | Pour chaque C, les valeurs de A peuvent varier indépendamment de B | ✅ |

Ces DVM ne sont pas des dépendances fonctionnelles, car par exemple, pour A = 2, on trouve C = 6 et C = 7.

5.3) Cette instance de R est-elle en forme normale BCNF en ce qui concerne les dépendances que vous avez données dans la partie (5.1) ? Si ce n’est pas le cas, indiquez toutes les décompositions BCNF valides.

Les DF obtenues en 5.1 sont :

A → B
C → B
AC → B

| DF     | Le déterminant est-il une super-clé ? | BCNF |
| ------ | ------------------------------------- | ---- |
| A → B  |                 ❌ Non                |  ❌  |
| C → B  |                 ❌ Non                |  ❌  |
| AC → B |                 ✅ Oui                |  ✅  |

La relation R n’est donc pas en BCNF, car A et C ne sont pas des super-clés.

Décompositions BCNF valides

À partir de A → B :

R1(A,B)
R2(A,C)

À partir de C → B :

R1(A,C)
R2(B,C)

✅ Réponse finale: Les deux décompositions BCNF possibles sont :

1. R1(A,B), R2(A,C)
2. R1(A,C), R2(B,C)

 
 

6. Considérons la relation suivante :

Étudiants(id_etudiant, adresse, cours, professeur)

+-------------+-----------------------+--------------------+------------+
| id_etudiant |       adresse         |       cours        | professeur |
+-------------+-----------------------+--------------------+------------+
| 1           | 11, Avenue De Marlioz | Base de données    |  Alex      |
| 2           | 93, rue Jean Vilar    | Gestion de projets |  Ali       |
| 1           | 11, Avenue De Marlioz | Conception UML     |  Jean      |
| 5           | 10, rue des Chaligny  | Gestion de projets |  Emily     |
| 6           | 82, Rue St Ferréol    | Gestion de projets |  Emily     |
+-------------+-----------------------+--------------------+------------+

Supposons qu’il y ait exactement un professeur assistant assigné à chaque étudiant pour chaque cours.

6.1) Déterminer toutes les dépendances fonctionnelles de la relation ci-dessus.

| Dépendance fonctionnelle        | Explication                            |
| ------------------------------- | -------------------------------------- |
| id_etudiant → adresse           | Un étudiant possède une seule adresse. |
| ------------------------------- | -------------------------------------- |
| id_etudiant, cours → professeur | Pour un étudiant et un cours donnés,   |
|                                 | un seul professeur est assigné.        |
| ------------------------------- | -------------------------------------- |

6.2) Donnez un exemple de super clé et de clé candidate.

| Type          | Exemple                          | Explication                 
| ------------- | -------------------------------- | ---------------------------
| Super-clé     | {id_etudiant, cours, professeur} | Cet ensemble permet        
|               |                                  | d'identifier chaque tuple. 
| ------------- | -------------------------------- | ---------------------------
| Clé candidate | {id_etudiant, cours}             | Elle identifie chaque tuple
|               |                                  | et est minimale.           
| ------------- | -------------------------------- | ---------------------------

Remarque : l’ensemble de tous les attributs est également une super-clé, mais il est préférable de donner une super-clé non triviale pour rendre l’exercice plus intéressant.

 

Laisser un commentaire

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