Assuming that you are talking about "how to store an unknown number of items that are related to a particular product in a database" then the best way is definately to store the items in a separate table, with a foreign key reference to the ID of the product itself: it's how we do it for pretty much anything.
For example, take an invoice: You have a table which contains the "one off items":
ID
CustomerID - foreign key to Customers table
Date
Total
Then each item they order gets a separate line in a separate table:
ID
InvoiceID - foreign key to Invoices table
Quantity
ProductID - foreign key to the Products table
PerItemValue
You can then assemble an invoice for a particular company using SQL JOINs:
SELECT L.Quantity,
L.PerItemValue,
P.Description,
L.Quantity * L.PerItemValue AS LineValue
FROM Invoices I
JOIN InvoiceLines L ON L.InvoiceID = I.ID
JOIN Products P ON l.ProductID = P.ID
And you get a set of rows returned that look like this:
Quantity PerItemValue Description LineValue
6 19.99 Expensive plates 119.94
2 9.99 Saucepan 19.98
1 199.99 Small TV 199.99
That way, it doesn't matter how many attributes you associate with a product, or what attribute types they are.
I'd put the attribute types in another table as well, and add the appropriate foreign key to that as well.
Make sense?