What is the "right way" to build a community-oriented comparison system in Drupal 7? My primary question is do I need to hand-roll the DB code for this or is there a way to do it with existing Drupal techniques? My secondary question is how would you structure this in Drupal?
The entities of my site are as follows.
User classes:
Administrators (me <=1)
Analysts (trusted community moderators <100)
Authenticated Users (untrusted community content creators <2000)
Anonymous site visitors can view all of the reviews (billions of people :)
Products:
product classes. (e.g. Cameras, Laptops, Mobile Phones, etc). There will be >500 product classes. Analysts can edit and manage product classes by adding product feature types, etc.
products (e.g. Nikon D7000, Canon EOS Rebel, etc) are an instance of a product class. Authenticated Users can add/edit products.
product features are the pre-defined set of features of a product class (e.g. Exposure Metering, Exposure Modes, White Balance, Max Shutter Speed, etc). These are administered by Analysts.
product feature types. Each product feature must be of a certain type like a star rating, text, price, number, url, etc.
My initial solution was to create a custom content-type for each product class, then use Drupal fields for the product features. My concern with this approach is that I don't know how to allow semi-trusted Analysts to create and manage their own product classes and product feature types without giving them administrator privileges. Also, I imagine having hundreds of product classes and so it feels weird to have a custom content-type for each * product class*.
I'm happy to do it the php-module way, or the pointy-clicky way. How would you approach this?