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 :

Du bon usage des langues [MCD]


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de GAEREL
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 160
    Par défaut Du bon usage des langues
    Bonjour à tous.

    J'essaie de faire un MCD "propre" ayant une partie "tables de références".
    Ces tables sont sous la forme : "Code - Libellé" (cf . Image 1)

    ex : Table des "Types"
    T1;Nom Type 1
    T2;Nom Type 2
    etc..

    Je voudrais intégrer proprement la notion de langues (traduction des libelles)
    Naturellement j'arrive à un MCD comme celui décrit dans l'image 2
    Avec 2 entités supplémentaires (Libelle et Langue) et une association portant l'information de "libelle traduit"
    Mes entités de références sont alors en lien avec le 'Libelle'

    Lors du passage du MCD au MPD j'obtiens logiquement une table de 'libelle' qui ne contient que des ID et dont l'utilité est nulle...

    Est-ce mon MCD qui est erroné ou dois-je "forcer" dans mon MPD les associations avec la table "Libelle_langue" et détruire la table "libellé" ?

    merci de vos conseils avisés
    Images attachées Images attachées    

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour GAEREL,

    Je ne connais pas très bien le formalisme que tu utilises, mais je pense que ton MCD est erroné.

    Suggestion (dans JMerise) :



    Pas trop le temps de commenter, ce soir.
    Images attachées Images attachées  

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


    @ Gaërel,

    Citation Envoyé par GAEREL Voir le message
    Lors du passage du MCD au MPD j'obtiens logiquement une table de 'libelle' qui ne contient que des ID et dont l'utilité est nulle...
    Est-ce mon MCD qui est erroné ou dois-je "forcer" dans mon MPD les associations avec la table "Libelle_langue" et détruire la table "libellé" ?
    Si vous faites disparaître la table LIBELLE, les clés étrangères portées par les tables Type de truc et Categorie de machin devront faire référence à la clé primaire de la table LIBELLE_LANGUE, donc à la paire d’attributs {CodeLangue, IdLibelle}, et la table TYPE de truc ressemblera à ceci :

    IdType    CodeLangue    IdLibelle
         1    fr                    1
         1    en                    1
         2    fr                    2
         2    en                    2
         3    fr                    3
         3    en                    3
       ...    ...                 ...
    C'est-à-dire que chaque type de truc devra désormais faire référence à la table LIBELLE_LANGUE autant de fois qu’il y a de langues (avec pour conséquence que l'attribut CodeLangue devra participer à la clé primaire de la table Type de truc en compagnie de IdType ).

    En fait quand vous dites que l’utilité de la table LIBELLE est nulle, vous allez un peu vite, car cette table est un point d’ancrage, une référence qui vous permet justement de faire abstraction des langues au niveau de la table Type de truc, c'est-à-dire de ne pas multiplier le nombre de lignes de cette table par le nombre de langues utilisées par l’application.


    @Richard,

    Puisque vous établissez une ternaire entre les entités-types TYPE, CATEGORIE et TABLE_CHAMP, par définition elles ne sont pas indépendantes les unes des autres : un type entretient une relation avec une catégorie en même temps qu’avec un champ de table. Exemple :
    — Le champ H1 est lié au moins et au plus au type T1 et au moins et au plus à la catégorie C1.

    — Le type T1 est lié au plus au champ H1 et au plus à la catégorie C1.

    — La catégorie C1 est liée au plus au champ H1 et au plus au type T1.

    Mais je ne sache pas que la dépendance que vous avez établie entre TYPE et CATEGORIE fasse partie du corpus de règles inféré du MCD de Gaërel.

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour Fsmrel,

    Citation Envoyé par Fsmrel
    une ternaire entre les entités-types TYPE, CATEGORIE et TABLE_CHAMP, par définition elles ne sont pas indépendantes les unes des autres : un type entretient une relation avec une catégorie en même temps qu’avec un champ de table.
    ==> non, il n'y aucune dépendance. Mais, je n'avais pas trop le temps de développer, hier. Je m'y colle maintenant :

    Le contenu des tables serait le suivant :

    Type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Id
    --
    1
    2
    3
    4
    ...

    Categorie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Id
    --
    1
    2
    3
    4
    5
    ...
    Table_Champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Table        Id_Element_Table
    --------     -----------------
    "Type"       1
    "Type"       2
    "Type"       3
    "Categorie"  1
    "Type"       4
    "Categorie"  2
    "Categorie"  3
    "Categorie"  4
    "Categorie"  5
    ...
    Langue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IdLangue  Nom_Langue
    --------  ---------------
    1         Français
    2         Anglais
    3         Espagnol
    ...
    Table_Champ_Langue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Table        Id_Element_Table IdLangue  Texte
    --------     ---------------- --------  ------------------------------
    "Type"       1                1         Libellé type1 en français
    "Type"       2                1         Libellé type2 en français
    "Type"       3                1         Libellé type3 en français
    "Type"       4                1         Libellé type4 en français
    "Categorie"  1                1         Libellé catégorie1 en français
    "Categorie"  2                1         Libellé catégorie2 en français
    "Categorie"  3                1         Libellé catégorie3 en français
    "Categorie"  4                1         Libellé catégorie4 en français
    "Categorie"  5                1         Libellé catégorie5 en français
    "Type"       1                2         Libellé type1 en anglais
    "Type"       2                2         Libellé type2 en anglais
    "Type"       3                2         Libellé type3 en anglais
    "Type"       4                2         Libellé type4 en anglais
    "Categorie"  1                2         Libellé catégorie1 en anglais
    "Categorie"  2                2         Libellé catégorie2 en anglais
    "Categorie"  3                2         Libellé catégorie3 en anglais
    "Categorie"  4                2         Libellé catégorie4 en anglais
    "Categorie"  5                2         Libellé catégorie5 en anglais
    "Type"       1                3         Libellé type1 en espagnol
    "Type"       2                3         Libellé type2 en espagnol
    "Type"       3                3         Libellé type3 en espagnol
    "Type"       4                3         Libellé type4 en espagnol
    "Categorie"  1                3         Libellé catégorie1 en espagnol
    "Categorie"  2                3         Libellé catégorie2 en espagnol
    "Categorie"  3                3         Libellé catégorie3 en espagnol
    "Categorie"  4                3         Libellé catégorie4 en espagnol
    "Categorie"  5                3         Libellé catégorie5 en espagnol
    ...
    Mais, sans doute, n'est-ce pas très académique, côté Merise...

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Je ne connais rien dans ces MCD et autres, mais je vous explique un peu comment moi je fais - et ferais :


    • Mes objets référenceraient des choses comme "Type1_L", "Type2_L", et...

    • J'aurais ensuite un fichier, une table, ou ce que vous voulez, multilingue, du style

      langages=français,english,español,...

      Type1_L = { "Oui", "Yes", "Si" ..}
      ...
      ou

      langages=français,english,español,...
      et
      français.txt
      Type1_L Oui
      ..
      english.txt
      Type1_L Yes
      ..

    • Et 2 fonctions : setlanguage et gettext ( Char_ID ) (par exemple gettext("Type1_L"))..


    M'enfin, hein, ça c'est juste mon idée ..

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour Souviron34,

    Hum... pas très pratique à exploiter... par exemple (entre autres) :

    langages=français,english,español,...

    Type1_L = { "Oui",, "Si", ..} ==> pas encore de traduction en anglais ;
    Type2_L = { "Oui", "Yes",, ..} ==> pas encore de traduction en espagnol ;
    Type3_L = { ,, "Si", ..} ==> pas encore de traduction en fraçais et en anglais ;
    Type4_L = { "Oui",,, ..} ==> pas encore de traduction en anglais et en espagnol ;
    ...
    ==> il faut jouer avec les virgules...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Du bon usage des FormEvents
    Par exotux dans le forum Symfony
    Réponses: 4
    Dernier message: 23/01/2014, 11h39
  2. [2.x] Bon usage des Bundle ?
    Par XIII2008 dans le forum Symfony
    Réponses: 7
    Dernier message: 02/03/2012, 14h48
  3. Bon usage des Sessions
    Par Rezouce dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2008, 10h47
  4. [Delphi - Firebird] Comment faire bon usage des transactions?
    Par Lili21 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 07/05/2007, 20h59
  5. Quel est le bon usage des fichiers "*.bpk" ?!
    Par bnadem35 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2006, 17h31

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