Designing golf pro scheduling into POS

Database Administrators Asked by Jarrette on October 28, 2021

I have an existing Point of Sale app that is used for golf courses. I have a new feature request from one of my courses that would allow users of my POS to sell golf lessons to customers. Here are some high level entities:

  • Instructors – identified by email
  • InstructorAvailabilitys – contains title and reference to Instructor, possibly a start and end date?
  • InstructorAvailabilityDays – each day of the week the instructor is available, also need a way to have 1 to many start and end times in each day
  • LessonslessonTypeID (private, clinic, etc.), MaxStudents
  • LessonTypes
  • GolfCourseCustomers – existing table used to identify customers but will double as "students" in this case
  • LessonCustomers – connects lessons with golf course customers
  • GolfCourseProducts – I’m guessing I’ll just add a LessonID to this table?
  • OrderItems – has reference to GolfCourseProductID, this is what gets added to the cart when ringing up a transaction and holds the final price charged for the item

So my biggest point of confusion is as follows.


  • My name is John and I’m a golf pro. I’m available Mon – Thu from 8am to 3pm, I charge $100 for private lessons, I charge $80 for on course lessons.

  • My name is Allison and I’m a golf pro. I’m available Mon – Sat from 8am to 11am and then from 2pm – 5pm, I charge $80 for private lessons.

  • My name is Tom and I work in a pro shop. I sell lessons for Allison and/or John and I need a way to ring these up as products including choosing a lesson type and an instructor.


  • days off. How do I structure exceptions to instructor availability?

  • multiple availabilites per instructor, how do I render these in the calendar? Should I limit availability to 1 at any given date? In other words should InstructoryAvailabilys have a start and end date and should I force users to not overlap them on the client side?

Lessons can be any length of time, different lessons take different amounts of time (on course is longer than private). I think we give the instructor the option of only allowing "top of the hour" bookings. Any lesson type can take place in for any time range.

I’m open to any and all advice on database design here that won’t restrict my options. This is my diagram so far:

enter image description here

Add your own answers!

Ask a Question

Get help from others!

© 2024 All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP