[SQL] Problème de clé

kanadianDri3 Messages postés 95 Statut Membre -  
kanadianDri3 Messages postés 95 Statut Membre -
Bonjour,

J'essai de retracer un diagramme d'une BDD sous phpmyadmin. A savoir que ce n'est pas moi qui est créer la base et que la personne qui l'a faite n'est pas joignable.
J'utilise la fonction : show create table CmpgSummary

J'obtiens comme résultat ceci :
CREATE TABLE `CmpgSummary` (
`uid` int(11) NOT NULL auto_increment,
`idCmpg` int(11) default NULL,
`name` varchar(150) default NULL,
`dateToSend` datetime NOT NULL default '0000-00-00 00:00:00',
`endDate` datetime default '0000-00-00 00:00:00',
`account` int(11) default NULL,
`state` int(4) NOT NULL default '0',
PRIMARY KEY (`uid`),
KEY `DATETOSEND` (`dateToSend`),
KEY `accountAndIdCmpg` (`account`,`idCmpg`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Puisqu'il y a plusieurs tables dans la BDD, j'aimerais savoir qu'elles sont les foreign keys dans chaque table.
Quelque chose m'intrigue. Qu'est ce que fait le mot KEY dans les deux dernieres lignes ? Comment ca marche ? Il se passe quoi ?
C'est la premiere fois que je vois ca dans un create table et en plus sans contraintes...j'suis perdu là !!
Quand je regarde dans la structure de la table, ca m'indique qu'il s'agit d'index (datetosend et accountandidcmpg)

Ce n'est pas moi l'administrateur et je ne pense pas que je puisse aller m'amuser à modifier les fichiers de conf de phpmyadmin :S (il ne m'en accorderais surement pas les droits)

Quelqu'un peut-il m'éclairer sur mon problème ??
Au fait la version qui est utilisé pour
phpmyadmin : 2.3.1-rc1
mysql : 3.23.58-log

Merci beaucoup d'avance !!! :D :D

kanadian
A voir également:

4 réponses

Giorgiolino Messages postés 270 Statut Contributeur 52
 
Bonjour,

le mot KEY fait effectivement référence à l'index comme tu as déja pu le trouver.
C'est une aide que l'on apporte au SGBDR pour lui permettre d'effectuer un peu
plus rapidement les tris sur les données des tables, c'est tout.

Rien de méchant donc.

Bon (dé-)codage.
0
kanadianDri3 Messages postés 95 Statut Membre 10
 
Merci !! Au moins maintenant je comprends mieux :)

Par contre comment ca se fait que, d'en d'autre tables, le noms de certains champs commencent par 'fk_' ce qui fait référence à des clé primaire d'autre table (donc des clés étrangères dans les tables en question). J'ai vérifié, elle vont bien prendre valeur des clés auxquelles elles sont associées.
Quand je fais mon show create table, je n'ai pas la liste des contraintes qui s'affichent. Comment faire pour savoir qu'elles sont les diffèrentes clés étrangères présentes dans les tables ? Je vais avoir du mal à retracer les liaisons si je ne sais pas à quoi elles font références.

Bref, j'suis un peu bloqué. J'ai l'impression que celui avant moi y est aller au marteau bourrin. Merci pour vos réponses !! =)

kanadian
0
Giorgiolino Messages postés 270 Statut Contributeur 52
 
En fait le 'fk' montre effectivement (en principe) qu'il s'agit d'un attribut d'une autre table. Je dis bien attribut car
dans ton cas (ce fut aussi le mien il y a quelques temps), il n'y a manifestement aucune contrainte. Je sais que ça à l'air incroyable mais pour l'avoir vu je peux te dire que ça existe. En effet j'ai récupéré les sources d'un logiciel en php/MySQL récemment et il n'y avait aucune contrainte non plus sur les tables. Tout se faisait soi-disant dans e code php.

Et quand tu dis "J'ai vérifié, elle vont bien prendre valeur des clés auxquelles elles sont associées" c'est parce que c'est utilisé par une application et que ça a l'air de marcher ou que t'as testé en BDD ?

Le cas échéant, voici ce que je te propose de faire:
Essaie de créer 'à la main' directement dans ta base de données un enregistrement en mettant dans le(s)
champ(s) 'fk' une valeur qui n'existe pas dans la table de référence. Si ça passe, tu sauras qu'il n'y a - hélas -
aucune contrainte et tu seras fixé.

Bon courage.
0
kanadianDri3 Messages postés 95 Statut Membre 10
 
Merci pour ta réponse ! C'est claire est tellement simple que je n'y est pas penser (pourquoi faire simple alors qu'on peut faire compliquer !! ^^)
Et bien j'ai tester vraiment sur la BDD. J'ai été cherché des infos, par exemple vérifier les comptes clients et vérifier le code de leur service. A chaque fois ca concorde. Et puis ca fait bientot 5 ans qu'il utlise la meme BDD donc je pense que s'il y avait des erreurs ils auraient changé (là où je bosse)

Bon bah je vais essayer de faire ce que tu as dit pour au moins vérifier. Si ca bloque je dois en conclure que les champs où il est indiqué 'fk_' sont bels et bien des clés etrangères ? Je pense que ca suffira...

Ca serait bien qu'un expert mettent son nez là dedans histoire de clarifier les choses...enfin bon j'vais me débrouiller.

Merci pour ton aide !!! :D :D

kanadian
0