Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2125 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Base de données

n°2001564
yoanlibert
Posté le 14-06-2010 à 18:12:13  profilanswer
 

Bonsoir !  
 
Voila j’ai une question :  
- J’ai deux classes ‘étudiant’ (idetu, nometu) et ‘module’ (idmod, nommod), l’association entre eux est « un module estétudié (idmod, idetu) par des étudiants». (Relation plusieurs à plusieurs), si on parle de base de données donc j’ai trois tables. Dans mon programme je dois ajouter des modules et des étudiants. C’est fait sauf que dans la base de données la table possède n’est pleine.
 
Merci !

mood
Publicité
Posté le 14-06-2010 à 18:12:13  profilanswer
 

n°2001637
antac
..
Posté le 15-06-2010 à 08:53:20  profilanswer
 

gnu ?  
J'ai compris jusqu'à "J’ai deux classes ‘étudiant’ (idetu, nometu) et ‘module’ (idmod, nommod), l’association entre eux est « un module estétudié (idmod, idetu) par des étudiants». (Relation plusieurs à plusieurs), si on parle de base de données donc j’ai trois tables"  
 
Après, rien et la fin est illisible.

n°2001658
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2010 à 09:49:26  profilanswer
 

Pareil, pas compris grand chose sur la fin. Tu veux dire que la table ne se remplit pas quand ton programme fait un traitement? Faudrait déjà commencer par dire sur quel sgbd tu travailles et en quel langage.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2001850
yoanlibert
Posté le 15-06-2010 à 14:47:35  profilanswer
 

Salut !
Désolé c'est vrai que j'ai pas bien expliqué les choses. Alors, Je programme avec JAVA (netBeans) et j'utilise MySQL pour les bases de données. Dans mon programme je dois ajouter des étudiants (avec une requete SQL) en cliquant sur le bouton"ajouter", pareille pour le module (ajouter des modules en utilisant une requete SQL).
C'est bon jusqu'a maintenant. Je peux ajouter pour un étudiant (idetu=1) plusieurs modules (idmod=1,idmod=2)
Quand je vérifier les deux tables je trouve que ce que je vienne d'ajouter est fait mais l'association entre les deux tables (qui est une table a son tour, elle s'appelle "étudier" ) est vide. Par exemple, l'étudiant(idetu=1) a étudié les modules (idmod=1, idmod=2) donc l'association devra être étudier(idetu=1, idmod=1), étudier(idetu=1,idmod=2) ce que je n'arrive pas à obtenir.  

n°2001852
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-06-2010 à 14:50:38  profilanswer
 

yoanlibert a écrit :


Quand je vérifier les deux tables je trouve que ce que je vienne d'ajouter est fait mais l'association entre les deux tables (qui est une table a son tour, elle s'appelle "étudier" ) est vide. Par exemple, l'étudiant(idetu=1) a étudié les modules (idmod=1, idmod=2) donc l'association devra être étudier(idetu=1, idmod=1), étudier(idetu=1,idmod=2) ce que je n'arrive pas à obtenir.  


et cette fameuse table de liaison, tu fais bien un INSERT dedans, ou bien tu penses qu'elle va se remplir toute seule ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°2001854
yoanlibert
Posté le 15-06-2010 à 14:55:22  profilanswer
 

Je sais que je dois ajouter une requete SQL pour la remplir mais ou écrire la requete ?

n°2001859
antac
..
Posté le 15-06-2010 à 14:59:57  profilanswer
 

????
Si tu as arrives à faire un INSERT sur les deux premières tables, je ne vois pas le problème pour faire le INSERT sur ta table de liaison

n°2001865
yoanlibert
Posté le 15-06-2010 à 15:07:58  profilanswer
 

Oui mais mon probléme ce n'ai pas le INSERT mais ou je dois mettre la requete pour qu'elle s'exécute ??

n°2001866
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2010 à 15:11:45  profilanswer
 

Ben dans ton ihm, t'as bien un endroit où t'indique quels modules un étudiant a étudié, non? Ben c'est à cet endroit, plus exactement sur le code du contrôle (probablement un bouton "valider" ) qui permet de valider cette mise en relation d'un étudiant avec ses modules. :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2001868
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-06-2010 à 15:16:16  profilanswer
 

yoanlibert a écrit :

Oui mais mon probléme ce n'ai pas le INSERT mais ou je dois mettre la requete pour qu'elle s'exécute ??


ben au même endroit que les autres [:petrus dei]


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 15-06-2010 à 15:16:16  profilanswer
 

n°2001873
yoanlibert
Posté le 15-06-2010 à 15:38:25  profilanswer
 

Pour préciser létudiant ce trouve dans un panel ( avec toutes ses informations), je clique le bouton ajouter (la requete pour ajouter des étudiants s'execute à ce niveau) pour pouvoir les ajoutés et pareille pour le module. J'ai essayé de mettre la requete pour remplire la table de laison avec c'elle de module parceque je dois avoir l'idetu d'abbord mais ca ne fonctionne pas.
 

n°2001874
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-06-2010 à 15:42:33  profilanswer
 

yoanlibert a écrit :

Pour préciser létudiant ce trouve dans un panel ( avec toutes ses informations), je clique le bouton ajouter (la requete pour ajouter des étudiants s'execute à ce niveau) pour pouvoir les ajoutés et pareille pour le module. J'ai essayé de mettre la requete pour remplire la table de laison avec c'elle de module parceque je dois avoir l'idetu d'abbord mais ca ne fonctionne pas.
 


non mais la table de liaison il faut la remplir en dernier hein, comment tu fais pour connaitre les différents id sinon ?
tu remplis d'abord ta table étudiant, puis tu récupères l'id de l'étudiant créé. idem pour les modules. et quand tu as ces 2 id, alors tu les insères dans ta table de liaison.
et je te recommande fortement de tout faire dans une seule transaction, car si jamais pour une raison ou une autre ton serveur plante avant que tu n'aies pu écrire dans ta table de liaison, l'intégrité de ta base sera compromise


---------------
J'ai un string dans l'array (Paris Hilton)
n°2001875
ionik
Posté le 15-06-2010 à 15:47:28  profilanswer
 

Harkonnen a écrit :


non mais la table de liaison il faut la remplir en dernier hein, comment tu fais pour connaitre les différents id sinon ?
tu remplis d'abord ta table étudiant, puis tu récupères l'id de l'étudiant créé. idem pour les modules. et quand tu as ces 2 id, alors tu les insères dans ta table de liaison.
et je te recommande fortement de tout faire dans une seule transaction, car si jamais pour une raison ou une autre ton serveur plante avant que tu n'aies pu écrire dans ta table de liaison, l'intégrité de ta base sera compromise


j'ai vu que tu été la :o
 
EDIT : Précision il est a coter de moi (collègue ^^ )


Message édité par ionik le 15-06-2010 à 15:51:22

---------------
Recette cookeo Recette de cuisine
n°2001877
yoanlibert
Posté le 15-06-2010 à 15:56:00  profilanswer
 

Citation Harkonnen:
"tu remplis d'abord ta table étudiant, puis tu récupères l'id de l'étudiant créé. idem pour les modules. et quand tu as ces 2 id, alors tu les insères dans ta table de liaison. "
- Ca je le sais mais la requete qui permet de faire ca ou la mettre ?
 
Citation Harkonnen:
"je te recommande fortement de tout faire dans une seule transaction."
Comment ?
-

n°2001878
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-06-2010 à 16:00:02  profilanswer
 

yoanlibert a écrit :

Citation Harkonnen:
"tu remplis d'abord ta table étudiant, puis tu récupères l'id de l'étudiant créé. idem pour les modules. et quand tu as ces 2 id, alors tu les insères dans ta table de liaison. "
- Ca je le sais mais la requete qui permet de faire ca ou la mettre ?
 je te l'ai dit : juste après les 2 autres, au même endroit. au lieu d'en écrire 2, tu en écris 3
Citation Harkonnen:
"je te recommande fortement de tout faire dans une seule transaction."
Comment ?
en encadrant tes 3 requêtes par les commandes START TRANSACTION et COMMIT ou ROLLBACK à condition que ta base supporte InnoDB
http://dev.mysql.com/doc/refman/5.0/fr/commit.html
-


 
et y'a un bouton "répondre au message", c'est plus pratique que d'écrire "Citation machin"


---------------
J'ai un string dans l'array (Paris Hilton)
n°2001881
yoanlibert
Posté le 15-06-2010 à 16:09:03  profilanswer
 

La 1ière requete se trouve dans le bouton ajouter du 1er panel et la 2ième requete dans le bouton ajouter du 2ième panel. Ou mettre la 3ième requete  :??:  

n°2001883
antac
..
Posté le 15-06-2010 à 16:12:56  profilanswer
 

Je comprends pas...
 
Tu as une liste de modules : Anglais, français, algèbre de bool, ada....  
Tu as une liste d'étudiants : "John Smith, Stephen Falken...."  
 
Tu dois avoir une seule page d'affectation de modules à des étudiants, dans ce cas là c'est pas compliqué, je comprends pas que tu fasses ça de façon séparé.

n°2001884
Oliiii
Posté le 15-06-2010 à 16:14:21  profilanswer
 

Tu dois avoir un bouton pour ajouter un nouvel etudiant, un bouton pour ajouter un nouveau module et il t'en faut un 3eme pour ajouter un (ou plusieurs) module pour un etudiant, c'est la que tu insert dans ta 3eme table.
 
Si tu veux inserer dans ta table "etudier" en meme temps que tu crée ton etudiant (un seul bouton) il faut inserer dans la 3eme table apres avoir inserer ton etudiant (et utiliser les transactions pour eviter les problemes, comme expliqué par Harkonnen).
 
Si tu veux une appli un peu plus flexible, tu crée un espece de back office ou tu peux gerer tes etudiants et modules (Ajouter, modifier, effacer) et une autre partie ou tu peux gere quel etudiant etudie quoi. Dans ce cas ci tu n'as pas vraiment besoin d'utiliser des transactions.


Message édité par Oliiii le 15-06-2010 à 16:16:04
n°2001889
yoanlibert
Posté le 15-06-2010 à 16:34:40  profilanswer
 

Un bouton ajouter pour l'ajout des étudiants et un autres pour l'ajout des modules. Quand je récupère l'étudiant (idetu=10) je voues avoir la liste des modules qu' il a étudié. Je peux avoir ca avec la table de laison étydier (idetu, idmod) donc pourquoi ajouter un 3eme bouton pour l'ajout d'un (ou plusieurs) modules pour un etudiant.

n°2001890
antac
..
Posté le 15-06-2010 à 16:37:59  profilanswer
 

Ton problème c'est plus une histoire de design qu'autre chose...
 
Pourquoi tu n'affiches pas la liste des étudiants (ou la liste des modules)
quand tu sélectionnes un étudiant (ou un module)  
tu as une liste qui s'affiche listant soit les modules étudiés par l'étudiant sélectionné, soit les étudiants qui étudient le module sélectionné.
 
Ensuite tu peux tout à fait avoir un bouton ajouter te demandant de sélectionner le module ou l'étudiant à ajouter...

n°2001895
yoanlibert
Posté le 15-06-2010 à 16:56:12  profilanswer
 

Supposant que je vais ajouté des étudiants avec le bouton ajouter du 1er panel, puis dans le panel du module j'ajoute un comboBox qui contient tous les étudiants. Quand j'ajoute un module je choisie les étudiants qui l'ont étudier donc la requete pour ajouter un module et c'elle pour remplir la table de laison sont toutes les deux dans le bouton ajouter un module.    

n°2001896
antac
..
Posté le 15-06-2010 à 17:02:44  profilanswer
 

Tu as le droit à avoir deux boutons :  
"Ajouter un module", "Affecter un étudiant au module sélectionné"

n°2001897
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-06-2010 à 17:03:04  profilanswer
 

tu es illisible


---------------
J'ai un string dans l'array (Paris Hilton)
n°2001899
yoanlibert
Posté le 15-06-2010 à 17:09:56  profilanswer
 

C'est bon antac je crois que j'ai compris, je vais tester ca.
Merci bcp de m'avoire aider.
Au plaisir !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Base de données

 

Sujets relatifs
saut de ligne dans une base de données?appli web avec données cryptées en base
Problème de base de données AccessAide Base de données overclocking
Relation entre 2 tables dans une même base de donnéesgerer une base de données access avec des codes barres
Base de données sur ExcelTraiter les absences de données dans une base
Dans le flux du libre, je suis à la recherche d'une base de données QR 
Plus de sujets relatifs à : Base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR