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

 MySQL Discussion :

du schéma relationnel à la requete sql


Sujet :

MySQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut du schéma relationnel à la requete sql
    Bonjour ,

    En faisant un petit test pour savoir ce que j'ai compris du passage du mcd à la requete sql.Je me suis rendu compte que je n'avais pas compris grand chose.
    Voilà mon problème :
    je veux faire une sorte de dictionnaire.
    J'ai des mots et chaque mot peut avoir plusieurs sens,mais un sens peut
    également correspondre à plusieurs mots.
    Donc entre les entités mot et sens j'ai une relation de type M-N :
    J'ai donc selon la règle de passage des mcd au schéma relationnelle :

    mot (idMot,genre,...)
    sens (idSens,attribut...)
    et une troisième table correpondant à la relation :
    son identifiant est consituté par la concaténation des identifiants des 2 tables
    précédentes :
    sensMot(idMot_idSens...)
    Et une contrainte d'intégrité référentielle doit être déclarée.
    Mais quand doit être déclaré cette table lors de la création de la table sens ,ou bien mot ou bien de la table sensMot.

    Volià ce que j'ai fait mais ça ne prend pas en compte les contraintes entre tables.
    create table mot (idMot int primary key,genre varchar 25)
    create table sens (idSens int primary key,attribut1 type1)
    create table sensMot (id_sensMot int PRIMARY KEY , id_mot int , id_sens int, foreign key id_mot references mot (id_mot) , foreign key id_sens references sens (id_sens))
    Y a t il des choses qui m'ont échappées et comment et surtout où exprimer la contrainte ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 815
    Billets dans le blog
    14
    Par défaut
    Pour commencer, tu as compris le passage du MCD aux tables dans le cas d'une association M,N ; il faut bien une table associative.

    Par contre, tu dis toi-même :
    son identifiant est consituté par la concaténation des identifiants des 2 tables
    précédentes
    Mais tu ajoutes un identifiant clé primaire à la table associative !

    Donc il faudrait plutôt un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table sensMot (
      id_mot int , id_sens int, 
      primary key (id_mot, id_sens) 
      foreign key (id_mot) references mot (id_mot) , 
      foreign key (id_sens) references sens (id_sens)
    )
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut
    Merci de la réponse rapide.
    Je fais le test et je reviens

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut

    Par contre, tu dis toi-même :

    Citation:
    son identifiant est consituté par la concaténation des identifiants des 2 tables
    précédentes

    Mais tu ajoutes un identifiant clé primaire à la table associative !
    J'avais mal compris le mot concaténation,je pensais qu'il fallait mettre les identifiants bout à bout pour en créer un nouveau.Merci c'est déjà plus clair.

    Par contre une chose n'est pas clair. Comment doit se faire l'insertion d'un nouveau mot et comment faire le lien avec son sens.

    Pour l'instant je fais :
    insert into mot (mot,genre) values ("le mot","son genre");
    Puis pour son sens je fais
    insert into sens (sens) values ("le sens du mot");
    Pour faire le lien je dois sureemnt utiliser la table sensMot mais je ne vois pas trop comment.
    Merci de m'éclairer.

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 815
    Billets dans le blog
    14
    Par défaut
    Si le mot "le mot" a pour sens "le sens du mot", alors pour alimenter la table de jointure on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO sensMot(id_mot, id_sens)
    VALUES (
      (SELECT idMot
      FROM mot
      WHERE mot = 'le mot'),
      (SELECT idSens
      FROM sens
      WHERE sens = 'le sens du mot')
    )
    Bien entendu, il faut alimenter la table de jointure après avoir alimenté les deux autres tables pour respecter les contraintes de clé étrangère.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Par défaut
    Merci beaucoup CinePhil
    Tout est clair maintenant il ne me reste plus qu'à appliquer.
    Encore merci

  7. #7
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Juste pour t'asticoter, tu as bien pensé à gérer la polysémie mais pas la synonymie (pardon pour l'éventuel néologisme), entre les mots.

    Quoique, tous les mots qui auront un lien vers un des sens de ce mot seront des synonymes.
    Donc je n'ai rien écrit, enfin je poste quand même.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

Discussions similaires

  1. convertion SQL en schéma relationnel
    Par delma dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 15h22
  2. Générer le schéma relationnel de scripts SQL
    Par webspeak dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/03/2006, 15h14
  3. [9i] schéma relationnel en SQL
    Par BugFactory dans le forum Oracle
    Réponses: 15
    Dernier message: 22/12/2005, 14h31
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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