# Database schema for availability slots

**URL:** <https://forums.knack.com/t/database-schema-for-availability-slots/12399>\
**Category:** Get Answers\
**Created:** [April 16, 2022, 8:27am UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399 "2022-04-16T08:27:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![myweb](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@myweb](https://forums.knack.com/u/myweb)\
**Post date:** [April 16, 2022, 8:27am UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399/1 "2022-04-16T08:27:07Z")

</div>

Hi everyone. I am really enjoying using [Knack.com](http://Knack.com), its a great tool!

I would like to build a simple booking form that shows available appointment slots.  
I want to offer 1 appointment every 15min during business hours. Same member of staff for all appointments.

I check and I can only find this post without any answer

> [@Appointment Schema](https://forums.knack.com/t/appointment-schema/11106):
>
> Hi Guys Can someone point me in the direction of a good place to start for an appointment schema pls? Nothing out of the ordinary required here - 5 slots per day with the same times per slot every day. Users can pick a day and one of the slots. Then I need to determine and display available slots per day, etc. Thank you!

Also, I found this help page that says:  
“We’ll also be continually improving the calendar with some great features coming soon:”

- Scheduling by available slots"  
[Knack Blog - Insight on Web Apps & Online Databases](https://www.knack.com/blog/custom-online-calendar-web-apps)

Any advice would be appreciated. If you have a sample app with the setup in place, that would be even better. thanks

---

<div class="post-metadata">

**Author:** ![CarlHolmes](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.knack.com/carlholmes/32/2814_2.png) [@CarlHolmes](https://forums.knack.com/u/CarlHolmes)\
**Post date:** [April 16, 2022, 9:36pm UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399/2 "2022-04-16T21:36:59Z")

</div>

Welcome to the forum. Good to hear that you’re enjoying Knack. 😊

The post by Brandon (Founder and CEO of Knack) about “continually improving the calendar…” was made 10 years ago and all these updates were added a long time ago.

The calendar is a very useful feature, however, it’s not necessarily ideal for bookings. There is no conflict management feature, so it’s possible to make multiple bookings for the same time slot.

I’m sure that with some JavaScript you could check for double bookings but this would require custom code. I’m not a coder.

The calendar does not offer you the ability to book (manage) slots, rather it simply displays records that have been added to a table. Each time a record is added it will be shown on the calendar.

If you want “slots” that a person can choose and then “book” you’ll need existing records in an object for them to choose from and allocate.

I have previously created a hot desk booking app for a client using Integromat (Make) to create booking slots for each day, on a rolling two week basis.

For your use case it would require the creation of each 15 min time slot, 32 line items for an 8 hour day. This could be easily achieved with Make creating the line items during the out of hours period.

Once the slot has been chosen by the user, it could be removed from the calendar view (filtered at the data source) leaving only the variable slots displayed. Or, it could simply change colour and we hide the link to book an allocated slot.

If the users are logged into Knack you can have a section for “my bookings” should they need to cancel a booking and release it back onto the calendar as an available slot. This couldn’t be achieved if the calendar is an open webpage with no login. You’d have to rely on a simple email confirmation and the user emailing back if they need to cancel.

Once the date has passed, I’d use another scenario to delete all unused and now non required slots. This will keep your record count down.

I appreciate this is may not be the simple or straightforward answer you were looking for.

I can offer chargeable 1-on-1 tuition to help if desired.

Getting Started with Integromat

[![](https://us1.discourse-cdn.com/flex020/uploads/knack/original/2X/7/7b42025a28c5746592c2076699567ae81826a2a5.jpeg "Getting Started with Integromat") ](https://www.youtube.com/watch?v=p1iv0WkxGy4)

---

<div class="post-metadata">

**Author:** ![myweb](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@myweb](https://forums.knack.com/u/myweb)\
**Post date:** [April 17, 2022, 12:09pm UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399/3 "2022-04-17T12:09:50Z")

</div>

Thanks for this Carl, much appreciated. Infact I already came to the same conclusion and have already created the workflow you mention.

---

<div class="post-metadata">

**Author:** ![CarlHolmes](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.knack.com/carlholmes/32/2814_2.png) [@CarlHolmes](https://forums.knack.com/u/CarlHolmes)\
**Post date:** [April 18, 2022, 11:40am UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399/4 "2022-04-18T11:40:43Z")

</div>

Thanks @myweb - can you mark this as solved please 👍

---

<div class="post-metadata">

**Author:** ![assistenzaclienti](https://avatars.discourse-cdn.com/v4/letter/a/2bfe46/32.png) [@assistenzaclienti](https://forums.knack.com/u/assistenzaclienti)\
**Post date:** [August 27, 2024, 11:33pm UTC](https://forums.knack.com/t/database-schema-for-availability-slots/12399/5 "2024-08-27T23:33:25Z")

</div>

Hi CarlHolmes, I have the same need.  
Can you help us to setup the solution?
