probleme index mysql


Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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:

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Messages recommandés

Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
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

Partager ce message


Lien à poster
Partager sur d’autres sites
Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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.

Partager ce message


Lien à poster
Partager sur d’autres sites
Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
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:

Partager ce message


Lien à poster
Partager sur d’autres sites
Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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;

Partager ce message


Lien à poster
Partager sur d’autres sites
Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
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:

Modifié par Adenora

Partager ce message


Lien à poster
Partager sur d’autres sites
Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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:

Partager ce message


Lien à poster
Partager sur d’autres sites
Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
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. ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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. ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
Posté(e)

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

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

Partager ce message


Lien à poster
Partager sur d’autres sites
freak by nature Membre 9 821 messages
Forumeur alchimiste‚ 33ans
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

Partager ce message


Lien à poster
Partager sur d’autres sites
Adenora Membre 5 400 messages
Admiratrice de Scrat‚ 29ans
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 ;)

Modifié par Adenora

Partager ce message


Lien à poster
Partager sur d’autres sites
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`;

Partager ce message


Lien à poster
Partager sur d’autres sites
Arylwren Membre 40 messages
Forumeur balbutiant‚ 28ans
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:

Modifié par Arylwren

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant