I understand that the entity type "Product" is used to group the variants together. In most of the cases, there is one to one relationship between products and variants.
Can we just create variants in the system without creating a parent product for it. I guess EPI Server data structure supports it. I just want to make sure that we don't hit any road block while building the website.
Yes, you can do that. The Variant is the important one, as that is the one you can actually buy. The product is usually used to maintain content that is shared across all the variants (like description etc.)
Additionally, the variant is the one you add to the cart, but in order to show information about it, it is common to load it's parent too (for the same reason as above).
If you have both Product+Variants and just Variants, how will you determine what to show in lists?
It is more of a practical issue, not a system constraint. You're free to use it as you like.
I second everything that Steve says, and I would go a little further.
If your Business Requirements result in a strict, universal 1-2-1 relationship between Product and Variation then I would heartily recommend that you don't model/create any Products and just stick with Entry Content Types based on SKU/Variation. It will simplify all sorts of things: scenarios, visitor journeys, promotion design, sitemaps, search solutions and so forth.
As soon as you can't guarantee that 1-2-1 relationship though, you really do need to use Products; perhaps only where they are required rather than everywhere, but you would need them. Therefore your plans would need to take them into account.
Similarly you need to pro-actively decide about the role that Packages and Bundles play in your solution, even if the ultimate decision is that they don't have a role this does need to be decided upopn as it can be intrusive to add them in later or to forget/overlook that they exist.
I would like to add it a bit.
Product-variants relations should be used when you have a product which has more than one variants. For example, you have a shirt (product), you can have multiple variants for each color and each size.
If your product has exactly one variant - in other words - it's unique on its own, you can use variant directly without any problems. EPiServer Commerce supports this flawlessly. The only thing need to consider is that does your product have variants - this can help to elimate the duplicated work later.
The sample catalog in EPiServer Commerce has a (big) category of wines, and it contains only variants.
Thanks for your input!
We will be supporting only vairants 99% of the time. So we are planning to desing our catalog import tool and website to support variants out of the box and make the support of the products a configuration.