IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Quel logiciel télécharger pour réaliser un MCD


Sujet :

Schéma

  1. #121
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Salut François,
    Citation Envoyé par fsmrel Voir le message
    Certes, la case à cocher ne doit apparaître que s'il s'agit d'un identifiant, puisque les effets secondaires sont uniquement les conséquences de la propagation. On peut aussi éviter systématiquement et « sagement » cette propagation, auquel cas la case à cocher n'a pas lieu d’être.
    Je pense que le plus pragmatique est effectivement de supprimer systématiquement la propagation.
    Maintenant, tu sais que "CONSTRAINT E21_AK UNIQUE(e2aId, e2bId)" aura toujours ma préférence ne serait-ce qu’en tant que DBA surveillant en permanence le comportement du SGBD
    Ça, je m'en doutait bien ! Cette écriture suivra la même option que pour PK et FK.

    Par ailleurs, toutes tes histoires de clés alternatives me tournent dans la tête depuis quelques temps , et une petite ampoule s'est allumée dans ma tête la nuit dernière !
    Imagine quelque chose comme ça :
    Nom : Fenêtre Rubrique 2.6.jpg
Affichages : 843
Taille : 12,9 Ko
    Lorsque que l'on coche UNIQUE, 9 neuf index sont proposés, ce qui permettra à la rubrique de participer à une ou plusieurs clés alternatives (AK1 à AK9).
    Et si on choisit le même index pour plusieurs rubriques, celles-ci formeront une clé alternative composée.
    Je l'ai tourné un peu dans tous les sens, et ça a l'air de fonctionner (dans ma tête seulement pour le moment ! )
    Il resterait bien l'intégration des clés étrangères dans ces index, mais là ça alourdirait trop la fenêtre des cardinalités et sèmerait la confusion avec les identifiants relatifs, et ce pour des cas peu fréquents (il faudra alors passer par un ALTER dans une règle).
    Je ne suis pas certain d'avoir fait le tour du problème : je soumets donc ça au DBA !

  2. #122
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Salve,


    Citation Envoyé par Paprick
    Je pense que le plus pragmatique est effectivement de supprimer systématiquement la propagation.
    J’achète !


    Citation Envoyé par Paprick
    Ça, je m'en doutait bien ! Cette écriture suivra la même option que pour PK et FK.
    J’achète aussi !


    Citation Envoyé par Paprick
    Lorsque que l'on coche UNIQUE, 9 neuf index sont proposés
    J’adhère moyennement... Je réfléchis à une contre-proposition…

     

  3. #123
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    J’adhère moyennement... Je réfléchis à une contre-proposition…
    J'attends ta réflexion... Garde à l'esprit que ça ne doit pas alourdir le fonctionnement "classique"

  4. #124
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Bonsoir,

    Autre possibilité, toujours dans le même esprit, mais avec plus de souplesse dans la définition des index et une interface plus légère.
    Cela nécessite juste de connaître la syntaxe pour distinguer différents index (le "/" dans mon exemple).
    Nom : Fenêtre Rubrique 2.6 v2.jpg
Affichages : 814
Taille : 11,6 Ko

    Ce qui donne en SQL : CONSTRAINT NomClasse_NomIndex1_AK UNIQUE(... ou CONSTRAINT AK_NomClasse_NomIndex1 UNIQUE(...

    Si rien n'est indiqué dans la zone, alors on applique la contrainte UNIQUE sur la rubrique seule (et si plusieurs sont laissées vides, on suffixe le nom de la contrainte avec _1, _2, ...) :
    CONSTRAINT NomClasse_AK UNIQUE(... ou CONSTRAINT AK_NomClasse UNIQUE(...
    CONSTRAINT NomClasse_1_AK UNIQUE(... ou CONSTRAINT AK_NomClasse_1 UNIQUE(...

    (sachant que rien n'empêche de donner un nom à l'index, même s'il ne concerne qu'une seule rubrique).

    Cette approche permettrait peut-être d'envisager une interface plus légère (et donc acceptable) dans la fenêtre des cardinalités pour l'intégration des clés étrangères dans les index.

    A suivre...

  5. #125
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 338
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Il m'est venu une idée d'amélioration pour looping.
    Là encore rien d'important, il s'agit de confort d'utilisation.

    La proposition concerne les associations ternaires (ou plus) dans lesquelles il arrive qu'une "patte" ne puisse intervenir qu'une seule fois dans la relation

    Par exemple, soit les règles de gestion suivantes :
    R001 : un client peut détenir plusieurs comptes
    R002 : un compte est détenu par un ou plusieurs clients
    R003 : pour un même compte, un client exerce un et un seul rôle (titulaire, mandataire...)

    Dans le MCD, l'illustration de la règle R003 se matérialise par une flèche partant de l'association (détenir) et dirigée vers l'entité-type [ROLE]
    Dans le MLD, on supprime manuellement l'identifiant issu de l'entité-type [ROLE] de la PK de la table issue de l'association

    Le top serait de pouvoir modéliser la flèche dans le MCD et que le MLD en tienne compte pour évacuer l'identifiant (ou les identifiants) de la PK

    Pièce jointe 536278

    Je sais c'est de la gourmandise pas bien

  6. #126
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Bonjour Capitaine !

    Citation Envoyé par escartefigue Voir le message
    Je sais c'est de la gourmandise pas bien
    Mais non, ce n'est pas de la gourmandise mais, tel Monsieur Jourdain qui faisait de la prose sans le savoir, tu nous fais des CIF sans le savoir !
    En effet, l'outil CIF de Looping permet d'obtenir exactement le résultat que tu recherches ; voic le MCD correspondant :
    Nom : MCD escartefigue2.jpg
Affichages : 1327
Taille : 38,7 Ko
    Concernant la notation que tu proposes, tu as été inspiré puisque c'est la version "réduite" que proposent Nanci/Espinasse dans leur ouvrage sur Merise (4e édition : page 113).
    Personnellement, même s'il est vrai que ça allège le schéma, je ne suis pas fan de cette représentation : en effet, la flèche peut déjà être utilisée pour visualiser les DF en cas d'association 1,1/1,N (cf. propriétés dans Looping et schéma ci-dessus), en ciblant l'entité qui fournit la clé étrangère (y compris d'ailleurs en cas d'identifiant relatif : cf. page 123 ).
    Avec cette représentation réduite des CIF, la flèche cible l'entité qui fournit une clé étrangère sans qu'elle fasse partie de la clé primaire de la table d'association : en termes de DF, je peux comprendre, mais ça me gêne quand même aux entournures...

    Par ailleurs, tu peux également obtenir le même résultat au niveau MLD en décomposant ton association "détenir", ce que peut faire automatiquement Looping :
    Nom : MCD escartefigue2b.jpg
Affichages : 1038
Taille : 45,5 Ko
    Cette version montre bien les DF... Par contre, si l'on voulait adopter la représentation réduite des CIF, la logique graphique nous amènerait aussi à envisager la suppression de la flèche en cas d'identifiant relatif, alors qu'il y a quand même DF... Bref, sacré remue-méninges...

  7. #127
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 338
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paprick Voir le message
    En effet, l'outil CIF de Looping permet d'obtenir exactement le résultat que tu recherches
    En voilà une lessive qu'elle est bonne ! c'est parfait du coup


    Citation Envoyé par Paprick Voir le message
    Concernant la notation que tu proposes, tu as été inspiré puisque c'est la version "réduite" que proposent Nanci/Espinasse dans leur ouvrage sur Merise (4e édition : page 113)
    Loin de moi l'idée de m'approprier le travail des autres, c'est justement que j'ai l'habitude d'utiliser cette simplification visuelle dont je ne suis bien sûr pas l'inventeur

    Bonne fin de journée

  8. #128
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Loin de moi l'idée de m'approprier le travail des autres, c'est justement que j'ai l'habitude d'utiliser cette simplification visuelle dont je ne suis bien sûr pas l'inventeur
    Malgré mes réticences, je vais regarder comment mettre en oeuvre cette notation simplifiée dans Looping... même si je ne l'utiliserai probablement pas moi-même !

  9. #129
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 338
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    hum, je ne suis pas certain que ce soit une bonne idée finalement, les explications précédentes m'ont convaincu, je ne voudrai pas que ma proposition conduise à une sorte d'usine à gaz, alors qu'il existe une solution de contournement toute faite et facile à mettre en œuvre.

    J'ai l'habitude de faire d'une certaine façon il n'est sans doute pas trop tard pour changer ces habitudes

    Il est préférable de rapprocher le tabouret du piano, plutôt que de faire l'inverse

  10. #130
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    hum, je ne suis pas certain que ce soit une bonne idée finalement, les explications précédentes m'ont convaincu, je ne voudrai pas que ma proposition conduise à une sorte d'usine à gaz, alors qu'il existe une solution de contournement toute faite et facile à mettre en œuvre.
    A priori, ça devrait se limiter à une case à cocher qui n’apparaîtrait qu'en cas de tripattes (ou plus) portant uniquement des cardinalités multiples (O,n / 1,n), c'est à dire pas trop souvent !
    Et, quoiqu'il en soit, ça ne serait qu'une possibilité supplémentaire de représentation qui ne remettrait bien évidemment pas en cause l'existence de notre jolie CIF toute de rouge vêtue.

  11. #131
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Bonsoir à tous,


    Paprick, j’ai toujours en tête ma contre-proposition, mais elle est passée en priorité basse, car j’ai plein de chantiers urgents par ailleurs...

    En attendant :

    Citation Envoyé par escartefigue Voir le message
    Le top serait de pouvoir modéliser la flèche dans le MCD et que le MLD en tienne compte pour évacuer l'identifiant (ou les identifiants) de la PK
    Capitaine, de coeur avec toi, histoire de faire maigrir drastiquement les MCD du genre de ceux qu’on trouve dans le post #53.

    Reconnaissons néanmoins que Paprick y met du sien :

    Citation Envoyé par Paprick Voir le message
    Malgré mes réticences, je vais regarder comment mettre en oeuvre cette notation simplifiée dans Looping... même si je ne l'utiliserai probablement pas moi-même !
    Comme je viens de l’exprimer, la notation simplifiée a ma préférence...
    C’est celle que j’ai proposée avec constance dans moult discussions, par exemple dans celle ouverte par vocation, datant de 2008, où galopaient déjà chevaux et jockeys !


    Encore avec les CIF : cas des associations binaires fléchées

    Chez Chen :

    Nom : Chen(MCD).jpg
Affichages : 776
Taille : 35,0 Ko

    L’identification relative de DEPENDENT par rapport à EMPLOYEE est marquée par deux rectangles emboîtés, tandis que la flèche signifie dépendance à la vie à la mort d’une instance de DEPENDENT par rapport à une instance de EMPLOYE, si un employé disparaît, alors ses dépendants disparaissent itou (cf. l’action de compensation CASCADE en SQL) : on ne peut pas faire l’économie de la flèche, car si on le fait, il n’y a plus de dépendance « à la vie à la mort » : DEPENDENT est certes identifiée relativement à EMPLOYEE, mais une tentative de suppression d’un employé devra cette fois-ci échouer (cf. l’action de compensation RESTRICT (ou NO ACTION selon les SGBD et les époques)).

    Je rappelle ce qu’a écrit Chen en 1975 dans son article de référence The Entity-Relationship Model - Toward a Unified View of Data :

    The diagram can express the existence dependency of one entity type on another. For example, the arrow in the relationship set EMPLOYEE-DEPENDENT indicates that existence of an entity in the entity set DEPENDENT depends on the corresponding entity in the entity set EMPLOYEE. That is, if an employee leaves the company, his dependents may no longer be of interest. Note that the entity set DEPENDENT is shown as a special rectangular box. This indicates that at level 2 the information about entities in this set is organized as a weak entity relation (using the primary key of EMPLOYEE as a part of its primary key).


    Au tour de Nanci et Espinasse :

    Dans Ingénierie des systèmes d'information : Merise deuxième génération (4e édition, 2001), on lit ceci à propos des flèches :

    « Dépendance fonctionnelle sur une relation binaire

    Une dépendance fonctionnelle sur ce type de relation exprime qu’à partir d’une occurrence d’une entité type lui correspond (au plus) une seule occurrence de l’autre entité type de la collection. On constate, dans ce cas, qu’il y a correspondance entre :

    la cardinalité maximum = 1

    et l’existence d’une dépendance fonctionnelle.

    Ces relations types seront couramment appelées binaires fonctionnelles. »

    Cette correspondance sent le « syntactic sugar », voire la redondance, l’interchangeabilité...

    Un peu plus loin :

    « Ces relations binaires fonctionnelles sont très utiles car elles permettent de faire référence à une occurrence d’une entité par l’intermédiaire d’une autre entité et d’une relation (exemple : le propriétaire du véhicule 1234 PX 13). »

    Autant chez Chen le fléchage est justifié, autant chez Nanci je ne vois pas du tout cette « utilité » dont parle l’auteur. Ainsi je n’ai jamais fléché les binaires dans mes MCD merisiens. Quand certains usent et abusent des flèches dans les associations de ce type, j’ai surtout envie de les raser à la Ockham...

    Quand Qu’en pensent mes éminents collègues ?

    Pour la petite histoire, dans le cas de l’Afcet, la flèche signifie identification relative, voir « Identifiant relatif » dans le document de référence : pas de problème, chacun représente l’identification relative à sa manière.


    Citation Envoyé par Paprick Voir le message
    Par ailleurs, tu peux également obtenir le même résultat au niveau MLD en décomposant ton association "détenir"
    Pour repartir dans les courses hippiques, j’en reviens au post #53 : d’accord avec toi quand une seule CIF est définie sur une association, mais, dans le cas de la figure 3, on a deux CIF, heu... comment décomposer l’association PARTICIPER ? Oui, plus d’une CIF saipasbien, mais supposons...


     

  12. #132
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Bonjour,

    Citation Envoyé par fsmrel Voir le message
    Paprick, j’ai toujours en tête ma contre-proposition, mais elle est passée en priorité basse, car j’ai plein de chantiers urgents par ailleurs...
    Pas de problème ! De mon côté, j'ai affiné la chose, et tel les All Blacks, je me suis concentré sur le AK (désolé, je n'ai pas pu m'en empêcher ! ).
    Je pense avoir fait le tour du problème, y compris pour l'intégration des clés étrangères dans la composition des clés alternatives (index).
    J'y reviendrai à la fin du post, en présentant la nouvelle fenêtre "Cardinalité" qui regroupe toutes les problématiques soulevées dernièrement.

    Autant chez Chen le fléchage est justifié, autant chez Nanci je ne vois pas du tout cette « utilité » dont parle l’auteur. Ainsi je n’ai jamais fléché les binaires dans mes MCD merisiens. Quand certains usent et abusent des flèches dans les associations de ce type, j’ai surtout envie de les raser à la Ockham...
    Qu’en pensent mes éminents collègues ?
    J'en pense que je suis entièrement d'accord avec toi : en effet, les cardinalités comme la 1,1 expriment clairement les DF, la flèche n'apportant aucune nouvelle information. Donc, personnellement, je ne les utilise jamais (et je ne les enseigne pas non plus à mes étudiants). Conscient que tout le monde ne pense pas comme moi, Looping les propose en option (mais avec un "Non" par défaut ! ).

    Pour la petite histoire, dans le cas de l’Afcet, la flèche signifie identification relative, voir « Identifiant relatif » dans le document de référence
    Ce n'est pas ce que l'Afcet a fait de mieux...

    Pour repartir dans les courses hippiques, j’en reviens au post #53 : d’accord avec toi quand une seule CIF est définie sur une association, mais, dans le cas de la figure 3, on a deux CIF, heu... comment décomposer l’association PARTICIPER ? Oui, plus d’une CIF saipasbien, mais supposons...
    Le problème ne vient pas de la décomposition, mais de l'interprétation qui est faite des doubles CIF... Ta brillante démonstration au post #53 nous a conduit à la conclusion qu'il y avait plusieurs clés candidates sans que le modèle n'en définissent une comme étant clé primaire (d'où la triste disparition de notre Miss PK !).
    Or, comme je l'avais indiqué, si l'exercice de style est remarquable, sa gestion par bon nombre de SGBD est inenvisageable.
    De plus, avec la représentation simplifiée des CIF, la double CIF me pose un problème d'interprétation visuelle : en effet, ça laisse clairement penser que les clés étrangères des deux classes d'entités ciblées doivent être exclues de la clé primaire de la table d'association... C'est d'ailleurs, l'interprétation des doubles CIF que fait (à tord) Looping. (promis, je vais travailler la question)

    La décomposition d'une association nous rapproche de la forme que prendra le schéma relationnel : en ce sens, Miss PK doit être choisie, et la représentation du MCD sans elle est impossible.
    La multiplication des CIF sur une même association doit donc être prise avec des pincettes car elle laisse une alternative quand au choix de la clé primaire à adopter : en ce sens, la décomposition impose au concepteur de faire ce choix.

    Reste à pouvoir définir les clés alternatives ! Ce qui nous ramène à nos moutons
    Je reste sur ma position quant à la façon d'intégrer une rubrique à une ou plusieurs clés alternatives par leur affectation au sein d'index nommé(s) à cet effet :
    Nom : Fenêtre Rubrique 2.6 v2.jpg
Affichages : 775
Taille : 11,5 Ko
    Concernant l'intégration de clés étrangères au sein de ces clés alternatives, elle peut être proposée dans la fenêtre "Cardinalité" dans le cas d'une cardinalité multiple, à condition que la cardinalité située sur l'autre patte soit simple.
    Et j'en profite pour rajouter à cette fenêtre la case à cocher qui va bien pour la représentation simplifiée des CIF (qui n’apparaîtra qu'en cas de tripattes (ou plus) toutes à cardinalités multiples).
    Voici ce que ça donne sachant que les cases à cocher ne s'afficheront qu'à bon escient :
    Nom : Fenêtre Cardinalité 2.6.jpg
Affichages : 790
Taille : 29,0 Ko
    Je pense qu'avec ça on doit couvrir pas mal de situations... sauf l'absence de Miss PK !
    Tout cela pourrait nous conduire à une version 2.6 (qui retardera un peu plus la sortie de la 3.0 et son MLD graphique )... mais je pense que ça vaut la peine

  13. #133
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Salut François,
    J'ai une mission pour toi !!!
    Je viens d'étudier tes différents modèles sur les courses de chevaux (post #53) avec la mise en oeuvre des 2, 3 et 4 CIF sur la même association PARTICIPER.

    J'ai trouvé une règle qui fonctionne avec les modèles simples utilisant les CIF, mais aussi avec tes modèles multi-CIF. La voici :

    Les clés candidates d'une association n-aires (n>2) concernée par une ou plusieurs CIF sont composées des clés étrangères issues :
    • des classes d'entités émettrices d'une des CIF,
    • des éventuelles classes d'entités non émettrices de la CIF en question et non ciblées par une quelconque autre CIF de l'association.

    On applique cette règle à chaque CIF, et une clé candidate est ainsi générée en fonction de chacune d'elle.
    Certaines candidates peuvent alors s'avérer être les mêmes : par exemple, tes modèles à 3 et 4 CIF proposeront 2 fois la même clé composée.

    A priori, ça marche à tous les coups... mais mon approche est totalement empirique... ce qui ne garantit pas sa validité.
    Peux-tu envisager une démonstration de la chose ? ... ou son démontage si ça ne marche pas.

    Si cela s’avérerait probant, je pourrais faire appliquer la règle à Looping : resterait ensuite à définir les modalités d'élection de Miss PK, les autres finissant AK.

  14. #134
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Salve !


    Avant de traiter du COMMENT produire les clés candidates d’une table issue de la portée d’une ou plusieurs CIF, je voudrais ici traiter du QUOI.


    Citation Envoyé par Paprick Voir le message
    la double CIF me pose un problème d'interprétation visuelle : en effet, ça laisse clairement penser que les clés étrangères des deux classes d'entités ciblées doivent être exclues de la clé primaire de la table d'association...
    J’en reviens à cette double CIF présentée dans la figure 3 du post #53. Reprenons les CIF parties prenantes dans cette affaire :

    CIF1 = {COURSE, JOCKEY} → {CHEVAL}

    CIF2 = {COURSE, CHEVAL} → {JOCKEY}

    En l’absence de toute CIF, la clé primaire SQL de la table PARTICIPER est le quadruplet :

    K = {courseId, numero, chevalId, jockeyId}

    Selon ton approche :

    Du fait de CIF1, l’attribut chevalId ne doit pas être présent dans la clé K, et du fait de CIF2, l’attribut jockeyId ne doit pas non plus être présent dans K qui est réduite à :

    K = {courseId, numero}

    Si on tient compte aussi de CIF3 :

    CIF3 = {COURSE, CHEVAL} → {NUMERO}

    Alors l’attribut numero ne doit pas non plus être présent dans K qui, telle une peau de chagrin, est réduite au singleton :

    K = {courseId}

    Il est certain qu’au stade SQL la clé primaire K de la table PARTICIPER doit être débarrassée des attributs faisant que la règle d’irréductibilité des clés candidates serait violée. Néanmoins, point trop n’en faut !

    Paprick, ce que je conteste c’est la méthode de réduction que tu utilises puisqu’elle conduit à ce que K soit réduite à tort à {courseId}.


    De mon côté, je vois plutôt les choses ainsi :

    1er exemple

    Soit E l’ensemble des classes d’entités participant à l’identification de l’association PARTICIPER :

    E = {COURSE, NUMERO, CHEVAL, JOCKEY}

    Les identifiants respectifs des classes éléments de E sont les suivants :

    I1 = courseId
    I2 = numero
    I3 = chevalId
    I4 = jockeyId

    Soit les sous-ensembles stricts suivants de E, répondant aux règles de gestion :

    C1 = {COURSE, NUMERO}
    C2 = {COURSE, CHEVAL}
    C3 = {COURSE, JOCKEY}

    Lesquels, toujours pour répondre aux règles de gestion, donnent lieu aux CIF :

    CIF1 = C1 → {CHEVAL}
    CIF2 = C1 → {JOCKEY}
    CIF3 = C2 → {NUMERO}
    CIF4 = C2 → {JOCKEY}
    CIF5 = C3 → {CHEVAL}
    CIF6 = C3 → {NUMERO}

    Les sous-ensembles C1, C2, C3 donnent respectivement lieu au stade SQL aux clés candidates :

    CK1 = {courseId, numero}
    CK2 = {courseId, chevalId}
    CK3 = {courseId, jockeyId}

    Dans cette approche, les sous-ensembles C1, C2, C3 jouent un rôle décisif dans la détermination des clés candidates. Pour sa part, la clé primaire est choisie (par le jury ) parmi ces candidates.

    2e exemple

    Ça n’est pas un problème d’ajouter une classe à connecter sur PARTICIPER. Ainsi, au démarrage d’une course, les chevaux occupent chacun une position par rapport à la corde, d’où CIF supplémentaires. Le MCD devient tellement chargé que c’en est démentiel, et je ne chercherai évidemment pas à le présenter. Mais de mon côté, pas de problème dans la détermination pdes clés candidates SQL de la table PARTICIPER :

    L’ensemble E des classes d’entités participant à l’identification de l’association PARTICIPER devient le suivant :

    E = {COURSE, NUMERO, CHEVAL, JOCKEY, CORDE}

    Les identifiants respectifs des classes éléments de E sont les suivants :

    I1 = courseId
    I2 = numero
    I3 = chevalId
    I4 = jockeyId
    I5 = cordeId

    Soit les sous-ensembles stricts suivants de E, répondant aux règles de gestion :

    C1 = {COURSE, NUMERO}
    C2 = {COURSE, CHEVAL}
    C3 = {COURSE, JOCKEY}
    C4 = {COURSE, CORDE}

    D’où les CIF

    CIF1 = C1 → {CHEVAL}
    CIF2 = C1 → {JOCKEY}
    CIF3 = C2 → {NUMERO}
    CIF4 = C2 → {JOCKEY}
    CIF5 = C3 → {CHEVAL}
    CIF6 = C3 → {NUMERO}
    CIF7 = C1 → {CORDE}
    CIF8 = C2 → {CORDE}
    CIF9 = C3 → {CORDE}
    CIF10 = C4 → {NUMERO}
    CIF11 = C4 → {CHEVAL}
    CIF12 = C4 → {JOCKEY}

    Les sous-ensembles C1, C2, C3, C4 donnent respectivement lieu au stade SQL aux clés candidates

    CK1 = {courseId, numero}
    CK2 = {courseId, chevalId}
    CK3 = {courseId, jockeyId}
    CK4 = {courseId, cordeId}

    Unicité complète / incomplète

    Les CIF précédentes mettent en jeu 2 pattes d’association sur les 4 qui sont branchées sur PARTICIPER (unicité incomplète au sens Afcet).

    Il n’y a pas de problème au cas où une CIF mettrait en jeu 3 pattes sur les 4 (unicité complète).

    Le cas où la CIF ne mettrait en jeu qu’une seule patte ne présente pas d’intérêt, puisqu’on peut de préférence utiliser l’identification relative pour obtenir le bon résultat.

    Une remarque

    J’observe que dans sa version actuelle, la clé primaire SQL de la table PARTICIPER produite par Looping est exactement la même si par exemple on a seulement la CIF :

    {COURSE, NUMERO} → {CHEVAL}

    Ou bien la CIF :

    {COURSE, NUMERO, JOCKEY} → {CHEVAL}

    Je replonge dans la mer des CIF...

     

  15. #135
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Salut François,
    Tout d'abord, et pour éviter tout débat inutile, regarde bien mon dernier post où je me rallie totalement à ta cause concernant les multiples CIF , reconnaissant par la même occasion la mauvaise génération de clés actuellement faite par Looping dans ce cas.

    Mais quand je dis :
    De plus, avec la représentation simplifiée des CIF, la double CIF me pose un problème d'interprétation visuelle : en effet, ça laisse clairement penser que les clés étrangères des deux classes d'entités ciblées doivent être exclues de la clé primaire de la table d'association...
    Je fais référence uniquement à la représentation simplifiée des CIF qui n'est pas assez précise pour exprimer qui dépend fonctionnellement de qui au dessus de 3 tables associées.
    En fait, cette représentation simplifiée ne peut être utilisée qu'en cas d'unicité complète.
    Ce problème ne se pose pas avec la version étendue qui exprime clairement les classes émettrices et les cibles, quelque soit le nombre de CIF (même si c'est un peu lourd graphiquement).

    Concernant la règle que je propose :
    J'ai trouvé une règle qui fonctionne avec les modèles simples utilisant les CIF, mais aussi avec tes modèles multi-CIF. La voici :

    Les clés candidates d'une association n-aires (n>2) concernée par une ou plusieurs CIF sont composées des clés étrangères issues :

    • des classes d'entités émettrices d'une des CIF,
    • des éventuelles classes d'entités non émettrices de la CIF en question et non ciblées par une quelconque autre CIF de l'association.

    On applique cette règle à chaque CIF, et une clé candidate est ainsi générée en fonction de chacune d'elle.
    Certaines candidates peuvent alors s'avérer être les mêmes : par exemple, tes modèles à 3 et 4 CIF proposeront 2 fois la même clé composée.
    Peux-tu vérifier qu'elle réponde à toutes les situations, y compris celle que tu viens de proposer avec la 5ème classe d'entités associée CORDE ?
    Si c'est le cas, Looping pourra déterminer toutes les candidates, et on pourra parler de l'élection de la Miss et de ses dauphines !

  16. #136
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Salve Paprick,


    Citation Envoyé par Paprick Voir le message
    Je fais référence uniquement à la représentation simplifiée des CIF qui n'est pas assez précise pour exprimer qui dépend fonctionnellement de qui au dessus de 3 tables associées.
    En fait, cette représentation simplifiée ne peut être utilisée qu'en cas d'unicité complète.
    Exact. En cas d’unicité complète, la représentation simplifiée évoquée par Le Capitaine dans le post #125 fonctionne et a ma préférence (cf. post #131). Mais il est évident qu’en cas d’unicité incomplète ça ne peut pas fonctionner, on doit faire figurer les CIF dans le MCD.

    Quand je conteste, j’aurais pu préciser qu’il s’agit de de la façon dont Looping procède actuellement, et que ta proposition (post #133) tient la route.

    Cela dit, dans le post #134 j’ai tenu à mettre les choses à plat, ça me permet d’y voir plus clair.


    Citation Envoyé par Paprick Voir le message
    Les clés candidates d'une association n-aires (n>2) concernée par une ou plusieurs CIF sont composées des clés étrangères issues :
    LIST][*]des classes d'entités émettrices d'une des CIF,[*]des éventuelles classes d'entités non émettrices de la CIF en question et non ciblées par une quelconque autre CIF de l'association.[/LIST]
    Concernant les CIF, les exemples que j’ai utilisés (post #134) relèvent du 1er point de ton approche et j’ai beau chercher des contre-exemples, je n’arrive pas à la démonter. Elle est nécessaire et très vraisemblablement suffisante.

    Pour le 2e point : Si j’ai bien compris, il s’agit de classes ne participant à aucune CIF.

    Je reprends mon 1er exemple (post #134) et fais participer la classe Z (d’identifiant zId) à l’association PARTICIPER.

    L’ensemble E des classes d’entités participant à l’identification de PARTICIPER est le suivant :

    E = {COURSE, NUMERO, CHEVAL, JOCKEY, Z}

    En l’absence de CIF et en l’absence d’association entre Z et les autres classes (sinon PARTICIPER est décomposable), alors au stade relationnel PARTICIPER a pour clé

    K = {courseId, numero, chevalId, jockeyId, zId}

    Maintenant, si les sous-ensembles à l’origine des CIF sont encore

    C1 = {COURSE, NUMERO}
    C2 = {COURSE, CHEVAL}
    C3 = {COURSE, JOCKEY}

    alors on a à nouveau les CIF :

    CIF1 = C1 → {CHEVAL}
    CIF2 = C1 → {JOCKEY}
    CIF3 = C2 → {NUMERO}
    CIF4 = C2 → {JOCKEY}
    CIF5 = C3 → {CHEVAL}
    CIF6 = C3 → {NUMERO}

    Ces CIF donnent lieu aux dépendances fonctionnelles (au sens relationnel) :

    DF1 = {courseId, numero} → {chevalId}
    DF2 = {courseId, numero} → {jockeyId}
    DF3 = {courseId, chevalId} → {numero}
    DF4 = {courseId, chevalId} → {jockeyId}
    DF5 = {courseId, jockeyId} → {chevalId}
    DF6 = {courseId, jockeyId} → {numero}

    Au moyen des axiomes d’Armstrong et de l’algorithme du seau à dépendants, on montre que les clés candidates sont les suivantes :

    CK1 = {courseId, numero, zId}
    CK2 = {courseId, chevalId, zId}
    CK3 = {courseId, jockeyId, zId}

    Ainsi, concernant les classes non impliquées dans les CIF, ton approche est valide.

    Vas-y pour mettre tout ça en oeuvre !

    Associations réflexives

    Les CIF ayant pour portée une réflexive entrent dans le cadre du régime général, à ceci près que ce sont bien sûr les rôles qui interviennent :

    Nom : cif_et_reflexive.png
Affichages : 253
Taille : 16,4 Ko

    Je n’ai pas réussi à demander à Looping de connecter la CIF et la classe SALARIÉ dans le cas du rôle "encadré". Il y a une manip particulière pour connecter ?


     

  17. #137
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 708
    Points : 2 862
    Points
    2 862
    Par défaut
    Bonsoir François,

    Citation Envoyé par fsmrel Voir le message
    Concernant les CIF, les exemples que j’ai utilisés (post #134) relèvent du 1er point de ton approche et j’ai beau chercher des contre-exemples, je n’arrive pas à la démonter. Elle est nécessaire et très vraisemblablement suffisante.

    Ainsi, concernant les classes non impliquées dans les CIF, ton approche est valide.
    Vas-y pour mettre tout ça en oeuvre !
    !
    Les CIF ayant pour portée une réflexive entrent dans le cadre du régime général, à ceci près que ce sont bien sûr les rôles qui interviennent :
    Je n’ai pas réussi à demander à Looping de connecter la CIF et la classe SALARIÉ dans le cas du rôle "encadré". Il y a une manip particulière pour connecter ?
    En fait, Looping refuse qu'une classe d’entités possède plusieurs liens vers une même CIF...
    Si cette règle est logique pour les associations entre classes différentes, la question se pose effectivement pour les réflexives... Ça risque d'être compliqué, mais je vais quand même essayer d'y réfléchir...
    Allez, en route pour la version 2.6 ! Si tu vois d'autres trucs qui coincent entre temps, n'hésite pas !

  18. #138
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Salve Paprick,


    Dossier CIF : compléments

    Citation Envoyé par Paprick Voir le message
    Certaines candidates peuvent alors s'avérer être les mêmes : par exemple, tes modèles à 3 et 4 CIF proposeront 2 fois la même clé composée.
    Exact. Il y a là de la redondance ! J’aurais dû représenter un ensemble irréductible de CIF. De quoi s’agit-il ? Les concepteurs qui nous lisent pourraient en effet se gratter l’occiput, à leur intention je développe donc.

    Au stade relationnel on s’attache à déterminer les ensembles irréductibles de dépendances fonctionnelles (théorisées par Ted Codd en 1971 dans Further Normalization of the Data Base Relational Model, rien à voir avec celles de Merise !), comme ici :

    Ensemble irréductible de dépendances fonctionnelles

    On peut très bien extrapoler la méthode aux CIF. Je me limiterai ici à l’utilisation des axiomes d’Armstrong sans partir dans des calculs fastidieux.

    Un axiome incontournable et que j’apprécie particulièrement est celui de l’augmentation :

    Soit A, B, C des sous-ensembles quelconques d'attributs d’une relvar (variable relationnelle) R.
    Soit la dépendance fonctionnelle :

    A → B

    Par augmentation on produit la DF :

    AC → BC

    (Où AC est un raccourci pour B ∪ C et BC est un raccourci pour B ∪ C).

    A partir de là, on peut définir un ensemble irréductible de CIF.

    Supposons qu’un de mes MCD du post #53 soit enrichi pour qu’y figurent les 6 CIF du 1er exemple (post #134) :

    CIF1 = {COURSE, NUMERO} → {CHEVAL}
    CIF2 = {COURSE, NUMERO} → {JOCKEY}
    CIF3 = {COURSE, CHEVAL} → {NUMERO}
    CIF4 = {COURSE, CHEVAL} → {JOCKEY}
    CIF5 = {COURSE, JOCKEY} → {CHEVAL}
    CIF6 = {COURSE, JOCKEY} → {NUMERO}

    Si CIF1 et CIF4 sont données, alors il est inutile de modéliser CIF2. En effet à partir de CIF1 :

    {COURSE, NUMERO} → {CHEVAL}

    par augmentation on infère :

    {COURSE, NUMERO} → {COURSE, CHEVAL}

    Or selon CIF4 :

    {COURSE, CHEVAL} → {JOCKEY}

    Donc par transitivité :

    {COURSE, NUMERO} → {JOCKEY}

    Autrement dit, CIF2 peut dégager du MCD ! Mais on peut parfaitement vouloir conserver CIF2 et en contrepartie dégager CIF1, car à partir de CF2 :

    {COURSE, NUMERO} → {JOCKEY}

    Par augmentation on infère :

    {COURSE, NUMERO} → {COURSE, JOCKEY}

    Or selon CIF5 :

    {COURSE, JOCKEY} → {CHEVAL}

    Donc par transitivité :

    {COURSE, NUMERO} → {CHEVAL}


    Tout cela pour dire que Looping pourrait éventuellement signaler au concepteur qu’il peut passer des coups du rasoir du père Ockham, mais c’est du niveau warning, c’est secondaire, l’essentiel étant de produire les bonnes clés candidates...

    Pour la petite histoire, il y a plusieurs ensembles irréductibles (ou couvertures minimales) de CIF (couvertures minimales), si je ne me suis pas planté dans mes calculs et mes copier/coller, ce sont les suivants :

    Couverture irréductible 1 :

    {COURSE, JOCKEY} → {NUMERO}
    {COURSE, NUMERO} → {CHEVAL}
    {COURSE, CHEVAL} → {JOCKEY}

    Couverture irréductible 2 :

    {COURSE, JOCKEY} → {CHEVAL}
    {COURSE, NUMERO} → {JOCKEY}
    {COURSE, CHEVAL} → {NUMERO}

    Couverture irréductible 3 :

    {COURSE, CHEVAL} → {NUMERO}
    {COURSE, JOCKEY} → {NUMERO}
    {COURSE, NUMERO} → {CHEVAL}
    {COURSE, NUMERO} → {JOCKEY}

    On observera que la 3e couverture est la moins intéressante, car elle contient 4 CIF au lieu de 3 : Dans un MCD, on représentera les CIF soit avec la 1re, soit avec la 2e des trois couvertures.

    On peut avoir une approche pragmatique du sujet (cf. Paragraphe E.8. Conclusion).

     

  19. #139
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 113
    Points : 31 588
    Points
    31 588
    Billets dans le blog
    16
    Par défaut
    Bonjour Paprick,


    Un petit aménagement orthographique à apporter concernant l’export ci-dessous :

    Nom : access_export_orthographe.png
Affichages : 724
Taille : 4,1 Ko

    Et bon courage pour la suite de tes travaux (d'Hercule)

     

  20. #140
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 338
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je n'aurai jamais pensé que ma proposition de représentation simplifiée aurait soulevé autant de difficultés
    En tout cas bravo encore Paprick de relever tous ces défis et le travail qui t'incombe

    Citation Envoyé par les inconnus
    tout ce travail qui t'incombe et surtout qui te décombe

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Recherche logiciels pour réaliser des MCD
    Par quaresma dans le forum Outils
    Réponses: 5
    Dernier message: 08/02/2008, 17h07
  3. Quel logiciel utiliser pour shématiser une bdd relationnel
    Par MrEddy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 22/07/2005, 16h42
  4. Quel logiciel utiliser pour un serveur ftp
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 11
    Dernier message: 01/04/2005, 20h09
  5. Réponses: 3
    Dernier message: 27/08/2003, 21h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo