clé etrangére - SQL/NoSQL - Programmation
Marsh Posté le 30-03-2010 à 08:22:58
Tu voudrais faire quoi clairement?
La valeur id_user est incrementée automatiquement chaque fois que tu insert dans la table user.
Une clé etrangere ne sert qu'a maintenir l'integrité referentielle de ta DB, ca n'insert rien automatiquement. Il faut inserer manuellement dans la table eve.
Pour obtenir le id_user a inserer il faut soit faire une query avant pour le recuperer ou alors faire un join avec la table user au moment de l'insert.
Marsh Posté le 30-03-2010 à 08:58:29
salut merci Oliiii,
** vérifier si ce password et name exite déjà dans la basse quant utilisateur les saisit dans l'interface java,j'ai tester sur une autre petite base de données et c'est bien marché
** tous les informations après la connexion seront enregsitre sous ce "id_user " pour que a la fin affiché :
--->>ce utislisateur qui possede telle données a entrée/sortir ( de la table type) a la sale !!!
comme ici , pour connecter au site , inscription et apres vérification de password et enregistre le date de connexion .
au lieu de site dans mon cas une seul salle.
je sais , j'ai pas exprimé bien mes idées ,mais je te jure que je suis coincé.
Marsh Posté le 30-03-2010 à 09:43:09
En résumé quand tu verifies si l'utilisateur a entré le bon mot de passe, tu sauves son id_user dans ton application, et tu le réutilises pour inserer son "entrée" dans le table eve et sa "sortie" quand il aura fini.
Tu pourrais faire tout en une fois (verifier le mot de passe + inserer une "entrée" dans eve) mais je ne crois pas que ce soit le but de ton exercice.
Marsh Posté le 30-03-2010 à 09:51:20
*une table "utilisateur" qui contient les utilisateurs enregistrés , par exemple 3 utilsateur -> 3 id_user 1,2 et 3
*une table "type" qui contient les types d'evenements possibles c ' est à dire deux type possible entré or sortir.
*"eve" qui contient un evenement date_heure entre , dat_heure sortir ( type datetime) ,#id_suer et #id_tpe
par l'interface java , utilisateur (qui possède déjà un password et login ) saisit ses coordonnées, on vérifier s'il exite déjà dans la base ( j'ai testé avec un petit exemple et code java et cé bien marché la connexion et la vérification ) quant il clik sur le bouton" ok " pour connecté automatiquement insert dans la table eve la date_heure d'entrée ( mais je sais pas comment je dit" à la base " ce utilisateur qui l'id_user = 2 par exemple ?!!!)
Marsh Posté le 30-03-2010 à 13:51:22
Si id_user = 2 et entree est type = 1, tu fais:
Code :
|
Marsh Posté le 30-03-2010 à 14:18:20
j'ai fais ca mais le problème si il entre une autre fois il ne peux pas insert encore values (2,1) !!
je cherche que la base enregistre l'entré et la sortie de l'user !!
Marsh Posté le 30-03-2010 à 14:36:13
pikamo a écrit : j'ai fais ca mais le problème si il entre une autre fois il ne peux pas insert encore values (2,1) !! |
Si tu veux garder l'historique il ne faut pas utiliser (id_user, id_salle) comme clé primaire de la table eve.
Marsh Posté le 30-03-2010 à 14:39:07
salut ,
si je supprime le clé etrangére id_user de la table eve et je fais id_utilisateur un simple champ ( je recupére le_id_user et je le met dans ce champs !!! )
Marsh Posté le 30-03-2010 à 14:39:47
NON§§§§§§§§
id_user EST une clé étrangère.
Marsh Posté le 30-03-2010 à 14:49:14
alors table eve contient clé étrangère id_user et id_libelle .
d'où ce code doit être modifier :
CREATE TABLE eve (
id_user smallint UNSIGNED,
id_tpe smallint UNSIGNED,
PRIMARY KEY (id_user, id_tpe),
FOREIGN KEY (id_user) REFERENCES utilisateur(id_user),
FOREIGN KEY (id_tpe) REFERENCES type(id_tpe)
);
Marsh Posté le 30-03-2010 à 14:50:03
pikamo a écrit : alors table eve contient clé étrangère id_user et id_libelle . |
skeye a écrit : il ne faut pas utiliser (id_user, id_salle) comme clé primaire de la table eve. |
Marsh Posté le 30-03-2010 à 16:22:39
Enleve ta primary key et garde le reste.
Ce genre de table n'a pas besoin de primary key.
Marsh Posté le 30-03-2010 à 17:48:38
merci Oliiii ,
une autre problème :
comment je peux récupérer id_user quant l'utilisateur saisie son login et password pour connecté ?
car je utilse ce "id " pour le mettre dans la table eve
pour le moment je le fais manullement avec ce code ( dans l'interface graphique)
code:
String queryString = "insert into eve (id_user ,id_tpe,date ) values(1,1, '"+h+"')";
ou id_user prend la valeur 1
id_tpe prend la valeur 1 (c' est a dire entrée)
date prend la valeur capter par l'interface graphique (lheure et la date de système)avec cette code String h=txtda.getText();
Marsh Posté le 30-03-2010 à 19:03:23
en fin , j'ai réussir à récupérer id_user quant l'utilisateur saisie son login et password quand il connecté avec ce code :
int id = resultat.getInt("id_user" );
System.out.println("id=" + id);
mais comment je le utilsise ici ( dans une autre fenétre java) :
String queryString = "insert into eve (id_user ,id_tpe,date ) values(1,1, '"+h+"')";
??!!
Marsh Posté le 31-03-2010 à 10:01:20
Je ne connais pas le java mais ca devrai etre un truc du genre String queryString = "insert into eve (id_user ,id_tpe,date ) values('"+id+"',1, '"+h+"')";
Marsh Posté le 31-03-2010 à 11:08:32
salut
merci oliiii
hier soir vres 23h j'ai trouve la solution :
"insert into eve (id_user ,id_tpe,date ) values('"nom_de class_où_la variable_est_declaré.id+"',1, '"+h+"')";
Marsh Posté le 29-03-2010 à 15:03:09
salut
Voilà j'ai un petit pb,si qqun pourrait m'aider, ça serait super sympa car là je suis un peu coincé.
c'est mon 1ére projet avec MySQL server .
voila le but de l'application : contrôler une salle .
partie interface graphique (NETBEANS) et une base de données (MySQL).
3 tables : user , type et eve
la table eve contient deux clés étrangères
le but de ce table : ce utilisateur ( qui a ce password et ce name ) a réaliser ce type d'evenemnt ( entre or sortir)
code pour table user :
code pour table type:
code pour table eve:
je sais pas est ce ce dernière code est juste or non ?!!
pour table eve où les clés étrangères c'est pas automatiquement id_user et id_tpe sont inscrit ?
c' est à dire quand je tape ce code :
dans ce cas le "id_user" contient la valeur : 1 dans la table user
et dans la table eve (clé étrangère)?!!je doit le faire manuellement
et ca je le veux automatiquement
merci d'avance