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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  clé etrangére

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

clé etrangére

n°1978415
pikamo
Posté le 29-03-2010 à 15:03:09  profilanswer
 

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 :
  1. create table utilisateur (
  2.      id_user  smallint unsigned not null auto_increment ,
  3.      user_name varchar (50) not null,
  4.      password   smallint unsigned not null ,
  5.      primary key (id_user)
  6.     );


code pour table type:

Code :
  1. create table type  (
  2.      id_tpe  smallint unsigned not null auto_increment ,
  3.      tpe_libelle varchar (50) not null,
  4.      primary key (id_tpe)
  5.     );


code pour table eve:

Code :
  1. create table eve  (
  2.      id_user  smallint unsigned,
  3.      id_tpe  smallint unsigned,
  4.      Primary Key (id_user, id_tpe),
  5.      Foreign Key (id_user) references user(id_user),
  6.      Foreign Key (id_tpe) references type(id_tpe)
  7. );


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 :

Code :
  1. INSERT INTO user
  2. ( user_name , password ) VALUES ( 'hardware ',123);


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

mood
Publicité
Posté le 29-03-2010 à 15:03:09  profilanswer
 

n°1978720
Oliiii
Posté le 30-03-2010 à 08:22:58  profilanswer
 

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.

n°1978727
pikamo
Posté le 30-03-2010 à 08:58:29  profilanswer
 

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

n°1978746
Oliiii
Posté le 30-03-2010 à 09:43:09  profilanswer
 

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.

n°1978749
pikamo
Posté le 30-03-2010 à 09:51:20  profilanswer
 

*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 ?!!!)
 
 

n°1978875
Oliiii
Posté le 30-03-2010 à 13:51:22  profilanswer
 

Si id_user = 2 et entree est type = 1, tu fais:

Code :
  1. INSERT eve (id_user, id_tpe) VALUES (2, 1)

n°1978903
pikamo
Posté le 30-03-2010 à 14:18:20  profilanswer
 

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

n°1978922
skeye
Posté le 30-03-2010 à 14:36:13  profilanswer
 

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) !!
 
je cherche que la base enregistre l'entré et la sortie de l'user !!
 


Si tu veux garder l'historique il ne faut pas utiliser (id_user, id_salle) comme clé primaire de la table eve.


---------------
Can't buy what I want because it's free -
n°1978925
pikamo
Posté le 30-03-2010 à 14:39:07  profilanswer
 

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

n°1978926
skeye
Posté le 30-03-2010 à 14:39:47  profilanswer
 

NON§§§§§§§§
id_user EST une clé étrangère.


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 30-03-2010 à 14:39:47  profilanswer
 

n°1978934
pikamo
Posté le 30-03-2010 à 14:49:14  profilanswer
 

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

n°1978935
skeye
Posté le 30-03-2010 à 14:50:03  profilanswer
 

pikamo a écrit :

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


 

skeye a écrit :

il ne faut pas utiliser (id_user, id_salle) comme clé primaire de la table eve.



---------------
Can't buy what I want because it's free -
n°1979032
Oliiii
Posté le 30-03-2010 à 16:22:39  profilanswer
 

Enleve ta primary key et garde le reste.
Ce genre de table n'a pas besoin de primary key.

n°1979120
pikamo
Posté le 30-03-2010 à 17:48:38  profilanswer
 

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();
 

n°1979153
pikamo
Posté le 30-03-2010 à 19:03:23  profilanswer
 

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+"')";  
??!!

n°1979305
Oliiii
Posté le 31-03-2010 à 10:01:20  profilanswer
 

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+"')";

n°1979345
pikamo
Posté le 31-03-2010 à 11:08:32  profilanswer
 

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+"')";
 


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

  clé etrangére

 

Sujets relatifs
[Access] Double clé etrangere vers une meme clé primaireclé étrangère vide
Problème de clé étrangère [RESOLU][SQL] Indiquer ou pas la présence de clé étrangère
[SQL] SELECT sur une table avec clé étrangère sur cette même table[ORACLE] Problème de création de clé étrangère
Probleme clé primaire clé etrangereSimuler une adresse IP étrangère ?
Comment faire un menu deroulant ?insertion donnée dans champs cles etrangère
Plus de sujets relatifs à : clé etrangére


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