Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2006, 10h01   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 79
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2006
Messages : 79
Points : 49
Points : 49
Envoyer un message via MSN à xG-Hannibal
Par défaut MySQL - Probleme avec 2 index sur une table

SGBD : MySQL 5.x

bonjour à tous,

J'ai un petit soucis concernant une base de données pour un site e-commerce, étant habitué à SQL Server pour de la programmation dotnet, j'essaye de me mettre sur php et mysql.

voilà donc mon probleme sur ma base, j'ai une table COMMANDE, ARTICLE et LigneCOMMANDE.

La table LigneCOMMANDE est une table ayant pour clé primaire idCDE(pour commande) et IdArt(pour article).

une fois ma base créé sur phpmyadmin de mon hébergeur je regarde la structure de ma table LigneCOMMANDE et j'ai un message de ce type :

Citation:
La colonne `IDCDE` ne devrait pas faire partie à la fois d'une clé primaire et d'une clé index
est-ce inquiétant ?? j'ai deux index sur ma table celle pour IdCDE et celle pour IdART, comment règlé le probleme ?

je vous remercie d'avance pour votre aide.
xG-Hannibal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 10h20   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour

Peut-on avoir les ordres complets de création des tables ?
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 10h29   #3
Membre du Club
 
Inscription : janvier 2006
Messages : 79
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2006
Messages : 79
Points : 49
Points : 49
Envoyer un message via MSN à xG-Hannibal
je te met mon code SQL des mes 3 tables pour leur création avec les FK.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
/*==============================================================*/
/* Table : CDE                                                  */
/*==============================================================*/
CREATE TABLE CDE
(
   IDCDE                          int                            NOT NULL,
   IDCLI                          int                            NOT NULL,
   IDREG                          int                            NOT NULL,
   IDTLI                          int                            NOT NULL,
   DCDE                           datetime                       NOT NULL,
   DFACTURE                       datetime                       NOT NULL,
   FRAISDEPORT                    decimal,
   MONTANTTOT                     decimal(10,2)                  NOT NULL,
   DLIVRAISON                     datetime                       NOT NULL,
   CDELIVRER                      tinyint(1),
   LIVNOM                         varchar(25)                    NOT NULL,
   LIVPRN                         varchar(25)                    NOT NULL,
   LIVADR                         varchar(200)                   NOT NULL,
   LIVVILLE                       varchar(50)                    NOT NULL,
   LIVCP                          numeric(5,0)                   NOT NULL,
   LIVTEL                         varchar(14),
   LIVTELFIXE                     varchar(14)                    NOT NULL,
   PRIMARY KEY (IDCDE)
);
 
/*==============================================================*/
/* Table : LCD                                                  */
/*==============================================================*/
CREATE TABLE LCD
(
   IDCDE                          int                            NOT NULL,
   IDART                          int                            NOT NULL,
   LCDQTE                         int                            NOT NULL,
   LCDMONTANT                     decimal                        NOT NULL,
   PRIMARY KEY (IDCDE, IDART)
);
 
/*==============================================================*/
/* Index : LCD_FK                                               */
/*==============================================================*/
CREATE INDEX LCD_FK ON LCD
(
   IDCDE
);
 
/*==============================================================*/
/* Index : LCD2_FK                                              */
/*==============================================================*/
CREATE INDEX LCD2_FK ON LCD
(
   IDART
);
 
/*==============================================================*/
/* Table : ART                                                  */
/*==============================================================*/
CREATE TABLE ART
(
   IDART                          int                            NOT NULL,
   IDMAR                          int                            NOT NULL,
   IDSOU                          int                            NOT NULL,
   IDOFF                          int,
   ARTLIBELLE                     varchar(50)                    NOT NULL,
   ARTPUHT                        decimal(10,2)                  NOT NULL,
   ARTCONTENU                     varchar(1500)                  NOT NULL,
   ARTREF                         varchar(25)                    NOT NULL,
   ARTQTESTOCK                    int                            NOT NULL,
   ARTPHOTO                       varchar(50)                    NOT NULL,
   PRIMARY KEY (IDART)
);
voila le code complet de ces trois tables. C'est peut-etre un probleme lié au code SQL si il y a une erreur dites le moi, je l'ai généré avec un logiciel sous la méthode mérise.
xG-Hannibal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 11h12   #4
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Non, je pense que c'est un simple avertissement de PHPMyAdmin. En effet, l'index sur LCD(IDCDE) est inutile puisque cette colonne est déjà un préfixe gauche de la clé primaire de LCD, donc déjà correctement indexée.

A vérifier mais je pense que tu dois pouvoir supprimer l'index LCD_FK sans problème.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 11h14   #5
Membre du Club
 
Inscription : janvier 2006
Messages : 79
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2006
Messages : 79
Points : 49
Points : 49
Envoyer un message via MSN à xG-Hannibal
ok je te remercie maximilian

ah oui petite question, quand je supprime mon index idcde, pourquoi celui de mon idArt n'a pas le message ? idart est aussi une clé primaire de ma table.
xG-Hannibal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 11h23   #6
Membre du Club
 
Inscription : janvier 2006
Messages : 79
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2006
Messages : 79
Points : 49
Points : 49
Envoyer un message via MSN à xG-Hannibal
est-ce que parce que idcde est la premiere clé primaire de la structure de ma base?
MySQL gère difficilement deux clés primaires ?
xG-Hannibal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 12h52   #7
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par xG-Hannibal
est-ce que parce que idcde est la premiere clé primaire de la structure de ma base?
Oui, dans un index multiple (ce qui est le cas de la clé primaire de LCD), seuls les préfixes gauches de la clé sont indexés. Donc (IDCDE), (IDCDE, IDART) mais pas (IDART). D'où le besoin de créer un index individuel pour IDART.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h08   #8
Membre du Club
 
Inscription : janvier 2006
Messages : 79
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2006
Messages : 79
Points : 49
Points : 49
Envoyer un message via MSN à xG-Hannibal
ok merci du renseignement
xG-Hannibal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h07.


 
 
 
 
Partenaires

Hébergement Web