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 :

table avec la clé comme unique champ


Sujet :

Schéma

  1. #1
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut table avec la clé comme unique champ
    Bonjour,

    J'aimerais stocker dans une base de données les questions-réponses d'une FAQ. Comme ces questions-réponses sont dans plusieurs langues, je pensais stocker ces données dans 2 tables :

    la première contiendrait juste un identifiant pour chaque question-réponse
    la seconde table contiendrait :
    FAQ_ID : clé étrangère
    LANG : langue
    QUESTION : contenu de la question dans la langue concernée
    ANSWER : contenu de la réponse dans la langue concernée

    Ce que je trouve gênant c'est que la première table ne contient qu'un identifiant, mais cela permet :
    - d'avoir une table où une ligne correspond à un objet. Ce qui est pratique pour le mapping objet/relationnel
    - d'être plus évolutif : si je veux ajouter des champs qui ne sont pas des textes mais qui sont propres à une question-réponse comme par exemple des statistiques, je pourrais les ajouter directement dans ma première table.

    Mais bon, je trouve ça un peu embarrassant d'avoir une table avec juste un id...

    Qu'en pensez-vous ?
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  2. #2
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 378
    Points
    378
    Par défaut
    Je n'utiliserais qu'une seule table composée de faqid (numéro), lang, question et answer. La clé primaire serait le couple (faqid,lang). Un même faqid permettrait de savoir que la question/réponse peut être stockée en plusieurs langues.

  3. #3
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Le problème est que j'ai besoin d'avoir une table où une ligne représente un objet pour le mapping objet relationnel. Dans le cas que tu proposes, j'utilise autant de ligne qu'il y a de langue pour une même question-réponse. C'est pourquoi j'ajoute un table avec juste les id qui permet d'avoir l'équivalence une ligne = une instance d'objet.
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour !! Je comprend ton probleme. Et bien si tu veut vraiment conserver cette table avec selement l'identifiant, tu peu utiliser 3 tables :

    - QUESTION (idQuestion)
    - CONTENU (idQuestion, idLangue, Question, Answer)
    - LANGUE (idLangue, LibelleLangue)

    La table QUESTION comporte seulement l'id de la question. Le mapping sur ette table sera alors possible facilement. Tu pourra eventuellement jouter des information telle que le type de question, le domaine de la question mais ca c'est à toi de voir.

    La table LANGUE comporte l'ensemble des langues dans lesquelles les questions peuvent etre posés. Il y un un identifiant et le libelle de la langue (ex : Francais, Anglais,....)

    La table CONTENU fais le lien entre les 2 tables precedentes. Elle comporte en clef primaire, le couple idQuestion et IdLangue. (Comme l'a dis Soutou). De plus elle contientaussi le libelle de la question et le libelle de la reponse dans la langue correspondante.

    => AVANTAGE : Le mapping peut etre facilement réaliser. De plus il est facilement possibled'ajouter des attrbut supplemntaire à une quesion en particulier sans forement qu'il y est des redondances si une question est ecrite en plusieur langue.

    Voilà j'espere t'avoir eclairé.

    Bon courage

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/09/2012, 15h30
  2. création d'un constructeur avec l'ID comme unique paramètre
    Par ROUGE87 dans le forum Général Java
    Réponses: 1
    Dernier message: 15/04/2011, 17h16
  3. Réponses: 1
    Dernier message: 08/12/2010, 12h04
  4. concatener nom de table avec le contenu d'un champ
    Par maximenet dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 28/11/2007, 15h35
  5. Réponses: 3
    Dernier message: 13/12/2006, 01h20

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