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

Question

Effectuer le passage au relationnel de ce modèle.

Solution

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

Question

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.

Indice

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

Solution

Fermeture transitive des DFE
1
Élément.Construction, Élément.Type → m²
2
Élément.Type → Prix/U
3
Élément.Type → U/m²
4
Élément.Type → Poids/U
5
Compétence.Construction, Compétence.Type → h
6
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
Exemple de données redondantes

Maison I

Maçon

500

20

Maison II

Maçon

600

20

Question

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

Solution

1
Construction (#Nom:String)
2
Élément (#Type=>TypeÉlément, #Construction=>Construction, m²:Integer)
3
TypeÉlément (#Type:String, Prix/U:Integer, U/m²:Integer, Poids/U:Integer)
4
Compétence (#Type=>TypeCompétence, #Construction=>Construction, h:Integer)
5
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

Question

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.

Solution

Modèle normalisé