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

Signaler
Messages postés
9
Date d'inscription
lundi 25 avril 2011
Statut
Membre
Dernière intervention
20 mai 2011
-
Messages postés
9
Date d'inscription
lundi 25 avril 2011
Statut
Membre
Dernière intervention
20 mai 2011
-
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

Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
15
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.
Messages postés
9
Date d'inscription
lundi 25 avril 2011
Statut
Membre
Dernière intervention
20 mai 2011

Merci je vais l'essayer......
Messages postés
9
Date d'inscription
lundi 25 avril 2011
Statut
Membre
Dernière intervention
20 mai 2011

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