2009-07-21 5 views
0

J'ai deux tableaux d'attributs qui décrivent les produits dans la base de données:Comment regrouper le plus efficacement possible ces produits?

$sizes = array(
       'Shirt Size' => array('Small', 'Medium', 'Large'), 
       'Sleeve Size' => array('Short', 'Long') 
       ); // Level 1 
$colors = array(
       'Shirt Color' => array('Black', 'Red'), 
       'Sleeve Color' => array('White', 'Orange') 
       ); // Level 2 

Le contenu de ces tableaux ci-dessus changent fréquemment, et à certains endroits « couleurs » ou « tailles » peut être vide.

Quel est le moyen le plus efficace de grouper ces attributs, donc je peux voir (par exemple) tous les produits & Short, Black & Orange? Je ne suis pas aussi soucieux de calculer la quantité de chaque combinaison d'attributs que de créer le mécanisme de regroupement d'attributs.

Je voudrais finir avec une table comme ceci:

SHIRT SIZE SLEEVE SIZE SHIRT COLOR SLEEVE COLOR QTY 
Small   Short   Black   White   6 
Small   Short   Black   Orange   1 
Small   Short   Red   White   4 
Small   Short   Red   Orange   2 
Small   Long   Black   White   3 
Small   Long   Black   Orange   2 
... 
Large   Long   Red   Orange   5 

Répondre

1

Eh bien, réelle façon la plus efficace est de ne pas avoir tous ces « attribut produit » dans votre code d'application, mais d'avoir dans la base de données.

Ensuite, il ne s'agirait plus que de joindre vos tables dans une requête.

Je suis curieux, à quoi ressemble votre modèle de données maintenant? Comment est-ce que vous stockez réellement la taille/couleur/peu importe l'information actuellement?

+0

J'ai les tables de base de données suivantes: «Produits», «Attributs de produit» et «Options d'attribut de produit». Ces attributs ont été extraits de la base de données dans le tableau ci-dessus. –

+0

Oui, mais comment stockez-vous la relation entre un 'Product' et ses attributs respectifs? –

Questions connexes