MySQL : clés étrnagères entre 2 tables

AAmed Messages postés 9 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 20 mai 2011 - 11 mai 2011 à 15:27
AAmed Messages postés 9 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 20 mai 2011 - 13 mai 2011 à 20:57
Bonjour,

je suis entrain de développer une projet de web, et j'ai rencontrer des problèmes liés aux relations entre tables(clés étrangères..):

voici mes 2 tables :

utilisateur(id,nom,prenom,login,passwd,email);
projet(idp,nomp,titre,description,date_deb,date_fin,id_utilisateur);

alors comme vous l'avez compris id_utilisateur et la clé étrangère provenant de utilisateur.

Question: Comment illustrer ça sous Mysql et comment définir que le champs id_utilisateur et une clé étrangère provenant de la table utilisateur.

j'ai chercher et j'ai trouver que mes tables doivent etre du type: InnoDB
j'ai fait ça, mais pourtant le type de ma base de données et tjr MyISAM ?

s'il vous plait Expliquer moi les démarches qui vont me permettre d'indiquer que id_utilisateur est bien une clé étrangère.
je m'attend a vos réponses dans le plutot possible pck ce point bloque l'avancement de mon projet que je dois rendre d'ici peu temps.

Merci d'avance a vous les amis

3 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
12 mai 2011 à 10:26
De tête..

ALTER TABLE `utilisateur` ENGINE = InnoDB;
ALTER TABLE `projet` ENGINE = InnoDB;
--Si ce n'est pas déja fait..
ALTER TABLE `utilisateur` ADD PRIMARY KEY ( `id` );
ALTER TABLE `projet` ADD INDEX ( `id_utilisateur` ) ;
ALTER TABLE `projet` ADD FOREIGN KEY ( `id_utilisateur`) REFERENCES `utilisateur` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ;

S.
0
AAmed Messages postés 9 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 20 mai 2011
13 mai 2011 à 12:52
Merci je vais l'essayer......
0
AAmed Messages postés 9 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 20 mai 2011
13 mai 2011 à 20:57
Salut..

merci pour votre réponse, mais j'ai un problème vraiment bizarre.

mon but de faire migrer la clé étrangère id_utilisateur dans la table projet et d'afficher en fait le login à partir de la table utilisateur, Et le nomp et date_deb et date_fin à partir de la table projet.

Alors pour ça j'ai fait la requete suivante sur les 2 tables :

utilisateur(id,nom,prenom,login,passwd,email);
projet(idp,nomp,titre,description,date_deb,date_fin,id_utilisateur);

SELECT login,nomp,date_deb,date_fin FROM utilisateur,projet WHERE utilisateur.id = projet.id_utilisateur.

Mais le problème c'est qu'il m'affiche aucune chose mm si ma base de données et rempli, et ce qui est pire c'est que dans la colonne du champs de la clé étrangère "id_utilisateur" vaut 0. Meme si elle doit prendre normalement la valeur de id de la table utilisateur puisque j'ai fait :

ALTER TABLE `projet` ADD INDEX ( `id_utilisateur` ) ;
ALTER TABLE `projet` ADD FOREIGN KEY ( `id_utilisateur`) REFERENCES `utilisateur` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ;

Désolé j'ai bcp écris mais en fait c'est rien que pour mieux expliquer le problème alors s'il vous plait aidez moi a résoudre ce problème parce que je suis vraiment blocké et je n'arrive plus exploiter les champs des 2 tables à la fois Merci..
0
Rejoignez-nous