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 :

Structure d'une base


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Peintre automobile
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Peintre automobile

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Structure d'une base
    Bonjour,
    Je débute avec MySQL. J'aurais besoin de vos conseils pour la création de mon site.

    C'est un site de vocabulaire de langue pour aider les élèves à apprendre leurs vocabulaire d'allemand, ou d'anglais.

    Actuellement je n'ai qu'une langue. j'ai structuré ça de la façon:

    Compte: langue
    Base: langue
    dans la base j'ai des table $nom_voc qui contienne chacune 3 champs id/fr/de

    J'aimerai maintenant ajouter une nouvelle langue. Quand on clique sur le drapeau de la langue ça change de base de donnée ($_SESSION['base_de_donnee']=DE)
    Comment pensez-vous que je dois faire? Faire 2 base de donnée?

    Compte: langue
    Base: DE
    Base: EN
    + dans chaque base c'est vocabulaire, ou créer un compte différent?

    Merci d'avance pour votre réponse.

  2. #2
    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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si je comprends bien, tu veux enregistrer la traduction de mots en français vers une autre langue.

    Règle de gestion :
    Un mot peut être traduit en plusieurs langues et une langue peut traduire plusieurs mots.

    MCD :
    Mot -0,n----Traduire----0,n- Langue

    Tables :
    Langue (lng_id, lng_libelle)
    Mot (mot_id, mot_libelle)
    Traduction (trd_id_mot, trd_id_langue, trd_traduction)

    Remplissons les tables...
    Langue (lng_id, lng_libelle)
    1, Anglais
    2, Allemand
    3, Russe

    Mot (mot_id, mot_libelle)
    1, Informatique
    2, Ordinateur

    Traduction (trd_id_mot, trd_id_langue, trd_traduction)
    1, 1, Computing
    1, 2, Informatik
    1, 3, Вычисление с помощью компьютера
    2, 1, Computer
    2, 2, Computer
    2, 3, Компьютер

    Quelle est la traduction de "Ordintaeur" dans toutes les langues présentes ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT m.mot_libelle AS Mot_français,
      l.lng_libelle AS langue,
      t.trd_traduction AS traduction
    FROM Mot m
    LEFT OUTER JOIN Traduction t ON t.trd_id_mot = m.mot_id
      LEFT OUTER JOIN Langue l ON l.lng_id = t.trd_id_langue
    WHERE m.mot_libelle = 'Ordinateur'
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Peintre automobile
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Peintre automobile

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Whaouuuu! Pour une réponse c'est une réponse!
    Merci Phil! Par contre je ne suis pas sûr d'avoir bien tous compris. Je ferais un effort de compréhension demain matin, la tête bien reposée.
    Par contre je crois qu'il risque d'avoir un problème. Je ne vais pas traduire tous les mots.
    Sur mon site l'utilisateur rentre son propre vocabulaire. Si à l'école cette semaine il doit apprendre les noms des principaux animaux en anglais, il séléctionne le site en EN. Puis entre:
    Langue de base: Un chat
    Langue à apprendre (en): A cat
    ...
    Ensuite il peut aller sur la page exercice pour s'entrainer! Ex: Traduisait le mot "Un chat". L'ordinateur lui dit si c'est juste ou faux.

    Voilà en gros le concept. Mais un autre élève germanique rentrera peut-être:
    Langue de base: Ein Katz
    Langue à apprendre(en): A cat

    Donc je pense pas qu'il faut entrer tous ça sur la même donnée.
    En plus de ça c'est l'utilisateur qui va créer sont nouveau vocabulaire.
    Exemple:
    Création du vocabulaire: Voc Lektion 3 p.36
    Commantaire: Vocabulaire à apprendre pour mardi 10.08.10
    Ajouter des mots dans le vocabulaire "Voc Lektion 3 p.36" : un chat - eine Katze...

    Je pense donc que la séparation des langues est nécessaire, et le fais de modifier les tables pour chaque vocabulaire aussi.

    Je ne suis pas sûr que mon approche soie bonne.

    Merci de votre aide.

  4. #4
    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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Alors puisqu'on peut aller de n'importe quelle langue vers n'importe quelle autre, il faut modifier un peu la structure...

    Gardons la table des langues :
    Langue (lng_id, lng_libelle)

    Modifions la table des mots :
    Mot (mot_id, mot_id_langue, mot_mot)

    Modifions la table des traductions :
    Traduction (trd_id_mot_origine, trd_id_mot_destination)

    Quelle est la traduction de "Ordinateur" du français vers l'anglais ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT m1.mot_mot AS mot_origine,
      l1.lng_libelle AS langue_origine,
      m2.mot_mot AS mot_traduit,
      l2.lng_langue_destination
    FROM Mot m1
    INNER JOIN Langue l1 ON l1.lng_id = m1.mot_id_langue
    LEFT OUTER JOIN Traduction t ON t.trd_id_mot_origine = m1.mot_id
      LEFT OUTER JOIN Mot m2 ON m2.mot_id = t.trd_id_mot_destination
        INNER JOIN Langue l2 ON l2.lng_id = m2.mot_id_langue
    WHERE m1.mot_mot = 'Ordinateur'
      AND l1.lng_libelle = 'Français'
      AND l2.lng_libelle = 'Anglais'
    L'éventuel petit défaut de cette modélisation, c'est qu'elle oblige à avoir deux lignes par couple de mots dans la table des traductions ; une fois du français en langue d'origine vers l'anglais en langue de destination et une autre fois de l'anglais en langue d'origine vers le français en langue de destination.

    M'enfin c'est l'idée de base parce qu'il te faudra peut-être aussi prendre en compte que la langue de Shakespeare s'appelle 'Anglais' en français et 'English' en anglais ou 'Английский язык' en russe !
    Il est un peu tard quand même pour que j'y réfléchisse !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Peintre automobile
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Peintre automobile

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonsoir, bonjour.
    Je vous prie de m'excuser de ne pas avoir fait suivre cours à la discutions. J'ai eu pas mal de truc à faire, pas eu le temps de vraiment m'occuper de ça.

    Mais j'ai tous de même eu le temps de coder et réfléchir durant les nuits.
    J'ai créer des comptes utilisateurs, j'ai pas mal changer de structure, mais j'arrive enfin avec quelques chose "d'utilisable".

    Voici là structure des BD:
    Table:
    user(id_user, nom_user, id_classe, id_ecole, admin)
    ecole(id_ecole, nom_ecole)
    classe(id_classe, id_ecole)
    voc(id_voc, langue, nom_voc, id_ecole, id_classe)

    Lorsque un nouveau vocabulaire est créer, il est référencé dans la table "voc", et les mots sont placé dans leur BD (de,fr,en,it...) qui elles contiendront des tables nommé par id_voc.

    Exemple:
    18(id_mot, langue_initiale, traduction)

    Tous fonctionne au mieux!
    Qu'en pensez-vous?
    Je peux clore ce sujet?

  6. #6
    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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La présence de la clé étrangère "id_ecole" dans la table "classe" veut dire qu'une classe n'est que dans une seule école, ce qui est logique.
    Répéter cette clé étrangère dans les tables user et voc est inutile puisqu'on remonte à l'école via la classe.
    Sauf si vous avez voulu faire de l'identification relative, ce qui est une bonne chose, mais alors l'ordre des colonnes, et de la clé primaire, dans la table "classe" est plutôt (id_ecole, id_classe). Et si cet id_classe représente simplement le numéro réel de la classe tel qu'elle est nommée dans l'école par le personnel, alors il vaut mieux appeler cette colonne num_classe qui a une signification réelle.

    Lorsque un nouveau vocabulaire est créer, il est référencé dans la table "voc", et les mots sont placé dans leur BD (de,fr,en,it...) qui elles contiendront des tables nommé par id_voc.

    Exemple:
    18(id_mot, langue_initiale, traduction)
    Là par contre, je n'ai rien compris !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  2. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  3. Importer la structure d'une base de donnée dans un combobox
    Par hanines dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2005, 22h41
  4. lire la structure d'une base de données
    Par ilyassou dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 31/08/2005, 07h00
  5. exporter la structure d'une base Sybase en ascii
    Par Jean-Cyp dans le forum Sybase
    Réponses: 5
    Dernier message: 05/11/2002, 16h15

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