What is the correct way to store many-to-many data in Strapi?

I have many-to-many relationship between User and Card.
How do I store User-specific details about each card the user has?
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

  1. Components

  1. Relationship