Conception de variations pour boutique ecommerce

Eléphanteau du PHP | 27 Messages

05 janv. 2009, 11:57

D'accord mais quand est il pour cette table que j'ai extrait de tes données :

Code : Tout sélectionner

CREATE TABLE `category_product_family` ( `family_id` smallint(6) unsigned NOT NULL default '0', `category_id` smallint(6) NOT NULL default '0', UNIQUE KEY `Ligne_unique` (`category_id`,`family_id`), KEY `FK_category` (`category_id`), KEY `FK_family` (`family_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Il y a une erreur "La colonne `category_id` ne devrait pas faire partie à la fois d'une clé unique et d'une clé index".

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

05 janv. 2009, 17:23

La table "category_product_family" n'a pas de clé primaire car c'est une association entre "category" et "product_family" c'est pourquoi il y a deux index avec doublons (Key) qui vont jouer les rôles de clés étrangères. Et puisque cette table n'a pas de clé primaire, elle se contente d'un index unique (UNIQUE KEY ou UNIQUE INDEX) nommée 'Ligne_unique' qui est composée des deux champs 'category_id' et 'family_id' car on ne doit pas associer plus d'une fois une famille à une catégorie.

Alors, le fait que le champ 'category_id' soit déclaré tout seul comme index avec doublons (Key), c'est parce qu'il va jouer le rôle d'une clé étrangère liant la table 'category' à la table 'category_product_family'
Et cela n'empêche pas d'inclure ce même champ 'category_id' dans l'index unique associé avec le champ 'family_id'. Ce n'est pas gênant car il n'est pas seul dans l'index unique.

Conclusion:
Le champ 'category_id' a le droit de participer dans un index unique composée de plusieurs champs, même s'il est déjà déclaré tout seul comme index avec doublon (Key ou INDEX).
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 27 Messages

06 janv. 2009, 12:29

D'accord j'ai bien compris la problématique, donc je peut ignorer la soit disante erreur!
Enfin c'est plutot un "attention"

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 janv. 2009, 15:44

Moi je suis sous MySQL 5.1 et je n'ai pas eu de message d'erreur ou d'avertissement sur ça, c'est bizarre que tu ais eu un tel avertissement.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 27 Messages

09 janv. 2009, 11:13

En effet, sous MySQL: 5.0.45 j'ai l'avertissement alors que sous MYSQL 5.0.51b ne laisse rien apparaitre...
Après cela peut venir aussi de phpMyAdmin...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

09 janv. 2009, 13:07

Bonjour, tooje, si le sujet est bouclé, mets un p'tit "Résolu". :wink:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène