Product Catalogue — Products, Categories, Attributes

How are attribute values attached to a specific product?

An attribute is a reusable *definition*; its *value* for a given product is stored as a ProductAttributeValue linking that product to that attribute with the chosen value. So "Colour" is defined once, and each product records its own value (this phone is "Black," that case is "Clear"). On the product form you set the relevant attribute values, and they're saved against the product. This…

An attribute is a reusable *definition*; its *value* for a given product is stored as a ProductAttributeValue linking that product to that attribute with the chosen value. So "Colour" is defined once, and each product records its own value (this phone is "Black," that case is "Clear"). On the product form you set the relevant attribute values, and they're saved against the product. This separation — define once, value per product — is what makes attributes reusable across the catalogue and keeps the data consistent (every product's "Colour" refers to the same attribute, not a free-text re-spelling).