Aller au contenu

probleme index mysql


Arylwren

Messages recommandés

Membre, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 39ans Posté(e)
freak by nature Membre 9 821 messages
Baby Forumeur‚ 39ans‚
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, Admiratrice de Scrat, 35ans Posté(e)
Adenora Membre 5 400 messages
35ans‚ Admiratrice de Scrat,
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, 35ans Posté(e)
Arylwren Membre 40 messages
Baby Forumeur‚ 35ans‚
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.

×