1 Introduction
2 Les associations particulières du MCD
3 Les entités particulières
4 Généralisation, spécialisation
5 Les contraintes sur les associations
6. Résumé des contraintes
>>> Retour page précédente

1 Introduction

Grâce au graphe des DF il est possible de construire un MCD sûr à 90%.
Les autres 10% sont constitués de réflexions sur l'existence d'associations non fonctionnelles (non hiérarchiques) et non porteuses de propriété et de questions comme :
  • Cette donnée est-elle codifiable, doit-elle être codifiée,
  • Cette association ternaire est elle juste?
  • Les associations ayant la même collection d'entité ont-elle le même ensemble d'occurrences ?
  • La date participe-t-elle à la clé ?
Il existe cependant des cas où le GDF donne lieu à des entités ou associations bizarres ...

Retour index
2 Les associations particulières du MCD

2.1 Les associations ternaires (et n-aires)

Lorsque le cas se présente, il faut se poser des questions sur la validité de l'association et sur les liens avec les entités.

Pour cela, prendre toutes les entités sauf une et se poser la question :

Connaissant une occurrence définie de chaque entité, combien a-t-on d'occurrences de l'entité testée ?
  • Une seule : l'association n'est pas bonne, réviser le schéma
  • Plusieurs : passer à une autre entité
Jusqu'à avoir analysé toutes les entités ou avoir trouvé une erreur.

2.2 Les associations réflexives

Une association réflexive est une association entre une entité et … elle même.
Exemple :
Une personne est enfant de plusieurs personnes, sauf les premiers de la liste.
Une personne peut être parent de plusieurs enfants.

Dans ce cas, ne pas hésiter à préciser le rôle de l'entité pour chaque "patte" de l'association.

2.3 Le temps

Il y a deux cas :
  • La date est la cible d'une dépendance fonctionnelle directe :
    La bouteille de plongée doit être révisée à telle date -> n°bouteille -> dateRév
  • La date devient une propriété
    La date est un élément de mesure du temps dans une association non fonctionnelle.
Exemples :
Le fournisseur livre tel article, en telle quantité à telle date
(numFou, codeArt, date) --> qtéLivrée
=> Association non fonctionnelle, porteuse d'une propriété

Le plongeur emprunte telle bouteille à telle date, la bouteille peut être empruntée à d'autres dates, le plongeur peut emprunter à d'autres dates, à une date, un plongeur peut emprunter plusieurs bouteilles, …
=> Association non fonctionnelle non porteuse (noPlo, noBout, dateEmp) non visible dans le graphe des DF

L'appartement est disponible à telle semaine :
=> Association non fonctionnelle et non porteuse entre appartement et semaine, l'identifiant de la semaine est son numéro si on ne considère que l'année en cours, mais sur plusieurs années, l'identifiant sera la date de début de la semaine.

Truc : si la cardinalité entre l'entité et l'association avec la date est 1,1, il est fort probable que la date soit une propriété de l'entité.
C'est quasiment sûr si l'entité date n'a aucune propriété (hors identifiant qui est une date).

Si la date fait partie de la clé de l'association non fonctionnelle, non hiérarchique, la date doit être représentée sous forme d'entité
(c'est le cas pour l'association emprunter de l'exemple club de plongée vu plus loin).

Retour index
3 Les entités particulières

3.1 L'agrégation

L'agrégat, aussi appelé pseudo-entité, est un groupe d'entités qui est associé avec une autre entité.
On le repère par la présence d'une DF d'un attribut source vers plusieurs attributs (au moins deux, source de la DF) indissociables.
Exemple :
Une société de location nautique dispose de voiliers à louer. Chaque voilier n'est disponible que certaines semaines qui sont donc notées sur un calendrier.
Les clients effectuent une réservation, qui couvre une ou plusieurs semaines disponible pour un voilier donné, et pour laquelle on note le montant des arrhes versées.
Le GDF pourrait être le suivant :
Et son MCD :
Mais les erreurs seraient :
  • deux résa peuvent être mise sur le même couple (voilier,semaine) ou sur un couple non disponible
  • si 'Réserver' est une association ternaire avec semaine, on ne peut pas louer plusieurs semaines, la cardinalité 1,1 serait fausse (une asso ternaire avec une card. 1,1 est sûrement faux) et si on a 1,n alors on peut louer plusieurs bateaux différents (ce n'est pas le but ici)
  • si 'Disponible' est ternaire, ça ne convient pas car le prix de location ne dépend que de voilier et semaine.
Il faut utiliser ici un agrégat ou pseudo-entité, car une résa porte sur une association et sa collection. A noter qu'une disponibilité peut être soit réservée, soit libre.
numResa -> nomVoilier, arrhes, (nomVoilier + numSemaine)
Le prix dépend du voilier et de la semaine, le client réserve le couple voilier et semaine disponible.
On pourra nommer l'agrégat. Le formalisme utilisé ci-dessus n'est pas le seul.

3.2 Entités dépendantes ou entité faibles

Une entité faible est une entité dont les occurrences ne peuvent exister que si les occurrences d'une autre entité existent (contrainte d'identification).
Exemple :
immeuble et appartement : un appartement a un n° dans l'immeuble, si l'immeuble n'existe pas, l'appartement non plus.
L'identifiant de cette entité faible est dit identifiant relatif et nécessite la concaténation de celui de l'entité maîtresse.
L'appartement aura comme identifiant le n° de l'immeuble + celui de l'appartement dans l'immeuble dans le schéma relationnel.
Modélisation :

Remarquez la cardinalité : 1,1 et entre parenthèses.

Retour index
4 Généralisation, spécialisation

4.1 Introduction

Rappel important : les occurrences d'entité se caractérisent toutes par un ensemble de propriétés communes !
Cependant, il arrive des cas où les occurrences se distinguent par :
  • des propriétés utiles aux unes mais pas aux autres,
  • des associations spécifiques aux unes mais pas aux autres.
    On décompose l'entité en deux "sous-entités" en plaçant :
  • les propriétés communes dans une entité générale ou générique,
  • les propriétés spécifiques aux sous-ensembles dans des entités spécialisées ou spécifiques,
  • en reliant les entités spécifiques à l'entité générique par des dépendances fonctionnelles fortes (1,1-*,n)
    Les entités spécifique héritent de l'identifiant de l'entité générique (et de ses propriétés).
    C'est une association de type hiérarchique de généralisation/spécialisation.
    Exemple :
    Dans une agence de location, les propriétaires et les locataires sont des tiers (=personnes, un locataire peut être propriétaire et un proprio, locataire).
    Mais ils disposent d'informations différentes :
    Des appart. Appartiennent aux proprio, les locataires effectuent des résa.
    Les propriétaires sont payés, on mémorise le n° de compte en banque, des locataires, on retiendra le nombre d'enfants pour affiner l'offre.
    Le schéma sera le suivant :

    De même pour le club de plongée :

    Le matériel est emprunté, le plomb est un matériel spécialisé, emprunté en quantité.
    C'est par traitement (recherche sur emprunter1) que l'on constate si le matériel est dispo ou non, le matériel non dispo est celui qui est emprunté et qui n'est pas du plomb (sauf si qtéDispo=0).

    4.2 Les contraintes de spécialisation/généralisation

    Les contraintes sont issues des règles de gestion observées.
    (Ceci n'est valable que pour les entités, dans le cadre d'une spécialisation, d'un héritage)
    Dans l'ensemble des occurrences d'une entité générale, il y a deux critères croisés :
  • La couverture : les occurrences appartiennent toutes à une entité spécifique ou il y en a qui n'appartiennent pas aux entités spécifiques et se suffisent des propriétés et associations de l'entité générique.
  • Les intersections des ensembles des entités spécifiques : les occurrences appartiennent à une et une seule entité spécifique ou elles peuvent répondre à plusieurs spécificités.
    Analysons cela sous forme de tableau :
      Couverture
    Aucun élément n'est hors d'une sous entité
    Non couverture
    Il y a des éléments hors des sous entités
    Disjonction
    Il n'y a pas d'intersection
    + Partition (=exclusion+Totalité)
    Tous les éléments appartiennent à une entité spécialisée il n'y a pas d'éléments hors d'une entité spécialisée.
    (elle est aussi notée XT)
    X Exclusion
    Les éléments d'une entité spécialisée qui lui appartiennent, n'appartiennent qu'à elle et à aucune autre. Il y a des éléments qui n'appartiennent à aucune entité spécialisée.
    Non disjonction
    Il existe une intersection
    T Totalité
    Les éléments appartiennent toujours au moins à une entité spécialisée
    Pas de contrainte
    Il existe des éléments qui n'appartiennent à aucune sous entité et des éléments qui appartiennent à plusieurs sous entités.

    4.3 Applications

    Classez les énoncés suivants selon le type de spécialisation.
    1. Les fournisseurs et clients sont des tiers mais un client ne peut être fournisseur.
    2. Le matériel de plongée est géré à l'unité ou en quantité.
    3. Les ouvrages sont soit des BD avec un auteur, un dessinateur, soit des romans avec un seul auteur.
    4. Les profs peuvent être élève et suivre des cours, les élèves peuvent être non profs.
    5. Les articles produits finis sont commandés par des clients, les articles achetés sont commandés aux fournisseurs. Certains articles sont fabriqués en interne et ne peuvent être vendus mais peuvent être achetés.
    6. Dans l'entreprise Brain, un salarié est posté comme cadre dirigeant, employé administratif ou commercial, cadre chef de projet ou développeur.
    7. Un extrait du MCD de l'entreprise soundOrganisation est donné ci-après. Il n'y a pas d'autre forme de local dans la base.
      • Les contraintes de disjonction et de couvertures sont-elles respectées ?
      • conclusion ?
      • représentez la contrainte dans le schéma.
    8. Une société gère les expéditions selon différents modes de transport. On distingue ces modes selon les critères économiques suivants :
      • La consommation globale,
      • le type de carburant utilisé,
      • la puissance du moteur pour les moteurs diesels,
      • la date de révision pour les moteurs au kérosène
      • la date de mise en conformité et la position du réservoir pour les moteurs au GPL.

      A chaque moteur correspond une entité spécifique, quelles sont-elles ?
      Reconstituez le MCD

    Retour index
  • 5 Les contraintes sur les associations

    De même que des contraintes peuvent être posées sur des entités, d'autres sont appliquées aux associations.
    Il y a deux contraintes supplémentaires : l'inclusion (une occurrence d'une association doit exister dans une autre association) et l'égalité (inclusion dans les deux sens, une occurrence doit exister dans les deux relations).
    De plus, il y a la notion de pivot.

    Exemple : Un voilier ne peut être loué que s'il a été réservé. Si un locataire loue, c'est qu'il a réservé.
    Il y a une contrainte d'inclusion de 'Louer' dans ' Réserver' avec Locataire comme pivot.

    5.1 Pivot d'une contrainte

    Le pivot est l'entité concernée par l'expression de la contrainte.
    Exemple :

    Un article est soit fabriqué (produit finis) avec des articles (matières), soit livré (ces matières) par un fournisseur (mais pas les deux). Les attributs sont différents selon le cas.
    On aura :
    1. Une contrainte d'exclusion : un article est fabriqué ou livré mais pas les deux.
    2. Un pivot : il s'agit de l'article, pas du fournisseur ou autre.
    Le pivot est désigné par une flèche ou un trait pointillé qui relie le symbole de la contrainte et le pivot.

    5.2 Exemple, la démarche de recherche de contrainte

    Il existe deux types d'articles : les produits finis et les matières.
    Un produit fini est fabriqué (rôle de composé) avec des matières (rôle de composant) et n'est pas livré. Dans ce cas, il n'est pas lui-même composant.
    Une matière n'est pas composée et peut être livrée par plusieurs fournisseurs. De même elle peut entrer dans la composition de plusieurs produits finis.

    Recherche des cardinalités :
    Un produit fini est fabriqué (composé) avec des matières (composant) …
    -> card. Maxi n vers Composer, coté 'composé' (composé : ?,n)

    … et n'est pas livré.
    -> card. Mini 0 vers Livrer (Livrer : 0,?)

    Dans ce cas, il n'est pas lui-même composant
    -> card. Mini 0 vers Composer, coté 'composant' (composant : 0,?)

    Une matière n'est pas composée …
    -> card. Mini 0 entre Article et Composer, coté composé (composé : 0,n)

    … et peut être livrée par plusieurs fournisseurs.
    -> card. Maxi n entre Article et livrer (livrer : 0,n)

    De même elle peut entrer dans la composition de plusieurs produits finis.
    -> card. Maxi n entre Article et Composer, coté composant (composant : 0,n)

    On a donc :
    Lien Card. Explication
    Article-Composer (Composant) 0,n Un article composant compose 0 à plusieurs articles composés
    Article-Composer (Composé) 0,n Un article composé est composé 0 à plusieurs articles composants
    Article-Livrer (Composé) 0,n Un article est livré par 0 à plusieurs fournisseurs


    Mais qui, conceptuellement, nous empêche de créer un article qui serait composé et livré ?
    C'est exprimé dans le texte mais pas traduit dans le SCD.

    On a bien des cardinalités 0,n partout mais rien qui nous indique que si un article est composé, il ne doit pas pouvoir être livré.

    Pour exprimer cela, on ajoutera :
    a) Une contrainte d'exclusion : un article est fabriqué ou livré mais pas les deux.
    b) Un pivot : il s'agit de l'article, pas du fournisseur ou autre.


    Le pivot est désigné par une flèche (bof) ou un trait pointillé (oui) qui relie le symbole de la contrainte et l'entité pivot.
    Une contrainte peut avoir plusieurs entités pivot.

    Note : dans cet exemple, il faudrait même ajouter une contrainte d'exclusion entre Composer et … Composer pour exprimer qu'un article composant ne peux pas être composé et vis versa.
    Cependant, dans la réalité, on a souvent des articles qui sont des semi-fini, càd des articles géré en stock et composé ET composant simultanément.
    C'est le cas, par exemple, pour la caisse d'une voiture dont on ne sait quelle motorisation elle aura au final. On peut prendre n'importe quelle caisse du stock et, pourtant, elles sont toutes fabriquées par le constructeur.

    5.3 Expression des contraintes

    5.3.1 Partition (XT ou +)

    Toute occurrence du pivot participe toujours à l'une ou l'autre association mais jamais aux deux simultanément.
    Un matériel est loué ou acheté.
    Tous les matériels le sont mais il ne peuvent pas être à la fois loués et achetés.

    5.3.2 Totalité (T)

    Toute occurrence de l'entité pivot participe toujours à l'une, à l'autre ou aux deux associations.
    Une voiture est vendue à un disributeur (garage, grande surface) ou distribuée via une concession.
    d'une manière ou d'une autre, la voiture est vendue. Vendre et Distribuer représentent la totalité des occurrences de Voiture.

    5.3.3 Exclusion (X)

    Toute occurrence du pivot participe à l'une, à l'autre ou aucune association. Mais jamais aux deux simultanément.
    Les clients d'un hôtel choisissent entre une formule Restauration ou Pension. Ils peuvent prendre leurs repas hors de l'hôtel.
    Il y a exclusion entre Choisir1 (Restauration) et Choisir2 (Pension) mais les client peuvent ne pas avoir fait de choix.

    5.3.4 Egalité ou simultanéité (= ou S)

    Toute occurrence du pivot participant à l'une des associations participe obligatoirement à l'autre.
    Les deux ensembles sont confondus
    Les clients de la formule Séjour doivent choisir une formule Pension. il y a simultanéité entre Séjourner et Choisir.

    5.3.5 Inclusion (I)

    Une occurrence du pivot qui participe à une association incluse participe obligatoirement à l'autre. Ce n'est pas réciproque.
    Une flèche indique le sens de la contrainte
    Exemple :
    Un client réserve mais ne loue pas forcément un voilier. Toute location a fait l'objet d'une réservation préalable. La contrainte d'inclusion va de louer qui est incluse dans réserver le pivot est le voilier.

    5.4 Exemples applicatifs

    a) Modélisez les situations suivantes

    Pour les cas suivants : représentez la répartition des occurrences sous forme ensembliste (dessinez, c'est ...) puis construisez les MCD
    1. Tuyauterie Industrielle est un spécialiste de la fourniture de canalisations. Le MCD des tuyaux a déterminé quatre entités spécifiques (avec leurs propriétés) : pipe-line (type de pipe-line), buse (coef de débit), tuyau en acier (caractéristiques acier), tuyau en grès (type de grès).
    2. 'Vroum-vroum' : il arrive que des pilotes en fin de carrière laisse leur place et vont rejoindre les équipes d'encadrement.
      Par ailleurs, certaines autres entités sont généralisables. Trouvez lesquelles.
    3. 'Tintin' : ne peuvent prononcer de jurons dans un album que les personnages qui y participent effectivement non ?

    b) Les paragraphes suivants concernent le MCD ci-dessous.

    Précisez le type de contrainte pour chaque paragraphe, sachant que :

    Le personnel de l'entreprise est majoritairement constitué de salariés.
    En cas de surcharge de travail, il est parfois fait appel à des intérimaires pour renforcer les équipes.
    Il arrive également qu'un intérimaire soit embauché par l'entreprise.
    1. L'intérimaire embauché change d'identifiant.
      L'entreprise n'utilise aucune autre catégorie d'employés.

    2. L'intérimaire embauché conserve son matricule et ses informations sur son statut intérimaire.
      L'entreprise n'utilise aucune autre catégorie d'employés.

    3. L'intérimaire embauché change d'identifiant.
      Par ailleurs, l'entreprise fait appel à des vacataires, rémunérés uniquement pour une mission précise.
      Ils ont un matricule pour obtenir un badge d'accès aux locaux.

    4. L'intérimaire embauché conserve son matricule et ses informations sur son statut intérimaire.
      Par ailleurs, l'entreprise fait appel à des vacataires, rémunérés uniquement pour une mission précise.
      Ils ont un matricule pour obtenir un badge d'accès aux locaux.

    Retour index
    6. Résumé des contraintes

    Les contraintes suivantes sont appliquées dans une d'Entité

    Contrainte généralisation/spécialisation
    Entité
    Entre Associations
    + pivot
    Exclusion X Oui Oui
    Totalité (T) Oui Oui
    Partition (XT ou +) Oui Oui
    Inclusion (I + -> (flèche)) Non Oui
    Simultanéité (= ou s) Non Oui
    Pas de contrainte (- vide -) Oui Non

    Remarques :
    Il n'y a pas de contrainte d'inclusion ni de simultanéité entre entités spécialisées.
    Quand il n'y a pas de contrainte, entre associations, … on ne les représente pas. Logique, non ?

    Et maintenant, transformez voire ces particularités du MCD en MR …

    Retour index