Enrollment database structure

Hi!

I am building a coaching platform on Bubble where users can book coaching programs with coaches.
My current structure is :

Users
[…]
Rôle : User, Coach, Admin
Coaching program (only filled for Coaches)

Coaching Program
[…]
Coach (User)
Session list

** Session**
[…]
Coaching program

I wonder what would be the best way to store the followup. Each user can enroll into many programs at a various stage of session. I want users be able to know which coaching program they have enrolled, which session is pending, and mark as complete a session even if it’s no the previous / next one.

I was thinking of creating inside User :
Enrolled coaching program
Coaching Program
Start Date

Pending coaching sessions
Session

Finished coaching session
Session

So if I need to see in an Enrolled Coaching Program which session is pending I just need to compare Coaching Program > Session with Pending Coaching Session or Finished Coaching session

Would you proceed a different way?

I am not sure that having deux lists pending and finished would be a good idea.

Should I have
Enrolled Programs
Coaching program
Finished session

So when I display the enrolled program to the user, while I get the Session list from the Coaching program, I compare with the Finished session list ?

Would you have a better way ?

I would not have multiple lists, I would have a single list with a status.

So a list of instances of programs with status and other data.

Thanks for your answer @NigelG
So you would mean

Coaching program

  • Title
  • Description
  • price
  • Enrolled users - list of users
  • Sessions - list of session
  • Creator
    […]

Session

  • Type - option set
  • Title
  • Description
  • Coaching program - unique thing
    […]

User

  • Role - option set (member, coach,admin)
  • Enrolled coaching programs - list of Enrolled

Enrolled Programs

  • Coaching program
  • Status
  • User
  • Start date
  • Discussion - list of conversation
  • Files - list of files
    […]

But how would you manage the status then ?

It can’t be : pending, finished because users need to know which sessions inside the program are finished or not. Like a courses : I’ve read the first modules.

And I can’t say status is a number (ex 3 to say the first two are finished) because since the enrolment, the coach might update the list of sessions which will be reflected to the pending enrolments. So I guess I need to say Session ID is finished.

That’s why I was thinking of having Finished sessions - List of sessions inside the list Enrolled programs.

So

Enrolled Programs

  • Coaching program
  • Finished Sessions
  • User
  • Start date
  • Discussion - list of conversation
  • Files - list of files
    […]

Would it make sense ?