IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils MySQL Discussion :

MySQL - Probleme avec 2 index sur une table


Sujet :

Outils MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    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
    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 :

    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.

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Bonjour

    Peut-on avoir les ordres complets de création des tables ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    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
    Par défaut
    je te met mon code SQL des mes 3 tables pour leur création avec les FK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    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
    Par défaut
    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.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    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
    Par défaut
    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 ?

  7. #7
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    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.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    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
    Par défaut
    ok merci du renseignement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Index sur une table avec des données temporaires
    Par mioux dans le forum Développement
    Réponses: 5
    Dernier message: 12/01/2012, 17h05
  2. Réponses: 4
    Dernier message: 16/01/2009, 14h30
  3. Parametrer le nombre d'index sur une table
    Par Invité dans le forum Access
    Réponses: 1
    Dernier message: 17/05/2006, 11h36
  4. Problème avec les indexes sur une base de données.
    Par osoudee dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2006, 09h24
  5. Requete MySQL avec un Rand sur une table
    Par tom06440 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/01/2006, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo