I recently encountered a nice model on product types that I would like to share.
A product type can be understood as an concept of a product, much like the descriptions you might see in a catalogue. Examples like a Peugeot 206 Gentry which is a concept of a car. It is not equivalent to actual cars – it only describes a type of a car of which a lot of actual cars may exist.
Then the model:
In the left upper corner, we see the entity „Product Type“. This entity may contain a description such as the Peugeot 206 Gentry. Other examples may be the hard disk WD3000EXDB which stands for a type hard disk.
As we may have hundreds, may be thousands of product type, we may classify these product type into several classes. We may have the class „cars“ and a class „hard disks“.
Each of these classes may have (overlapping) sets of attributes that describe the product types. The product type class „hard disk“ may have attributes like price, storage amount, delivery term etc. Likewise a product type class may have attributes like price, number of seats. The attributes are listed in an entity „Product Type Attributes“. As we may have overlapping sets, an associative entity is added.
The „Product Type Attributes“ and „Product Type“ both identify the values. We then know the Peugeot 206 Gentry costs 20000 euro, whereas the WD3000EXDB costs 200 euros.