Product category
Product group is the superclass for all products
That is to say that all products belong to a product group.
Product groups can contain other product groups
<foodstuffs>
- <produce>
- <tomatoes>
- Organic Sungrown Cherry Plum Tomato transported by airplane from spain
- </tomatoes>
- <tomatoes>
- </produce>
</foodstuffs>
and no, the above isn't really XML in reality it'll look something like <product_group name="tomatoes><product name="tomato" organic="true">.....</product></product_group>
Storage (syntax) for a product group should be designed so that a product group can be related to other product groups in multiple manners. This is neccessary so that we can build different data structures to reflect different relations between product groups. e.g. Product substitution and Production flow