Note: this post is about an old version of Drupal: Drupal 7
A rather complex part of building e-commerce solutions is the aspect of “Product variations”. You should analyse your offer to prevent surprises.
Drupal Commerce offers this functionality:
Product attributes are the descriptors we use to define kinds of products. For example, we could describe a tshirt by the color and size. These attributes mean that in the real physical world your store may only carry one red shirt, but you have three sizes or three “variations.” Commerce software must deal with product variations in a flexible way.
Combine this with Commerce Fancy Attributes for the use of images and more advanced selection visualisations.