2009-09-08 3 views
2

Je travaille sur un panier et mon problème est, comment devrais-je concevoir la base de données pour la sélection de la taille des produits? T-shirts peuvent être "XL, L, M, S" etc. et les chaussures peuvent être "36,37,38,39 ... blabla" Dois-je faire une seule table de taille ou de nombreuses tables pour plusieurs types (T-shirt, chaussures, etc.)?Problème de structure de panier, sélection de taille etc

Merci à l'avance ...

Répondre

7
Table: size_selection 

Item_id numeric 
Item_size varchar 
Seq numeric 

ITEM_ID -> table article (dire id = 1 -> tshirt id = 2 -.>. Chaussures)

Donc, votre table serait

Item_ID Item_size Seq 
__________________________ 
    1   S   1 
    1   M   2 
    1   L   3 
    1   XL  4 
    2   36  1 
    2   37  2 
    2   38  3 
    2   39  4 

Ensuite, sur la page, juste obtenir vos valeurs comme déroulant

Select item_size from size_selection 
where item_id = :p_ID 
order by seq 

La syntaxe de suite peut varier selon votre goût.

+0

Renvoyé pour une réponse qui fonctionnerait. Beau travail, @TomatoSandwich, mais j'aurais deux tables différentes, shirtSize et pantSize. Juste mes 0,02 $. Cela est particulièrement vrai lorsque vous essayez de créer une classe "Size" ou une énumération et que vous l'utilisez comme propriété pour une classe Shirt, une classe Pant ou une classe Garment. – Rap

+0

Je ne sais pas pourquoi vous voudriez fendre des chemises et des pantalons, où il y a encore des chaussures, des chapeaux, etc. (probablement). Ma solution est juste une table générique de valeur de code d'article, avec un FK dans une table de type d'article. 2 tables, types d'éléments illimités. – glasnt

+0

Cela répond assez bien à son problème. Je voulais simplement ajouter que si vous avez besoin de deux pulldowns ou plus sur un élément (comme la taille et la couleur), vous pouvez étendre/généraliser un peu, appeler la table item_options et ajouter un champ pour quel attribut. alors vous avez item_id, attribut (couleur, taille, etc), valeur (grand, rose, etc), seq – JasonWoof

1

Je ne comprends pas très bien quel est votre raisonnement pour vouloir plusieurs tables. Peut-être que vous étiez accroché sur le fait que certaines tailles sont alpha et d'autres sont numériques.

Si c'est la raison alors oubliez tout de suite. Il n'y a aucune signification numérique utile pour différentes variantes comme celle-ci, elles devraient donc toutes être stockées en tant que varchar pour prendre en charge les caractères alphanumériques.

Si vous avez besoin de trier, mettez également un ordre de tri. Cela devrait être séparé. N'essayez pas de trier la taille de l'élément lui-même - en ce qui concerne votre application, ils sont tous des choix individuels et ce n'est pas impugnant qu'ils soient numériques.

Questions connexes