- Нереляционные СУБД позволили бы вам это делать, но взамен вам придётся заплатить невозможностью использовать внешние ключи, контролем целостности и прочими возможностями реляционных СУБД.
- Постреляционные СУБД (OrientDB, скажем) умеют такое и имеют контроль целостности, но с ними ещё разбираться надо. Сообщество не так уж велико.
- На мой взгляд оптимальное на данный момент решение - использовать PostgreSQL, все разновидности товаров вести в одной таблице, а для специализированных атрибутов, специфичных для категорий, создать один столбец data типа HStore, который хранит массив вида ключ-значение.