Branching off of this thread, what is the ideal way to store products in the database?

On a site I'm doing currently, I have a table 'products' and a table 'product_attributes' - attributes being things a user can choose before purchasing - size, color, style, etc. This setup works fine, but was built with only one attribute per product in mind, and doesn't allow the same attributes to be applied to more than one product.

I was discussing this in the other thread, and noticed that Magento (a php-based shopping cart) uses EAV tables to store their attributes. From previous experience and another poster, I know that's not an ideal solution. I'm wondering, though, what would be the 'best practice' way to store attributes for products, when each product may have any number of attributes, and each attribute many have any number of values?