Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Eliminer des associations dans un MCD


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Eliminer des associations dans un MCD
    Bonsoir à tous,

    Je viens solliciter votre aide, car je ne parviens pas à trouver d'information sur "quand peut-on éliminer des associations entre relations dans un MCD ?" en sachant qu'il n'y a quasiment que des binaires et une ou deux ternaire par exemple.

    A partir de quel moment dois-je me dire que j'ai trop d'associations et que je peux en éliminer ? Y a t-il des règles spécifique à suivre à ce sujet ?

    Comment savoir si une ternaire est plus efficace et performante pour récupérer une information qu'une multi-jointure permettant de récupérer la même association ? Si l'on peut retrouver des informations par transitivité, est-ce mieux ?

    Merci d'avance pour votre aide.

    Cordialement

  2. #2
    Expert éminent sénior
    Bonsoir sapoczka,


    Citation Envoyé par sapoczka Voir le message
    quand peut-on éliminer des associations entre relations dans un MCD ?

    Quelle différence faites-vous entre « relation » et « association » ?


    Citation Envoyé par sapoczka Voir le message
    A partir de quel moment dois-je me dire que j'ai trop d'associations et que je peux en éliminer ?

    D’un point de vue merisien, c’est-à-dire conceptuel, si votre MCD est conforme aux règles de gestion et si celles-ci sont pertinentes, il ne peut y avoir trop d’associations ni pas assez...


    Citation Envoyé par sapoczka Voir le message
    Comment savoir si une ternaire est plus efficace et performante pour récupérer une information qu'une multi-jointure permettant de récupérer la même association ?


    Si traduite en variable relationnelle (relvar) la ternaire respecte la cinquième forme normale, alors est elle est pertinente, légale, légitime, et n’est pas le résultat d’un bricolage. Au stade conceptuel on est sur le pont, pas dans la soute. Si vous parlez d’une relvar qui serait le résultat d’une multi-jointures, c’est que vous en êtes au stade bidouillage (dénormalisation), victime de légendes et d’a priori, comme d’aucuns du côté des Alpilles, pire, fusion de binaires, donc création de dépendances multivaluées donc viol de quatrième forme normale, donc vous vous empêtrerez dans des redondances redoutables pour la validité de vos applications, vous serez condamné par les tribunaux relationnels et pas que...

    Quant à la performance, coiffez-vous de votre casquette de DBA et partez pour une campagne d’EXPLAIN appliquée à un prototype ad-hoc, mesurant l’efficacité du top 10 des requêtes estimées les plus pénalisantes. En tout cas, à quoi bon des records en performance si c’est pour obtenir des résultats faux ?
    Faites simple, mais pas plus simple ! (A. Einstein)
    E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  3. #3
    Membre éclairé
    Bonsoir,
    Citation Envoyé par fsmrel Voir le message
    Quelle différence faites-vous entre «relation» et «association» ?

    Je pense que sapoczka utilise le mot "relation" pour parler des classes d'entités, le terme "relations" étant aussi utilisé pour les tables de la future BD.
    Mais bon, au niveau conceptuel, il est préférable de parler d'entités et d'associations.

    D’un point de vue merisien, c’est-à-dire conceptuel, si votre MCD est conforme aux règles de gestion et si celles-ci sont pertinentes, il ne peut y avoir trop d’associations ni pas assez...
    Je plussoie mon collègue fsmrel (expert en la matière ) pour affirmer qu'il n'y a pas de règles en termes de nombre d'associations : il y a juste de bonnes conceptions et des mauvaises !

    Concernant les associations binaires ou ternaires, je ne suis pas fan des tri-pattes à moins de parfaitement maitriser les CIF : sinon gare au non respect de l'irréductibilité des clés .

    Quant à la performance, coiffez-vous de votre casquette de DBA et partez pour une campagne d’EXPLAIN appliquée à un prototype ad-hoc, mesurant l’efficacité du top 10 des requêtes estimées les plus pénalisantes. En tout cas, à quoi bon des records en performance si c’est pour obtenir des résultats faux ?
    Certes, mais avant tout, un bon MCD... et, étrangement, les performances sont souvent au rendez-vous, ou leur optimisation s'en trouve bien facilitée.
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  4. #4
    Expert éminent sénior
    Bonjour,

    Je crois que tout a été dit par mes éminents collègues

    Si toutefois des doutes persistent, publiez le MCD qui pose question avec les règles de gestion qui ont conduit à sa réalisation, nous pourrons alors discuter de cas concrets

  5. #5
    Membre à l'essai
    Bonjour à vous,

    Tout d'abord, merci beaucoup pour toutes ces réponses.

    @fsmrel, effectivement, j'utilise le mot clé relation pour parler d'entité. Je ne ferais donc plus cette erreur à l'avenir. Merci beaucoup pour vos réponses. Je vais prendre le temps de m'instruire le plus possible concernant la normalisation de tables, mais à ce stade, cela me parait un peu compliqué d'arriver jusqu'à la 5NF. C'est pourquoi je vous demande s'il vous serait possible de m'éclairer sur le cas suivant :

    https://drive.google.com/open?id=1eq...xuftRq4nEIPu43



    Les règles que je souhaite faire apparaitre pour l'association ternaire 'presenter' sont les suivantes : un véhicule ne peut être présenté par un propriétaire que dans une seule agence. Un propriétaire peut présenter plusieurs véhicules dans plusieurs agences.

    Je ne sais pas si cela est correctement représenté. Peut-être y a t-il mieux ? Mais est-ce faut et mal conceptualisé ? Peut-être en faire une agrégation ?

    D'autre part, sachant qu'un véhicule proposé par un propriétaire qui souscrit un contrat dont l'agent est en charge et l'agent travaille dans une agence, l'association 'presenter' --- 0,n ---- agence est-elle utile, tout en répondant aux règles susmentionnées, pour retrouver les véhicules d'une agence ? En effet,en faisant des jointures multiples entre véhicule, contrat, agent et agence, j'aurais accès à toutes les informations. D'où ma question sur les performances, vu que je peux retrouver par transitivité les véhicules d'une agence ou utiliser directement cette association. Je ne sais pas si j'ai été suffisamment claire dans mes explications.

    Merci encore pour toutes vos réponses et le temps accordé pour me permettre de m'améliorer

    Cordialement

  6. #6
    Membre éclairé
    Bonjour,
    Citation Envoyé par sapoczka Voir le message
    D'autre part, sachant qu'un véhicule proposé par un propriétaire qui souscrit un contrat dont l'agent est en charge et l'agent travaille dans une agence, l'association 'presenter' --- 0,n ---- agence est-elle utile, tout en répondant aux règles susmentionnées, pour retrouver les véhicules d'une agence ? En effet,en faisant des jointures multiples entre véhicule, contrat, agent et agence, j'aurais accès à toutes les informations. D'où ma question sur les performances, vu que je peux retrouver par transitivité les véhicules d'une agence ou utiliser directement cette association. Je ne sais pas si j'ai été suffisamment claire dans mes explications.
    Une association ternaire dans laquelle une patte 1,1 est présente peut être décomposée en 2 associations 1,1 / 0,n : le résultat au niveau relationnel sera identique et la modélisation conceptuelle bien plus claire.
    Et d'ailleurs cela montrera bien que, comme vous le soupçonnez, l'association [Véhicule]---1,1---(présenter)---0,n---[Agence] est effectivement inutile puisque l'agence peut être retrouvée à partir de l'agent et du contrat.
    Le problème d'une éventuelle optimisation ne doit surtout pas être posée à ce stade du MCD : la modélisation conceptuelle doit être propre et non redondante.
    Ce n'est que lorsque vous mettrez votre casquette de DBA que ce type de questions peut se poser. Mais, à mon avis, vu la masse des informations d'un tel système de vente de véhicules (on ne parle pas de millions de ventes par agent !), et vu l'efficacité des SGBD en termes de jointures, ce genre de raccourci pour accéder au véhicule ne me parait pas opportun.
    Par ailleurs, un véhicule et un propriétaire étant tous les deux rattachés à un et un seul contrat, si le véhicule n'est présenté qu'à un seul propriétaire, c'est carrément l'association présenter qui est remise en cause : êtes-vous sûr qu'un véhicule n'est présenté qu'à un seul propriétaire ?
    Enfin, un petit conseil pour rendre votre MCD plus lisible : positionnez la classe d'entités Propriétaire en dessous de Contrat pour éviter les croissements de pattes !
    J'ai vu que vous utilisez Looping (excellent choix ) : vous pouvez aussi faire des cassures sur les pattes pour éviter les collisions .
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  7. #7
    Expert éminent sénior
    Bonsoir sapoczka,


    Au sujet des relations

    Dans le contexte Merise, « relation » est synonyme d’association ». Dans le cadre de la théorie relationnelle, une relation est une valeur prise par une relvar (variable relationnelle).


    Au sujet de la normalisation

    Que les choses soient claires : la normalisation n’est pas la panacée, elle permet seulement d'empêcher les redondances les plus criantes. Son intérêt réside dans la confiance qu’on peut lui accorder parce qu’elle a été théorisée par des mathématiciens tels que Ron Fagin et ne réserve donc pas de surprises.

    Quant à la normalisation en cinquième forme normale, rassurez-vous, l’immense majorité des relvars qui respectent la forme normale de Boyce Codd (BCNF) respectent la cinquième forme normale, dont l’étude permet surtout de mieux avancer dans la connaissance de la théorie relationnelle.


    Je fais par ailleurs observer qu’au stade MCD, l’identification relative est à manipuler avec précaution. Considérez les conséquences qu’a la mise en oeuvre de ce type d’identification, perceptibles dans le MLD textuel produit par Looping en ce qui concerne le trio infernal PROPRIETAIRE, VEHICULE, CONTRAT :

    PROPRIETAIRE = (P_id, P_nom, P_prenom, P_date_inscription);
    VEHICULE = (V_id, V_prix_vente);
    CONTRAT = (#V_id, #P_id, C_id, C_details, C_montant_frais);


    Au vu de la clé {V_id, P_id, C_id} de la table CONTRAT, rien n’interdit que plusieurs propriétaires se partagent le même contrat, le même véhicule, et j’en passe...

    PROPRIETAIRE {P_id, ...}         VEHICULE {V_id, ...}
                  p1                           v1
                  p2                           v2
                  p3                           v3
    
    
    CONTRAT {V_id, P_id, C_id, ...}
             v1    p1    c1
             v1    p1    c2
             v1    p1    c3
             v1    p2    c1
             v2    p1    c1
             v2    p1    c2
             v2    p1    c3
             ...   ...   ...
    
    Le MCD est donc à revoir concernant le trio…
    Faites simple, mais pas plus simple ! (A. Einstein)
    E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  8. #8
    Modérateur

    Ce MCD est un cas d'école... du genre de piège dans lequel on peut tomber en réalisant un MCD !

    Je pointe régulièrement les boucles dans les MCD mais là c'est carrément un anneau de Moebius entre Propriétaire, Contrat, Véhicule, Agent auquel nous avons affaire et qui peut donner le genre d'incohérence que fsmrel à soulevé.

    Et pour démêler cet embrouillamini, il suffit de supprimer l'association gérer et la ternaire présenter, ce qui montre une fois de plus que les ternaires sont généralement rares, voire inexistantes dans un MCD.

    En effet, on peut alors lire de façon limpide le MCD :
    Un propriétaire peut souscrire un à plusieurs contrats. Un contrat est pris en charge par un agent qui travaille dans une agence et à ce contrat est rattaché un véhicule.

    Si le domaine ne couvre que des propriétaires présentant leur véhicule à la vente par l'intermédiaire d'une agence et que cette agence ne vend pas de véhicule en propre, ce MCD est suffisant.

    Okkham est encore venu à notre secours pour couper ce qui est inutile.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !