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

Access Discussion :

Court-circuit de jointures


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Court-circuit de jointures
    Bonjour,

    Je travaille avec Access et "Je me lance" 2003.
    J'ai un souci de compréhension avec les jointures.
    J'ai donc réalisé un petit exemple avec 5 tables et 5 jointures 1-plusieurs pour m'expliquer.
    Cet exemple concerne des tableaux que l'on peut accrocher au mur pour la décoration ou l'information.
    Basiquement, ces tableaux sont constitués d'une toile qui porte le dessin, d'un cadre, et ces deux éléments doivent correspondre au même format. Et c'est ce dernier point qui coince.
    J'aurais pu prendre comme exemple un téléphone mobile. L'objet final est un empilage d'éléments au même format. J'ai donc créé une table Format et on retrouve l'information du format dans tous les éléments constitutifs de l'objet.
    J'ai ajouté d'autres items pour faciliter la compréhension de l'exemple. Voici les tables avec "k_xxx" pour les clés :

    "tbl Tableau"
    k_Tableau
    Référence
    Type de toile
    Format
    Cadre
    Fond
    Face avant : vitre, plexiglas
    Accroche

    "tbl Type de toile"
    k_Toile
    Type de toile : Huile sur tissu, Aquarelle papier, etc.

    "tbl Cadre" dans le sens Type de cadre
    k_Cadre
    Référence
    Nature : Bois, Métal, Plastique
    Format
    Sécurisé
    Etanche

    "tbl Format"
    k_Format
    Format : A0 à A5, 600x800
    Largeur
    Hauteur
    Orientation

    "tbl Orientation"
    k_Orientation
    Orientation : Portrait / Paysage

    J'ai créé les listes déroulantes côté plusieurs.

    Voici les liaisons 1-plusieurs. 1 correspondant à la pointe de la flèche :
    1 Type de toile peut être utilisé pour plusieurs Tableau
    *1 Format peut être utilisé pour plusieurs Tableau
    *1 Type de cadre peut être utilisé pour plusieurs Tableau
    *1 Format peut être utilisé pour plusieurs Type de cadre
    1 Orientation peut être utilisé pour plusieurs Format

    On constate que nous avons deux "Format" côté 1 (2 et 4). Jusqu'ici tout va bien.
    Mais nous avons aussi l'information Format qui remonte à Tableau via la jonction Type de cadre-Tableau (3). Nous avons donc l'information Format qui remonte trois fois à Tableau. Et j'ai l'impression qu'Access n'aime pas.
    Graphiquement sur la page Relations d'Access, la jointure (2) court-circuite les jointures (3 et 4).
    En conséquence, Access duplique les tables et les jointures dans Relations. Et j'ai le message d'erreur suivant en faisant une requête :
    "Instruction SQL non exécutée: des jointures externes ambiguës.
    Pour forcer l'ordre d'exécution d'une des jointures en premier, créez une requête distincte qui exécute la première jointure, puis insérer cette requête dans votre instruction SQL."

    Est-ce qu'un esprit perspicace aurait une bonne idée ?
    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    De ce que je comprend tu devrais avoir les relations suivantes : la flèche indique un relation de 1 à N.

    table Format -> table Cadre
    table Format -> table Toile
    table Format -> table Tableau (quoi que le format du tableau est probablement identique au format du cadre donc cela ne sert à rien ici)

    table TypeToile -> table Tableau

    table Orientation -> table Tableau

    table Cadre -> table Tableau

    Et tu devrais avoir une table NatureCadre.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Salut,
    Merci de ta réponse rapide.
    Voici ce que j'ai :
    Nom : Base Tableau - Relations.png
Affichages : 410
Taille : 14,1 Ko
    Mais j'ai peut-être tout faux
    A+

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Contrainte de chemin
    Bonjour Paulo,


    Je joins un fichier MDB avec lequel on garantit la contrainte selon laquelle la toile et le cadre d’un tableau doivent avoir le même format.


    Comme l’intégrité référentielle est activée, pour créer les tables j’ai exécuté les requêtes suivantes, dans l’ordre :

    A_CREATE_TABLE_TYPE_FORMAT

    B_CREATE_TABLE_TYPE_CADRE

    C_CREATE_TABLE_TYPE_TOILE

    D_CREATE_TABLE_TABLEAU

    Essayez maintenant à coups d’ajouts dans les tables de violer la règle de l’égalité des formats de la toile et du cadre.

    Attention, comme l’intégrité référentielle est mise en œuvre, avant de créer un tableau il aura d’abord fallu créer le type de toile et le type de cadre utilisés pour ce tableau. De même, avant de créer un type de toile ou un type de cadre, il aura d’abord fallu créer le type de format auquel ils font référence.

    Schéma de la base de données :


    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour fsmrel,

    Merci pour ta réponse rapide. La mienne m'a demandée un peu plus de temps...

    AFFICHAGE
    Avant de passer au vif du sujet j'ai une question plus générale.
    Comment fais-tu pour afficher les 1 et plusieurs sur le diagramme Relations ?
    Je trouve les flèches pas très pratiques. Est-ce dû à un paramétrage d'Access ou à la mauvaise définition des jointures que je crée ?

    COURT-CIRCUIT
    Tu as modifié les relations entre les tables en supprimant le court-circuit de la table tbl_Cadre par la jointure 1-plusieurs tbl_Format/k_Format -> tbl_Tableau/Format.
    J'en conclue donc que cette façon de faire n'est pas bonne par principe. Ai-je bien compris ?
    D'un autre côté, les tables TYPE_TOILE et TYPE_CADRE sont en parrallèles dans ton exemple.
    Ce qui me fait penser que c'est plutôt l'organisation de mes tables qui étaient en cause.

    ORGANISATION DES TABLES
    La table "de départ" (côté 1) est celle qui regroupe les éléments communs dans nos deux schémas de Relations.
    Mon raisonnement était de partir de la table TABLEAU, l'objet final.
    Ta solution m'indique qu'il faut raisonner depuis la table commune TYPE_FORMAT ; ce qui est très différent dans le principe.
    Ensuite tu relies tous les k_format en losange avec des liaisons 1-plusieurs.
    J'ai effectivement buté sur cette question : Comment transmettre les éléments communs entre toutes mes tables.
    Et pour finir tu relies "classiquement" les tables TYPE_TOILE et TYPE_CADRE à la table "finale" TABLEAU par des jointures 1-plusieurs.
    Je ne n'aurais pas trouvé tout seul. Merci beaucoup.

    INTEGRITE REFERENTIELLE
    Cela fonctionne à merveille. Cela bloque si je ne rentre pas le même format.
    "Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table 'TYPE_CADRE'.

    => Néanmoins il y a une chose que je souhaiterais faire évoluer.
    Pourquoi suis-je obligé de repréciser le format k_format dans la table TABLEAU ?
    Avec k_toile et k_cadre identiques, on valide déjà le format.
    k_format est redondant mais c'est vrai que je l'avais mis aussi.
    Mon idée était de préciser le format dans TABLEAU et qu'Access ne propose que les TYPE_CADRE et TYPE_TOILE correspondant à ce format. J'aurais ensuite ajouté une liste déroulante.
    Comment peut-on améliorer ce point ?

    CREATION DES TABLES
    J'ai vu que tu as créé les tables avec des relations en Mode SQL.
    Je ne connaissais pas et c'est bien pratique pour sauvegarder des formats de tables dans des fichiers textes.
    Je vais essayer d'intégrer directement les listes déroulantes.

    A bientôt

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Paulo,


    Citation Envoyé par paulo989
    Comment fais-tu pour afficher les 1 et plusieurs sur le diagramme Relations ?
    Je trouve les flèches pas très pratiques. Est-ce dû à un paramétrage d'Access ou à la mauvaise définition des jointures que je crée ?
    On a droit à l’affichage des 1 et plusieurs seulement si on met en œuvre l’intégrité référentielle.

    Partons de zéro : on a les deux tables TYPE_TOILE et TYPE_FORMAT, a priori sans lien entre elles :





    On fait un drag/drop (symbolisé par ne flèche rouge) de l’attribut k_format de la table TYPE_FORMAT (considérée comme parente) vers l’attribut k_format de table TYPE_TOILE (considérée comme enfant) :





    Au résultat, ACCESS affiche la fenêtre « Edit Relationships » (ou son équivalent en français) :





    Pour afficher le lien, il faut cliquer sur le bouton « Create » de la fenêtre « Edit Relationships ». Au résultat :





    Le lien n’est pas bavard, il n’y a ni flèche ni cardinalités... Pour changer cela, on commence par faire un clic droit sur ce lien, ce qui provoque l’ouverture de la fenêtre « Edit Relationships », on y clique sur le bouton « Join Type », ce qui provoque l’ouverture de la fenêtre « Join Properties ». Cette fenêtre contient 3 boutons : le 1er permet d’éviter d’avoir des flèches orientant le lien, les deux autres permettent de l’orienter avec une flèche. Ci-dessous, c’est le bouton 1 qui a été choisi :






    Beaucoup plus important est la mise en œuvre de l’intégrité référentielle, laquelle permet d’interdire les orphelins, à savoir les types de toile qui ne référenceraient pas des types de format, ce qui ferait désordre, en l’occurrence une base de données non valide. Pour garantir l’intégrité référentielle, dans la fenêtre « Edit Relationships » on coche la case « Enforce Referential Integrity » :






    Au résultat, ô magie ! apparaissent les symboles des cardinalités 1 et , signifiant qu’un type de toile fait nécessairement référence à un type de format (tandis qu’un type de format est référencé par 0 ou plusieurs types de toiles) :






    Dans ce exemple, l’orientation par une flèche n’apporte pas de valeur ajoutée, donc je m’en passe. En revanche, dans le cas d’une injection ça peut se révéler utile. Exemple, TYPE_FORMAT fait référence à T :






    A noter qu’ACCESS montre les cardinalités maximales, mais je ne sache pas qu’on puisse afficher les cardinalités minimales. On peut alors préférer modéliser avec un outil comme MySQL Workbench puis exporter les CREATE TABLE vers ACCESS. Exemple de diagramme avec MySQL Workbench (notation « patte de corbeau ») :






    Citation Envoyé par Paulo989
    Tu as modifié les relations entre les tables en supprimant le court-circuit de la table tbl_Cadre par la jointure 1-plusieurs tbl_Format/k_Format -> tbl_Tableau/Format.
    J'en conclue donc que cette façon de faire n'est pas bonne par principe. Ai-je bien compris ?
    Un tableau fait référence à un type de toile, lequel fait lui-même référence à un type de format : le type de format d’un tableau est donc celui de son type de toile : l’association directe de TABLEAU et TYPE_FORMAT est donc inutile, elle est redondante et doit donc disparaître.

    De même, ce tableau fait référence à un type de cadre, lequel fait lui-même référence à un type de format : le type de format d’un tableau est donc aussi celui de son type de cadre, ce qui veut dire là aussi que l’association directe de TABLEAU et TYPE_FORMAT est redondante et doit disparaître.

    Mais bien sûr, pour que tout se passe bien, il est impératif que le type de toile et le type de cadre du tableau soient les mêmes, alors qu'on n'en a aucune garantie... On est en présence du problème vieux comme les bases de données de la contrainte de chemin, problème auquel les professeurs sensibilisent les étudiants : « Il faut éviter les boucles... » Il arrive qu’on puisse supprimer ces boucles, comme ici, mais ça n’est pas toujours possible, auquel cas on procède par exemple comme dans cette discussion...



    Citation Envoyé par Paulo989
    Pourquoi suis-je obligé de repréciser le format k_format dans la table TABLEAU ?
    En l’occurrence, supposons que le tableau P1 fasse d’un côté référence au type de toile T1, lequel fait référence au type de format F1, et de l’autre côté au type de cadre C1, lequel fait référence au type de format F2 : on est piégé, on retombe dans le problème des chemins.

    A noter que les listes déroulantes font partie des traitements et n’ont donc pas à interférer avec la modélisation des données.

    Bref, dans le cadre strict de la modélisation des données, il est nécessaire de propager l’attribut k_format depuis la table TYPE_FORMAT jusqu’à la table TABLEAU, via les tables TYPE_CADRE et TYPE_TOILE. Pour cela, on dote TYPE_CADRE d’une surclé {k_format, k_cadre} et TYPE_TOILE d’une surclé {k_format, k_toile}, surclés référencées toutes les deux par la table TABLEAU : en théorie on a donc pour TABLEAU deux attributs k_format outre les attributs k_cadre et k_toile : la contrainte de chemin est automatiquement garantie en fondant les deux attributs k_format en un seul dans la table TABLEAU :


    
    
    CREATE TABLE TYPE_FORMAT 
    (
            k_format                   AUTOINCREMENT
          , libelle_format             VARCHAR(32)           NOT NULL
        , CONSTRAINT TYPE_FORMAT_PK PRIMARY KEY (k_format)
    ) ;
    
    CREATE TABLE TYPE_CADRE 
    (
            k_cadre                    AUTOINCREMENT
          , reference_cadre            VARCHAR(32)          NOT NULL
          , k_format                   INT                  NOT NULL
        , CONSTRAINT TYPE_CADRE_PK PRIMARY KEY (k_cadre)
        , CONSTRAINT TYPE_CADRE_SK UNIQUE (k_format, k_cadre)
        , CONSTRAINT TYPE_CADRE_FORMAT_FK FOREIGN KEY (k_format) REFERENCES TYPE_FORMAT (k_format)
    ) ;
    
    CREATE TABLE TYPE_TOILE 
    (
            k_toile                    AUTOINCREMENT
          , type_toile                 VARCHAR(32)           NOT NULL
          , k_format                   INT                   NOT NULL
        , CONSTRAINT TYPE_TOILE_PK PRIMARY KEY (k_toile)
        , CONSTRAINT TYPE_TOILE_SK UNIQUE (k_format, k_toile)
        , CONSTRAINT TYPE_TOILE_FORMAT_FK FOREIGN KEY (k_format) REFERENCES TYPE_FORMAT (k_format)
    ) ;
    
    CREATE TABLE TABLEAU 
    (
            k_tableau                  AUTOINCREMENT
          , reference_tableau          VARCHAR(32)           NOT NULL
          , k_format                   INT                   NOT NULL
          , k_toile                    INT                   NOT NULL
          , k_cadre                    INT                   NOT NULL
        , CONSTRAINT TABLEAU_PK PRIMARY KEY (k_tableau)
        , CONSTRAINT TABLEAU_TYPE_TOILE_FK FOREIGN KEY (k_format, k_toile)
              REFERENCES TYPE_TOILE (k_format, k_toile)    
         , CONSTRAINT TABLEAU_TYPE_CADRE_FK FOREIGN KEY (k_format, k_cadre)
              REFERENCES TYPE_CADRE (k_format, k_cadre)    
    ) ;
    
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Paulo,


    Je voudrais faire une mise au point suite à ce que j’ai proposé. Revenons à une situation classique, dans laquelle l’attribut k_format est absent de la table TABLEAU :





    D’où le code SQL :


    
    CREATE TABLE TYPE_FORMAT 
    (
            k_format                   AUTOINCREMENT
          , libelle_format             VARCHAR(32)           NOT NULL
        , CONSTRAINT TYPE_FORMAT_PK PRIMARY KEY (k_format)
    ) ;
    
    CREATE TABLE TYPE_CADRE 
    (
            k_cadre                    AUTOINCREMENT
          , reference_cadre            VARCHAR(32)           NOT NULL
          , k_format                   INT                   NOT NULL
        , CONSTRAINT TYPE_CADRE_PK PRIMARY KEY (k_cadre)
        , CONSTRAINT TYPE_CADRE_FORMAT_FK FOREIGN KEY (k_format)
              REFERENCES TYPE_FORMAT (k_format)    
    ) ;
    
    CREATE TABLE TYPE_TOILE 
    (
            k_toile                    AUTOINCREMENT
          , type_toile                 VARCHAR(32)           NOT NULL
          , k_format                   INT                   NOT NULL
        , CONSTRAINT TYPE_TOILE_PK PRIMARY KEY (k_toile)
        , CONSTRAINT TYPE_TOILE_FORMAT_FK FOREIGN KEY (k_format)
              REFERENCES TYPE_FORMAT (k_format)
    ) ;
    
    CREATE TABLE TABLEAU 
    (
            k_tableau                  AUTOINCREMENT
          , reference_tableau          VARCHAR(32)           NOT NULL
          , k_toile                    INT                   NOT NULL
          , k_cadre                    INT                   NOT NULL
        , CONSTRAINT TABLEAU_PK PRIMARY KEY (k_tableau)
        , CONSTRAINT TABLEAU_TYPE_TOILE_FK FOREIGN KEY (k_toile)
              REFERENCES TYPE_TOILE (k_toile)    
         , CONSTRAINT TABLEAU_TYPE_CADRE_FK FOREIGN KEY (k_cadre)
              REFERENCES TYPE_CADRE (k_cadre)    
    ) ;
    
    
    Mais dans ces conditions, rien n’empêche qu’un tableau fasse référence à une toile d’un certain format et à un cadre d’un autre format.

    L’usage est alors de définir une contrainte interdisant cela. En relationnel pur, on définit cette contrainte ainsi :

    CONSTRAINT CT_truc
    (TABLEAU JOIN TYPE_CADRE) {k_format, k_tableau} = (TABLEAU JOIN TYPE_TOILE) {k_format, k_tableau} ;

    Ce qui se lit : la projection sur les attributs k_format et k_tableau de la jointure (naturelle) des tables TABLEAU et TYPE_CADRE doit être égale à la projection sur ces mêmes attributs de la jointure naturelle des tables TABLEAU et TYPE_TOILE, suite à quoi on peut dormir sur ses deux oreilles, les infractions ne pourront pas se produire. A son tour, la norme SQL prévoit en ce sens une instruction adaptée, à savoir CREATE ASSERTION. Le problème est que les SGBD commercialisés n’implémentent pas cette instruction, on est donc coincés. L’usage est alors de se rabattre sur la mise en oeuvre de triggers, mais ceux-ci sont prévus pour produire plus que pour contrôler. Qui plus est, développer des triggers avec ACCESS ça n’est pas de la tarte, on a plutôt envie de tout envoyer balader...

    En conséquence, j’ai proposé une solution dans laquelle on utilise des surclés. Mais attention ! si l’on y regarde de plus près, on constate que la table TABLEAU, dans laquelle est présent l’attribut k_format, est d’une certaine façon délinquante ! En effet, elle enfreint la 3NF (troisième forme normale)... Et tout théoricien, tout professeur frais émoulus s’empresseront de répéter que c’est très mal, il faut « nor-ma-li-ser » ! C'est-à-dire évacuer l’attribut peccamineux k_format de la table TABLEAU. Mais on peut faire une entorse à la théorie : en l’occurrence, les clés étrangères de la table TABLEAU font référence à des surclés, ce qui nous empêche en fait de faire des bêtises tout en enfreignant la 3NF. Ainsi, en relationnel pur ou dans le cadre de la norme SQL, normalisons en 3NF et mettons en oeuvre des contraintes, toutefois, avec les SGBD du marché, utilisons de préférence la solution la plus simple mais avec laquelle la fiabilité n'est en rien sacrifiée.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

Discussions similaires

  1. [PageControl] Raccourcis claviers court-circuités
    Par Manopower dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/09/2009, 16h52
  2. [Disque Dur] Problème de court-circuit
    Par saih_tam dans le forum Composants
    Réponses: 9
    Dernier message: 20/05/2009, 15h03
  3. Réponses: 2
    Dernier message: 06/07/2007, 10h41
  4. Réponses: 13
    Dernier message: 09/04/2007, 13h20
  5. Réponses: 4
    Dernier message: 16/03/2004, 18h03

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