Jeu de construction

[30 min]

Soit le diagramme UML ci-après décrivant des constructions composées d'éléments et faisant appel à des compétences pour leur montage.

Par exemple une "Maison de type I" contiendra :

  • 100 m² de "Brique traditionnelle" (Type de l'élément), pour un prix de 2 euros par unité (Prix/U), 12 briques par m² (U/m²) et 100g / brique (Poids/U)

  • 125 m² de "Tuile plate" (Type de l'élément), pour un prix de 4 euros par unité (Prix/U), 24 tuile par m² (U/m²) et 75g / tuile (Poids/U)

et fera appel à :

  • 500h de travail de "Maçon" (Type de compétence), pour un tarif horaire de 20€/h

  • 425h de travail de "Couvreur" (Type de compétence), pour un tarif horaire de 30€/h

  • 75h de "Chef de chantier" (Type de compétence), pour un tarif horaire de 45€/h

Modèle UML

Effectuer le passage au relationnel de ce modèle.

Construction (#Nom:String)
Élément (#Type:String, #Construction=>Construction, m²:Integer, Prix/U:Integer, U/m²:Integer, Poids/U:Integer)
Compétence (#Type:String, #Construction=>Construction, h:Integer, Prix/h:Integer)

Sachant que deux mêmes types d'élément ont toujours les mêmes caractéristiques (Prix/U, U/m², Poids/U) et que deux mêmes types de compétence ont toujours les mêmes prix (Prix/h), établir la fermeture transitive des DFE et la forme normale de ce modèle (justifier).

Donner un exemple de données redondantes.

Deux types de maison ont évidemment des quantités d'éléments (m²) et de compétences (h) différentes.

Fermeture transitive des DFE

Élément.Construction, Élément.Type → m²
Élément.Type → Prix/U
Élément.Type → U/m²
Élément.Type → Poids/U
Compétence.Construction, Compétence.Type → h
Compétence.Type → Prix/h

Forme normale

Le modèle est en 1NF, les attributs sont atomiques et les relations ont des clés.

Elle n'est pas en 2NF car des parties de clé (Élément.Type et Compétence.Type) déterminent des attributs.

Exemple de données redondantes

Maison I

Maçon

500

20

Maison II

Maçon

600

20

Normaliser le modèle en 3NF (justifier, et montrer que la transformation est sans perte).

Construction (#Nom:String)
Élément (#Type=>TypeÉlément, #Construction=>Construction, m²:Integer)
TypeÉlément (#Type:String, Prix/U:Integer, U/m²:Integer, Poids/U:Integer)
Compétence (#Type=>TypeCompétence, #Construction=>Construction, h:Integer)
TypeCompétence (#Type:String, Prix/h:Integer)

La décomposition est sans perte car :

  • Les attributs ont été préservés : JointureNaturelle(Élément,TypeÉlément) et JointureNaturelle(Compétence,TypeCompétence) nous permettent de retrouver les relations Élément et Compétence d'origine

  • Les DFE ont été préservées : la fermeture transitive du modèle décomposé est exactement la même que celle du modèle d'origine

En repartant de la forme normalisée en 3NF, rétro-concevoir un modèle UML qui aurait permis d'aboutir directement à ce schéma non redondant.

Modèle normalisé
AccueilExercices > Exercice : Jeu de construction< PrécédentSuivant >