{MySQL} Pb lors de la création d'une table MySQL
Résolu/Fermé
A voir également:
- {MySQL} Pb lors de la création d'une table MySQL
- Table ascii - Guide
- Table des matières word - Guide
- Mysql community server - Télécharger - Bases de données
- Creation compte gmail - Guide
- Création compte google - Guide
6 réponses
wjaouadi
Messages postés
25
Date d'inscription
vendredi 13 mars 2009
Statut
Contributeur
Dernière intervention
25 décembre 2009
160
9 juin 2009 à 11:26
9 juin 2009 à 11:26
Bonjour,
je commence par les remarques :
-il est inutile de signaler au niveau de la table CATEGORY que CATEGORY_ID est unique étant donné que c'est une clé primaire.
-même remarque que précedemment pour la table BATIMENT et la clé primaire BATIMENT_ID
-même remarque pour la contrainte not null qui est implicite dans le cas des clé primaires.
-je n'ai pas compris le but de l'utilisation de index(CATEGORY_ID) ???
Pour le problème il est du à la non déclaration du champs CATEGORY_ID dans la table BATIMENT .
Essaye ça :
je commence par les remarques :
-il est inutile de signaler au niveau de la table CATEGORY que CATEGORY_ID est unique étant donné que c'est une clé primaire.
-même remarque que précedemment pour la table BATIMENT et la clé primaire BATIMENT_ID
-même remarque pour la contrainte not null qui est implicite dans le cas des clé primaires.
-je n'ai pas compris le but de l'utilisation de index(CATEGORY_ID) ???
Pour le problème il est du à la non déclaration du champs CATEGORY_ID dans la table BATIMENT .
Essaye ça :
create table BATIMENT ( BATIMENT_ID integer auto_increment, Batiment_Name varchar(100) binary not null unique, Batiment_Description varchar(200) binary, CATEGORY_ID integer, Constraint pk_batiment primary key (BATIMENT_ID), FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORY (CATEGORY_ID) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB;
wjaouadi
Messages postés
25
Date d'inscription
vendredi 13 mars 2009
Statut
Contributeur
Dernière intervention
25 décembre 2009
160
9 juin 2009 à 15:23
9 juin 2009 à 15:23
re Bonjour,
Oui c'est ça.
Oui c'est ça.
Dans la table "BATIMENT", en ajoutant la ligne "CATEGORY_ID integer not null," avant "INDEX (CATEGORY_ID)" je n'obtiens plus d'erreur.
Merci bcp wjaouadi. Précédemment, j'étais en train de m'apporter une réponse au même moment que toi.
Tes précisions sur mes lignes inutiles vont bien m'aider pour mieux coder.
Concernant le but de l'utilisation de index(CATEGORY_ID), en fait j'ai lu que l'ajout d'INDEX est pertinent sur :
- les champs utilisés pour les clés étrangères (ON ... = ...)
- les champs sur lesquels des tris sont très souvent utilisés (ORDER BY ...)
- les champs sur lesquels des filtres sont très souvent utilisés (WHERE ...)
alors je me suis dis que quand on déclare une clé étrangère, il vaut mieux créer un index pour accélérer les requêtes de lecture de la table mais je dois me tromper. Est-ce que je peux avoir ton avis dessus ?
Tes précisions sur mes lignes inutiles vont bien m'aider pour mieux coder.
Concernant le but de l'utilisation de index(CATEGORY_ID), en fait j'ai lu que l'ajout d'INDEX est pertinent sur :
- les champs utilisés pour les clés étrangères (ON ... = ...)
- les champs sur lesquels des tris sont très souvent utilisés (ORDER BY ...)
- les champs sur lesquels des filtres sont très souvent utilisés (WHERE ...)
alors je me suis dis que quand on déclare une clé étrangère, il vaut mieux créer un index pour accélérer les requêtes de lecture de la table mais je dois me tromper. Est-ce que je peux avoir ton avis dessus ?
wjaouadi
Messages postés
25
Date d'inscription
vendredi 13 mars 2009
Statut
Contributeur
Dernière intervention
25 décembre 2009
160
9 juin 2009 à 12:16
9 juin 2009 à 12:16
re bonjour,
Ton idée de générer des index sur les clé étrangère n'est pas fausse mais vaux mieux faire une séparation et gérer les index à part selon le besoin. Essayer de trop optimiser peu ralentir des fois.
Ton idée de générer des index sur les clé étrangère n'est pas fausse mais vaux mieux faire une séparation et gérer les index à part selon le besoin. Essayer de trop optimiser peu ralentir des fois.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question