Review/Rating System: Content type design

System Information
  • Strapi Version: 4.1.3
  • Operating System: Windows
  • Database: PostgreSQL
  • Node Version: 16.14.0
  • NPM Version: 8.5.0
  • Yarn Version: 1.22.15

Hi there!

I need some help structuring/designing what I want to do in Strapi. Basically, I have my Products in Strapi - they are collection types.
Now, each product should have reviews/ratings for different review categories added to them. For now, those are made only by admin users/editors from where you edit the product collection - not by visitors of the site (although I might add that later, but separately).

Now my idea was to have a review component with a Weight, Category and Rating field, added to the product collection. But then it gets more complicated. I want each Review Object/Component to have a Comparisons object, which would allow me to compare that specific review category with a review category from a different product.

Reasoning behind the comparison objects

(Reason: to increase the comparability between products. Just contrasting the pure review objects of each product is too subjective and not accurate, especially if they are reviewed by multiple people. That’s why I’d like to gradually introduce these comparison objects (green text in the picture below) to increase the accuracy of comparisons.)

TL;DR: Here is an example structure (green text = comparison objects):


Only issue with this example structure: The comparison objects would need to be duplicated in both product A and B.

How exactly would you implement it in Strapi? With Components or Collection types? Like, what’s the best practice here?