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 :

Base de données Multilingue [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 22
    Points
    22
    Par défaut Base de données Multilingue
    Bonjour tout le monde,


    Je suis en charge de concevoir une base de données. Je suis en train de developper mon MCD mais je galére un peu pour la traduction

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

    J'ai conçu mon database mais je dois pouvoir traduire les champs "lib" des table Produit / Type_Produit / Type_Transport / Type_Doc ( entourés en rouges).

    Le Mcd est en pièce jointe


    Je ne veux pas intégrer la solution du doublage de champs dans ma base de donnée , trop lourd et pas pratique !

    J'aimerais intégrer une table "Traduction" et "Langue" mais je comprends vaguement le fonctionnement.

    Si quelqu'un pourrais-me donner un coup de pouce , ca serai top
    Nom : BaseDoc.JPG
Affichages : 4983
Taille : 158,2 Ko
    Merci infiniment

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    ces deux discutions ont des approches différentes :
    http://www.developpez.net/forums/d60...d-multilingue/
    http://www.developpez.net/forums/d13...usage-langues/


    N'oubliez pas, aussi, que l'application peut avoir une couche multilingue.

    C'est assez pratique pour tout ce qui est table de ref.

  3. #3
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour DeadPooleuh,

    Une suggestion, difficile à modéliser à l'intérieur de ton schéma :

    Table(IdTable, NomTable, ...) ==> index unique sur NomTable ;
    Champ(IdChamp, #IdTable, NomChamp, ...) ==> index unique sur {IdTable, NomChamp} ;
    Objet(#IdChamp, IdRecord, ...) ;
    Langue(IdLangue, NomLangue, ...) ;
    Champ_Langue(#IdChamp, #IdRecord, #IdLangue, Traduction).

    Un trigger devra retrouver, dynamiquement, les Id en fonction du nom des tables et du nom des champs.

    Vite fait...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 22
    Points
    22
    Par défaut
    Et si je modifie mes 6 tables de la maniére suivante en prenant par exemple la table produit que je couple avec une table ProduitLangue qui celle-ci sera lié à Langue , cela peut marcher sans probléme ?

    Produit(idProduit)

    ProduitLangues(idProduit,idLangues,lib_produit)

    Langue (idLangues,langue_en,langue_fr)

    Cordialement et merci pour vos réponses

  5. #5
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par DeadPooleuh
    cela peut marcher sans probléme ?

    Produit(idProduit)
    ProduitLangues(idProduit,idLangues,lib_produit)
    Langue (idLangues,langue_en,langue_fr)
    ==> oui, mais ce n'est pas très évolutif :

    ProduitLangues(#idProduit,#idLangues,lib_produit) ==> que se passera-t-il si, à l'avenir, un champ ajouté à la table Produit doit être traduit ?...
    Langue(idLangues,langue_en,langue_fr) ==> : peux-tu expliquer ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 22
    Points
    22
    Par défaut
    Désolé pour la table langue j'ai rajouté un champ de trop

    Langue (id_langue , language )

    Donc du coup tu as raison , là je suis bloqué et si je crée une seconde base externe "traduction" ?

  7. #7
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par DeadPooleuh
    et si je crée une seconde base externe "traduction" ?
    ==> : peux-tu expliquer ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Apprenti développeur
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Points : 22
    Points
    22
    Par défaut
    Pas de soucis Richard_35 !

    Donc je garde ma base de donnée actuelle avec mon MCD mais à coté je crée une seconde base qui contiendra la traduction de mes 6 tables que je souhaite traduire.

    Est-ce une façon normalisé de procéder ? Je pense que sur papier sa marche , il y aurai un lien virtuel entre les deux base.

    peut on faire une jointure entre différentes bases de données en pouvant biensur sélctionner les tables pour récupérer les infos nécéssaire?

    Je vois pas trop comment + l'expliquer ^^

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Je pense que la bonne solution est là :
    Citation Envoyé par DeadPooleuh Voir le message
    Et si je modifie mes 6 tables de la maniére suivante en prenant par exemple la table produit que je couple avec une table ProduitLangue qui celle-ci sera lié à Langue , cela peut marcher sans probléme ?

    Produit(idProduit)

    ProduitLangues(idProduit, idLangues,lib_produit)

    Langue (id_langue , language )

    Cordialement et merci pour vos réponses
    Citation Envoyé par Richard_35
    ProduitLangues(#idProduit,#idLangues,lib_produit) ==> que se passera-t-il si, à l'avenir, un champ ajouté à la table Produit doit être traduit ?
    Prenons la table de départ suivante :
    Produit(idProduit, prd_libelle_long, prd_libelle_court)

    Puisque, a priori, tous les produits auront un libellé long et un libellé court (on chasse le bonhomme NULL des tables), et bien la table ProduitLangue devient celle-ci :
    ProduitLangue(idProduit, idLangues,prd_libelle_long, prd_libelle_court)

    En fait, chaque fois que j'ajoute une information qui doit être traduite dans une table, si j'ai déjà une table des traductions, il suffit d'y ajouter cette information.

    Nota : j'ai mis la table ProduitLangue au singulier car il n'y aura bien qu'une seule langue et un seul produit par ligne de la table.

  10. #10
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Philippe,

    Et si à l'avenir, et pas forcément au même moment, il faut traduire :
    • lib_sujet de la table Sujet ;
    • lib_site de la table Site ;
    • lib_future_table d'une future table ;
    • ...

    ?

  11. #11
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour DeadPooleuh,

    Est-ce une façon normalisé de procéder ? Je pense que sur papier sa marche , il y aurai un lien virtuel entre les deux base.
    ==> oui. Il s'agit d'un MCD orienté "système" faisant intervenir des métadonnées (le nom des tables et des champs en variables). Il y a donc bien 2 MCD en jeu. A noter que ce système permettrai, également, de gérer d'autres attributs liés aux champs de table.

  12. #12
    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
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour DeadPooleuh,

    Histoire de finir le job...

    Nom : Capture.JPG
Affichages : 2625
Taille : 43,4 Ko

    Donnant :

    Table(NomTable, ...) ;
    Champ(NomChamp, #NomTable, ...) ;
    Objet(#NomChamp, #INomTable, IdRecord, ...) ;
    Langue(IdLangue, NomLangue, ...) ;
    Traduire(#NomChamp, #NomTable, #IdRecord, #IdLangue, Traduction, ...).

    A noter :
    • remplacement des Id par les noms des tables/champs (personnellement, je préfère les Id, mais ça simplifie le MCD) ;
    • les liens relatifs (1,1) permettent de propager l'identifiant de l'entité de référence vers l'entité cible.

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

Discussions similaires

  1. [MySQL-5.1] Une base de données multilingue gérée avec des vues
    Par juanitox dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/07/2014, 16h27
  2. [ZF 1.11] conception base de données multilingue
    Par all-developpeur dans le forum Zend_Db
    Réponses: 0
    Dernier message: 18/10/2013, 10h16
  3. multilingue schéma base de données pour application web
    Par nassim75 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 23/05/2013, 16h34
  4. [MySQL] Site multilingues et bases de données
    Par redah75 dans le forum PHP & Base de données
    Réponses: 61
    Dernier message: 02/09/2010, 19h34
  5. Base de donnée Multilingue
    Par Akumakuro dans le forum Schéma
    Réponses: 2
    Dernier message: 08/04/2007, 16h13

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