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 :

[MCD]Base de donnees multilingues Comment Faire ?


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [MCD]Base de donnees multilingues Comment Faire ?
    Bonjour tout le monde,


    Je suis en charge de concevoir une base de donnees alors je me suis lance sur la conception avec Merise. Je suis en train de developper mon MCD mais je n'ai que peu de souvenir, et peu d'experience en Merise.

    Je cherche a concenvoir une base de donnees multilingues devant supporter au moins 4 langues : francais, anglais, espagnol et allemand.

    J'ai concu un bout de mon database mais je dois pouvoir traduire certains de champs de plusieurs tables.

    Le Mcd est en piece jointe


    Je souhaiterais trouver une solution me permettant de traduire la description et les noms des mes devices dans les 4 langues. Aussi , je voudrais traduire le nom, description des differentes familles de devices. La meme chose pour les profiles.

    Avez vous une idee de comment faire.
    Merci infiniment
    Images attachées Images attachées  

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    c'est très simple : chacune des tables voulant intégrer du texte multilingue doit comporter une référence sur une table qui contient le texte

    exemple

    table produit
    ref_message

    table message
    id_message
    ref_lang
    text

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci d'avoir repondu .

    Si je comprend bien,

    Je vais doubler toutes les tables qui contiendront mes textes à traduire.
    Du coup, je vais perdre en performance ? non ? Est ce possible de tout regrouper en une et meme seule table ?

    Sinon j'ai compris ta solution mais comment la concevoir avec Merise ?
    Faut - il une association entre la table contenant les references et la table avec les traductions.

    Merci encore et desole mon niveau n'est pas tres bon mqis j'aime apprendre LOL

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Mais non tu doubleras rien du tout,

    les tables qui contiennent du texte translatable devont comporter a la place du champ texte une reference sur la table message

    exemple

    table article

    id
    ref_description = 1
    blabla
    tototo

    table message
    id_message = 1
    lang = 'fr'
    text = 'description de l'article'
    class_id = '1'

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    correction

    et il faut lire un objet comporte 1 ou plusieurs messages

    un message est lié à une entité, pour une ou plusieurs languges

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Coucou Alexandre,

    Je tenverrai ce soir mon mcd modifie. En fait j'aimerai pouvoir en une seule requete je veux selectionner tous les profiles, tous les devices et toutes les devices FROM toutes les Tables Where Language_id = 'French'

    Avec ta solution je suis a chque fois oblige pour toutes mes tables specifie la langue, non ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Changement de conception
    Salut Alexandre,


    J'ai finalement opte poour une autre solution, celle de creer une unique table contenant toutes les champs de toutes les tables que je voulais traduire. Pour cela, Dans la table translation, je dois specifier le nom de la table, lattribut a traduire, la langue et sa traduction. De cette facon, je peux traduire tous les champs description et tous les champs noms de mes tables Mais la question maintenant est comment lier cette unique table a toute mes tables et comment creer une requete permettant de selectionner pour un device precis, son et sa description dans une langue precise ?

    Je vais travailler sur une base access apres>

    Voila

    Merci pour ton aide a lavance
    Images attachées Images attachées  

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    tu ne le la lies pas dans un sens relationel de cette manière

    tu peux accéder par la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select translation.translation, un champ d une autre table from 
    translation, device_info
    where translation.table_name = 'device_info' and translation.column_name =
    'device_description' where translation.language = (SELECT language_id FROM langue WHERE language = 'Francais' ) and translation.ref_object = device_id and device_id = 1
    tu dois ajouter un champ ref_object dans ton entité translation

    c'est un peu lourd comme facon de faire tu crois pas ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Jai implemente l'autre methode d un point de vue relationnel donc pour toutes les tables qui contenait des champs a traduire, javais une seconde table avec les traductions dans toutes les langues que je souhaitais.

    J'ai essaye ca sous access. Et jobtenais pour mon exemple :

    Table_Device
    device_id Device_name Device_description
    1 Moteur electrique quelque chose en francais
    2 Variateur de vitesse quelque chose en francais


    Table_Device_Traduite
    Device_id Langue_id Traduction_nom Traduction_decription
    1 1(anglais) Electric_motor something in english
    ....


    Et je faisais ca avec toutes mes tables, le probleme a la fin cest que je demultiplier les nombres d'enregistrements.

    Javais trois langues pour les devices, 3 langues pour profiles, trois pour autre chose, du coup je me retrouvais avec 3 *3 *3 enregistrements. Ce qui nai pas bon.

    Lautre methode est un peu lourde mais je ne multiplie pas les enregistrements, et pour remplir la table de traduction cest tout au meme endroit donc je me dis que c est peu etre plus efficace.

    Voila

    jespere que jai ete clair. Mais je ne suis pas un expert de la base de donnees.

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    tu ne le la lies pas dans un sens relationel de cette manière

    tu peux accéder par la requete suivante


    Code :
    select translation.translation, un champ d une autre table from
    translation, device_info
    where translation.table_name = 'device_info' and translation.column_name =
    'device_description' where translation.language = (SELECT language_id FROM langue WHERE language = 'Francais' ) and translation.ref_object = device_id and device_id = 1
    tu dois ajouter un champ ref_object dans ton entité translation

    c'est un peu lourd comme facon de faire tu crois pas ?




    Et pour selectionner plusieurs traductions en une requete, penses tu qu il est possible de trouver une requete ?

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

Discussions similaires

  1. Comment faire déconnecter les utilisateurs d'une base
    Par ENIT-Info dans le forum Access
    Réponses: 23
    Dernier message: 28/02/2017, 15h57
  2. Réponses: 15
    Dernier message: 09/10/2011, 10h16
  3. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 16h07
  4. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 11h59

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