Gestion d'une coopérative viticole

[20 minutes]

Cet exercice a été inspiré par Bases de données : objet et relationnel[1].

On considère une base "Coopérative" qui possède les caractéristiques suivantes :

  • Un vin est caractérisé par un numéro entier unique nv, un cru, une année de production et un degré.

  • Un viticulteur est caractérisé par un numéro entier unique nvt, un nom et une ville.

  • Un viticulteur produit un ou plusieurs vins et réciproquement, un vin est produit par un ou plusieurs producteurs (éventuellement aucun).

  • Les buveurs sont caractérisés par un numéro de buveur nb, un nom, prénom et une adresse (limitée à la ville pour simplifier).

  • Un buveur consomme des vins et peut passer des commandes pour acheter des vins.

Question

Lister tous les types d'objet à considérer, les attributs associés et les domaines de valeurs de ces attributs. Repérer les éventuelles clés.

Solution

  • Buveurs

    Nb:Entier (clé), Nom:Char, Ville:Char)

  • Vins

    Nv:Entier (clé), Cru:Char, Millésime:Entier(4), Degré:Décimal

  • Viticulteurs

    Nvt:Entier (clé), Nom:Char, Région:Char

Question

Lister toutes les associations à considérer et indiquer leurs cardinalités.

Solution

Entité

Association

Entité

Cardinalité

Buveur

Consommation

Vin

N:M

Viticulteur

Production

Vin

N:M

Buveur

Commande

Vin

N:M

Remarque

Concernant l'association Production, la cardinalité minimale (coté Vins) peut être aussi bien 0 ou 1 en fonction de la conception de la base : il se peut qu'il y ait des Vins importés et que l'entité Viticulteur ne concerne que les producteurs français, ou plus généralement qu'il y ait des vins pour lesquels on ne connaît pas le producteur et réciproquement des viticulteurs pour lesquels on ne connaît pas les vins produits.

En d'autres termes les cardinalités dépendent fortement des hypothèses considérées concernant la situation qu'on doit modéliser.

Question

Donner le diagramme UML de cette situation.