How to create a JOIN table in strapi?

System Information
  • Strapi Version: 3.2.5
  • Operating System: Win10
  • Database: Strapi Default (Postgre in production)
  • Node Version: 14.8.0
  • NPM Version: 8.1.0
  • Yarn Version:

I have many-to-many relationship between User and Card.
How do I store User-specific details about each card the user has?
Example:
User: id: 1 {user: “John”, age: 24…}
Card: id: 1 {name: “Apple”, img: “URL”, color: “red”…}
UserCardDetails: id:1 { user: 1, card: 1, is_complete: true, is_favorite: false, progress: 5 …}

What is the best way to create this use-case in Strapi?
I have tried 3 ways:

  1. JSON attribute under User,
  2. Reusable Components under User,
  3. Relationship with UserCard ContentType

Which of these is the best approach? How do I set up the structure? Any ideas?

Attached are screenshots of the 3 aforementioned approaches.

  1. JSON
  2. Components
  3. Relationship