Base de données

Base de données - SQL/NoSQL - Programmation

Marsh Posté le 14-06-2010 à 18:12:13    

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 !

Reply

Marsh Posté le 14-06-2010 à 18:12:13   

Reply

Marsh Posté le 15-06-2010 à 08:53:20    

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.

Reply

Marsh Posté le 15-06-2010 à 09:49:26    

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
Reply

Marsh Posté le 15-06-2010 à 14:47:35    

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.  

Reply

Marsh Posté le 15-06-2010 à 14:50:38    

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)
Reply

Marsh Posté le 15-06-2010 à 14:55:22    

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

Reply

Marsh Posté le 15-06-2010 à 14:59:57    

????
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

Reply

Marsh Posté le 15-06-2010 à 15:07:58    

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

Reply

Marsh Posté le 15-06-2010 à 15:11:45    

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
Reply

Marsh Posté le 15-06-2010 à 15:16:16    

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)
Reply

Marsh Posté le 15-06-2010 à 15:16:16   

Reply

Marsh Posté le 15-06-2010 à 15:38:25    

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.
 

Reply

Marsh Posté le 15-06-2010 à 15:42:33    

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)
Reply

Marsh Posté le 15-06-2010 à 15:47:28    

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
Reply

Marsh Posté le 15-06-2010 à 15:56:00    

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 ?
-

Reply

Marsh Posté le 15-06-2010 à 16:00:02    

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)
Reply

Marsh Posté le 15-06-2010 à 16:09:03    

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  :??:  

Reply

Marsh Posté le 15-06-2010 à 16:12:56    

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é.

Reply

Marsh Posté le 15-06-2010 à 16:14:21    

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
Reply

Marsh Posté le 15-06-2010 à 16:34:40    

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.

Reply

Marsh Posté le 15-06-2010 à 16:37:59    

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...

Reply

Marsh Posté le 15-06-2010 à 16:56:12    

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.    

Reply

Marsh Posté le 15-06-2010 à 17:02:44    

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

Reply

Marsh Posté le 15-06-2010 à 17:03:04    

tu es illisible


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2010 à 17:09:56    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed