Aller au contenu

probleme index mysql


Arylwren

Messages recommandés

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Bonjour,

Voila, je suis étudiante et je dois créer une base de données avec la derniÚre version de phpMyadmin.

Le souci, c'est que contrairement aux autres étudiants de mon groupe, mon binÎme et moi n'avons pas de liste déroulante qui indique les valeurs possibles pour la clé étrangÚre. Malgré tout lorsque nous rentrons une valeur qui n'en fait pas partie, le SGBD fait son boulot : il est impossible de rentrer cette valeur.

En gros il s'agirait d'un problĂšme d'interface graphique, mais si quelqu'un pouvait me dire pour quelle raison nous n'avons pas cette liste, cela nous aiderait beaucoup.

Merci d'avance ;)

PS : mĂȘme mon professeur d'info n'a pas su nous dire pourquoi il y avait ce probleme :smile2:

Lien Ă  poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

Bonjour,

J'utilise souvent phpMyAdmin, mais je ne comprends pas trop ce que tu veux dire par :

n'avons pas de liste déroulante qui indique les valeurs possibles pour la clé étrangÚre
Lien Ă  poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Quand tu mets l'option "index" sur une donnée, cela permet de lier cette donnée à la donnée identique inclue dans une autre table. C'est le principe de la clé étrangÚre.

Donc ce que je veux dire, c'est que normalement les valeurs des clés étrangÚres sont contenues dans un menu déroulant dans le champs "valeur" du menu "insérer". Mais chez nous ce n'est pas le cas, malgré le fait que le SGBD se rend compte, quand on insÚre une valeur qui ne fait pas partie des valeurs possibles de clés étrangÚres.

Lien Ă  poster
Partager sur d’autres sites

Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

Si j'ai bien compris, c'est dans le champ valeur qui suit :

mini_090528111143688803748755.png

Ce que je ne comprends pas, c'est comment tu peux dire à une donnée qu'elle soit clé étrangÚre. Quand on met index à une donnée, ça ne veut pas dire automatiquement que c'est une clé étrangÚre. Ou alors, j'ai pas compris ce que tu as dis. ;) Si c'est ça, je vais me coucher. :smile2:

Lien Ă  poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Si tu as compris ce que j'ai dit :smile2: .

Mais notre prof nous a dit d'ecrire ca pour dire que telle ou telle donnée est une clé étrangÚre :

CREATE TABLE `employé2` (

`nss2` varchar(21) NOT NULL,

`nom2` varchar(100) NOT NULL,

`prenom2` varchar(100) NOT NULL,

`adresse_postale2` varchar(100) NOT NULL,

`e-mail2` varchar(100) NOT NULL,

`fonction2` varchar(100) NOT NULL,

`code_boutique2` int(10) NOT NULL,

PRIMARY KEY (`nss2`),

INDEX ( `code_boutique2`),

foreign key (`code_boutique2`) references `boutique2` (`code_boutique2`)

) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Lien Ă  poster
Partager sur d’autres sites

Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

Je vois, je vais tester pour voir si c'est un problÚme d'interface graphique et je te redis ça.

Edit : je n'ai pas de liste déroulante qui s'affiche :smile2:

Lien Ă  poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Ok...Donc tu vois le probleme lol. En tout cas merci d'avoir essayer.

Question cependant : utilises tu WAMP ou EasyPHP ?

En effet, on a remarqué que les autres utilisant EasyPHP n'avaient pas de problemes...alors que nous avec WAMP....voila quoi ;)

J'ai cherché sur tout les forums et tutos que j'ai pu, et je n'ai pas trouvé la moindre trace de l'ombre d'un indice sur le probleme :smile2:

Lien Ă  poster
Partager sur d’autres sites

Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

Effectivement, j'ai Wamp :smile2:

J'ai testé avec EasyPhp, sauf qu'il ne veut pas créer la table, il n'aime pas les clés étrangÚres. ;)

Franchement, je ne vois pas. ;)

Lien Ă  poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Ok,bon tant pis :smile2:

Apres tout ca n'empĂȘche pas vraiment de faire le travail mais bon, ça aurait Ă©tĂ© cool de savoir quel est le problĂšme. ;)

Visiblement ça à l'air de tenir à WAMP/EasyPHP...

En tout cas merci beaucoup pour tes réponses. ;)

Lien Ă  poster
Partager sur d’autres sites

Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

A mon avis, ça l'air d'ĂȘtre ça.

Je voudrais bien savoir comment tu as fait ça, freak ? :smile2:

Lien Ă  poster
Partager sur d’autres sites

Membre, 41ans Posté(e)
freak by nature Membre 9 821 messages
Baby Forumeur‚ 41ans‚
Posté(e)

Je patauge complÚtement en SGBD alors si j'ai trouvé, honte à vous :smile2:

En gros, vu que la clĂ© Ă©trangĂšre pointe vers une autre table, je créé l'autre table avec donc un primary key et aussi la foreign key Ă  laquelle je donne les mĂȘmes valeurs que l'index de la table employe2 (au passage, j'ai enlevĂ© l'accent dans le nom de la table)

La requĂȘte de la table boutique2

CREATE TABLE `boutique2` (
 `code_boutique2` int(10) NOT NULL,
 `id` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`),
 KEY `code_boutique2` (`code_boutique2`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

puis donc celle de la table :

CREATE TABLE `employe2` (
`nss2` varchar(21) NOT NULL,
`nom2` varchar(100) NOT NULL,
`prenom2` varchar(100) NOT NULL,
`adresse_postale2` varchar(100) NOT NULL,
`e-mail2` varchar(100) NOT NULL,
`fonction2` varchar(100) NOT NULL,
`code_boutique2` int(10) NOT NULL,
PRIMARY KEY (`nss2`),
INDEX ( `code_boutique2`),
foreign key (`code_boutique2`) references `boutique2` (`code_boutique2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ensuite dans la liste des tables Ă  gauche, je choisi la table "employe2" et je clique sur "Gestion des relations" :

post-38247-1243547992_thumb.jpg

Lien Ă  poster
Partager sur d’autres sites

Membre, Posté(e)
Adenora Membre 5 400 messages
Posté(e)

Et bien tout simplement, je n'ai pas fait ça :

je créé l'autre table avec donc un primary key et aussi la foreign key

Et je pense qu'elle n'a pas du faire ça, Arylwren.

Et donc, on peut choisir les valeurs qui, par exemple, ont été créées dans boutique2.

J'ai mis 78 dans le champ code_boutique2.

Et dans employe2, on a :

mini_090529121411688803753531.png

Je sais pas pourquoi, il y a un - avant 78 et un - derriĂšre l'autre 78. Et encore moins pourquoi il y a deux 78.

De toute façon, j'ai vu vite fait les clefs étrangÚres en sql (en cours). ;)

Il faut venir sur le forum pour apprendre des choses. :smile2:

Merci freak ;)

Lien Ă  poster
Partager sur d’autres sites

VIP, Ours des Pyrénées 100% AOC, Posté(e)
MĂ©thylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC,
Posté(e)

Je viens Ă  votre rescousse !

Déjà pour établir des contraintes d'intégrité référentielle proprement avec MySQL, il faut utiliser un moteur de table supportant cela. Ici ; InnoDB. C'est bien :smile2:

Ensuite, la déclaration complÚte s'écrit comme ceci :

CONSTRAINT `nom_de_la_contrainte`
FOREIGN KEY (`nom_de_la_cle_etrangere`)
REFERENCES `TABLE_DE_REFERENCE` (`champ_de_reference`)
ON UPDATE CASCADE ON DELETE CASCADE

Un petit exemple ; dans le cas d'une gestion simple GROUPE/UTILISATEUR :

CREATE TABLE `USER__GROUP` (

`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`description` text NULL,

PRIMARY KEY (`id`)

)TYPE=InnoDB DEFAULT CHARSET `utf8`;

CREATE TABLE `USER__USER` (

`id` int(11) NOT NULL auto_increment,
`login` varchar(255) NOT NULL,
`pseudo` varchar(255) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(255) NOT NULL,
`group` int(11) NULL,

CONSTRAINT `member_of`
FOREIGN KEY (`group`)
REFERENCES `USER__GROUP` (`id`)
ON UPDATE CASCADE ON DELETE CASCADE,

PRIMARY KEY (`id`)

)TYPE=InnoDB DEFAULT CHARSET `utf8`;

Lien Ă  poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Wouahou !!! Merci beaucoup Ă  vous pour toutes vos rĂ©ponses. MĂȘme si c'est trop tard pour le projet, je suis contente de voir qu'il y avait bien une solution.

En tout cas encore une fois merci beaucoup :smile2:

Lien Ă  poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×