I understand your concern over many tables, the following isn't I think great, but it may help you with your thoughts.
After your basic common fields, have a bunch of fields available to store the types of attributes that do not cover all types of products, with each attribute having 2 fields related to it.
One field would be a char field, and contain the 'name' of the attribute (eg 'Capacity', 'Speed', 'Resolution'.)
The second field would contain the data (eg 40gig, 56k, high)
The name of the fields would be (something like) attribname01, attribdata01. (and of course for more attributes attribname02, attribdata02; attribname03, attribdata03 etc)
This way, your database only needs to have the number of fields ( x2 ) of the most attributes for one product (say to attribname12, attribdata12) plus the comon fields for each product (price, name, model number)
for a hard drive, attribname01 would be 'Capacity'
for a modem, attribname01 would be 'Speed'
etc
If you would not be doing data evaluations across product types, this would help. (and I can't see why you would want to do evaluations across product types)
You would need a 'product type (or category)' field so that all products with the same product type would have the same attribnamexx information (eg 'Speed'), and record its own specific information in the attrindataxx field (eg 56k, 33k). Pete Bloomfield
Down Under